01.安裝Docker
curl -sSL https://get.docker.com/ | sh
centos6 epel
yum install -y docker-io
centos 7
yum install -y docker-engine
service docker start
service docker stop
service docker restart
02.查看Docker信息
docker info
文件位置 /var/lib/docker
03.查找鏡像
官方網站查找 https://hub.docker.com/
docker search centos(鏡像名稱)
--automated 自動化選項
--no-trunc 顯示完全ID
-s 最低星級 25個結果
04.查看3星級的鏡像
docker search -s 3 centos
05.拉取鏡像
docker pull <鏡像名稱>:<標籤>
docker pull centos
-a 所有鏡像
docker daemon啓動參數 "--insecure-registry=0.0.0.0/0"
06.使用自定義鏡像站點修改
/etc/default/docker
DOCKER_OPTS="--REGISTRY-MIRROR=https://www.daocloud.io"
docker daemon啓動參數 "--insecure-registry=0.0.0.0/0"
07.列出鏡像
docker images
-a 顯示所有鏡像
-f 過濾條件
-no-trunc 顯示完全ID
-q 唯一ID
08.使用run創建容器
docker run <選項><鏡像名稱><要運行的文件>
docker run -dti -p 80:80 -v /root/data:/data hello:1.0 --name hello-nginx
docker run -d -p 8000:8000 --restart=always --name ngng -v /data/registry:/var/lib/registry registry:2
後臺運行容器 容器端口:宿主機端口 容器異常重新啓動 啓動容器名稱 位置映射、宿主機位置:容器位置 鏡像名稱或者ID
-d 後臺運行
-i(interactive)、-t(Pseudo-tty)運行Bash shell中進行輸入輸出
--name 指定容器名稱,若不指定則自動生成
-p 主機端口與容器端口連接,並暴露到外部
-v 主機/root/data目錄連接到容器的/data目錄
09.查看容器列表
docker ps
-a 顯示所有的容器
10.使用start命令啓動容器
docker start <容器名稱> 或 容器ID
docker start hello
11.重啓容器
docker restart <容器名稱> 或 容器ID
docker restart hello
12.使用attach命令連接容器
docker attach <容器名稱> 或 容器ID
docker attach hello(NAMES)
注意:
在Bash shell中輸入 Ctrl + D 或者 exit,表示停止並退出docker容器。
若依次輸入Ctrl + P、Ctrl + Q,則不會終止容器而只是推出。
13.使用exec命令從外部運行容器內的命令
docker exec <容器名稱><命令><形式參數>
docker exec -ti 容器ID
docker exec registry ip add
14.停止容器
docker stop <容器名稱> 或 容器ID
docker ps
docker stop hello
15.刪除容器
docker rm <容器名稱> 或 容器ID
docker rm hello
docker ps -a
16.刪除鏡像
docker rmi <鏡像名稱>:<標籤> 或 容器ID
docker rmi hello
-f 強制刪除
--no-trunc 刪除沒有標籤的
# 刪除所有鏡像
docker rmi $(docker images -qa)
17.使用build命令創建鏡像
docker build <選項><Dockerfile路徑>
docker build --tag hello:1.0
18.使用cp複製文件
docker cp <容器名稱>:<路徑> <主機路徑>
docker cp 2e52e426f849:/etc/hosts ./
docker cp fervent_lumiere:/etc/host.conf /opt/
19.使用history命令查看鏡像歷史
docker history <鏡像名稱>:<標籤> 或 容器ID
docker history hello:1.0
docker history tobegit3hub/seagull:latest
20.從容器的修改中創建鏡像 commit
docker commit <選項> <容器名稱> <鏡像名稱>:<標籤>
docker commit -a "chengfeng <[email protected]>" -m "add hello.txt" fervent_lumiere tobegit3hub/seagull:latest
21.使用diff命令檢查容器文件的修改
docker diff <容器名稱> 或 容器ID
docker diff hello-nginx
A 爲添加的文件
C 爲修改的文件
D 爲刪除的文件
22.命令查看inspect詳細信息
docker inspect <鏡像或者容器名稱>
docker inspect hello-nginx
23.拉取鏡像到本地
docker tag <鏡像名稱>:<標籤> <Docker registry URL>/<鏡像名稱>:<標籤>
docker tag hello:1.0 localhost:5000/hello:1.0
docker pull registry:latest
docker run -d -p 5000:5000 --name hello-registry -v /tmp/registry:/tmp/registry registry
運行後,鏡像文件存儲到主機的/tmp/registry目錄。
24.推送鏡像
docker push <Docker registry URL>/<鏡像名稱>:<標籤>
docker push localhost:5000/hello:1.0
25.刪除標籤
docker rmi <Docker registry URL>/<鏡像名稱>:<標籤>
docker rmi dev.dockcloud.cn/busybox:0.1
26.查看日誌
docker logs <容器名稱或ID>
27.查看運行狀態
docker stats <容器名稱或ID>
28.查看top
docker top <容器名稱或ID>
29.查看映射端口
docker port <容器名稱或ID>
30.更新容器信息
docker update <容器名稱或ID>
31.保存容器成tar文件
docker export <容器名稱或ID>
32.將tar文件導入到鏡像列表
docker import <容器名稱或ID>
33.把容器保存成鏡像
docker commit 運行中docker ID
-a 添加作者
-m 描述
34.將鏡像保存成tar文件
docker save 鏡像 ID
# 保存鏡像id
docker tag 56d3dc08212d registry.chinadaas.com/pubilc/elasticsearch:6.3.0
# 保存標籤
docker save -o elastic.tar.gz registry.chinadaas.com/pubilc/elasticsearch:6.3.0
35.加載tar鏡像文件
docker load 鏡像 ID
36.外掛卷 volumes
docker run -dti -v /web-data:/tmp:ro --name data-container app
docker run -dti --volumes-from data-container --name web-container apps
docker run -dti --volumes-from data-container --name web2-container apps
# -v 宿主機目錄:容器目錄
37.容器卷管理
容器卷 主機卷
docker鏡像
通過docker build -t . 執行 dockerfile文件製作
FROM centos:7
RUN yum install -y epel-release && \
yum install -y nginx && \
yum clean all
EXPOSE 80 443
CMD ["nginx", "-g", "daemon off;"]
容器卷
FROM centos:7
RUN yum install -y epel-release && \
yum install -y nginx && \
yum clean all
EXPOSE 80 443
VOLUME ["/usr/share/nginx/html"]
CMD ["nginx", "-g", "daemon off;"]
刪除帶容器卷的容器
docker rm -f -v 容器ID
38.一次性刪除所有的容器
docker rm $(docker ps -q -a)
39.一次性刪除所有的鏡像
docker rmi $(docker images -q)
40.刪除停止的容器
docker rm $(docker ps -a -q -f status=exited)
41.刪除沒有標籤的鏡像
docker rmi -f $(docker images |grep "<none>" | awk "{print \$3}")
42.配置docker-enter管理docker容器
在環境變量內添加
cat >> /root/.bashrc << EOF
# set docker-enter
alias docker-pid="sudo docker inspect --format '{{.State.Pid}}'"
alias docker-ip="sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}'"
function docker-enter() {
if cpid=`docker-pid $1`;then
sudo nsenter --target $cpid --mount --uts --ipc --net --pid
fi
}
EOF
source /root/.bashrc
43.主機卷
docker run -dti -p 80:80 --name app -v /web-data:/tmp app
docker run -dit -p 8080:80 --name apps -v /web-data:/tmp apps
44.備份數據
docker run --rm --volumes-from dbdata -v $(pwd):/backup centos tar cvf /backup/backup.tar /dbdata
45.數據恢復
docker run --rm --volumes-from dbdata2 -v $(pwd):/backup centos bash -c "cd /dbdata && tar xvf /backup/backup.tar --strip 1"
46.container-none網絡模式
docker run -dit --name busybox1 busybox:latest
docker run -dti --name busybox2 --net=container:busybox1 busybox sh
47. 連接容器
docker run -dti --name db mongo
docker run -dit --name web -p 80:80 --link db:db nginx