Docker基础用法


一、官方文档安装Docker CE:
    sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
    # 确认删除Docker相关
    
    sudo yum install -y yum-utils \
    device-mapper-persistent-data \
    lvm2
    #更新相关工具
    
    sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
    #增加docker仓库
        
    sudo yum install docker-ce docker-ce-cli containerd.io
    #安装docker-ce                          

二、使用镜像:
		1.搜索镜像
			docker search [镜像名]
		比如:
			docker search ubuntu 	

		2.下载镜像:
			docker pull [选项] [Docker Registry地址]<仓库名>:<标签>
			
			#不给出	Docker Registry地址的话就是使用Docker官方的Docker Hub
	 		不给出用户名使用默认的library,也就是官方镜像


###配置国内镜像加速源(使用DaoCloud镜像加速器):
			curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
			#详细文档 https://www.daocloud.io/mirror。只用于虚拟机,物理机。在云上使用有各自云上的镜像加速器,详细访问所属云的文档

		3.查看镜像
			docker images
				额外概念:虚悬镜像(dangling image),中间层镜像		 -a选项显示所有镜像


		 列出部分镜像:
		 	docker images ubuntu  	#根据镜像名列出镜像,也可使用仓库名加标签
		 	
		 	使用过滤器参数 --filter 或简写 -f
		 	docker images -f since=ubuntu  	#列出在Ubuntu之后建立的镜像。before=ubuntu可以看到Ubuntu之前建立的镜像
		 					 label=			#使用标签列出镜像	
		 	
		 	使用特定格式显示
		 		docker images -q		#仅显示镜像的ID,配合--filter寻找无用镜像ID方便删除
		 		docker images --format "{{.ID}}:{{.Repository}}"
		 		c582c1438f27: fedora
				cd6d8154f1e1: ubuntu
			#引号里的string用Go的模板语法


		4.运行容器(比喻:镜像是python里的类,容器是pythonl里的实例):
			docker run 
		比如:
			docker run -it --rm ubuntu:14.04 [command]
				-it    交互操作,发起终端
			  	--rm   容器退出后将其删除。因为一般容器退出并不会删除除非手动删除   

			docker run -d -p 91:80 nginx 
				-d    后台运行
				-p    映射端口
					四种映射方式:
					 ip:hostPort:containerPort
					 ip:containerPort
					 hostPort:containerPort
					 containerPort
				进入容器nginx的linux
				1、docker  exec -it [ContainerID] /bin/bash	
					
				2、查看容器的PID:	
					docker inspect --format "{{.State.Pid}}" mynginx

		5.停止容器
			docker stop [ContainerID]
		6.删除容器
			docker rm [ContainerID]
		
		停止所有容器:docker stop $(docker ps -a -q)
		删除所有容器:docker rm $(docker ps -a -q)

三、docker数据管理:
		1、数据卷		
			-v /data src:dst
				$sudo docker run -it --name volume-test1 -h lee -v /data centos
				切换到另一个ssh上 $sudo docker inspect --format "{{.Config.Volumes}}" volume-test1可以查看data位置(查看为空
				map[/data:{}])则使用$sudo docker inspect volume-test1 | grep Mounts -A 10

				指定映射目录(文件):
				docker run -it --name volume-test2 -h volume-test2 -v /opt:/opt centos(-v参数和-p格式差不多)
				
		2.数据卷容器(将容器目录挂载到另一个容器)
			--volumes-from
				$sudo docker run -it --name volume-test3 --volume-from volume-test1 centos



####在Docker运行容器后,有时我们需要再次进入容器进行操作时,那就有以下几种方式了:
	
	以下方法需要知道容器ID,首先需要
	
		docker ps #在结果中找到你需要进入的容器的ID
		1.使用docker attach进入容器
		
		docker attach container_id        #进入该id的容器
		2.使用docker exec进入容器(这个选项是在在docker1.3版本之后加入的)
		
		docker exec -it container_id /bin/bash       #进入该id的容器
		3.使用nsenter命令进入容器,需要先安装nsenter()
		
		4.SSH进入容器(不推荐)
	
	   为什么不推荐使用ssh进入容器呢?



三、搭建服务
	docker搭建WordPress:
docker run --name db --env MYSQL_ROOT_PASSWORD='123456' -d mariadb
docker run --name mywordpress --link db:mysql -p 8080:80 -d wordpress


	docker搭建gitlab:
		
		1.安装postgresql:
docker run --name gitlab-postgresql -d \
--env 'DB_NAME=gitlabhq_production' \
--env 'DB_USER=gitlab' --env 'DB_PASS=password' \
sameersbn/postgresql:9.4-12
		
		

		2.安装redis:
docker run --name gitlab-redis -d sameersbn/redis:latest
		

		3.安装gitlab:
docker run --name gitlab -d \
--link gitlab-postgresql:postgresql --link gitlab-redis:redisio \
--publish 10022:22 --publish 10080:80 \
--env 'GITLAB_PORT=10080' --env 'GITLAB_SSH_PORT=10022' \
--env 'GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string' \
sameersbn/gitlab:8.4.4

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章