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

 

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