一、官方文檔安裝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