1.新建並啟動容器
docker run [option] images [command][arg] #根據鏡像新建容器並運行。如果本地沒有鏡像則從docker hub上拉取。
--name 為容器指定名稱。
-d 后台運行容器,並返回容器id
-i 交互模式運行容器,通常與 -t同時用
-t 為容器分配偽輸入終端。
-P 隨機端口映射
-p 指定端口映射,有以下四種格式
ip:hostport:ContainerPort
ip::containerPort
HostPort:ContainerPort
ContainerPort
docker run centos #創建/運行/退出容器
docker run -t centos #創建容器,並進入偽終端,但不能操作。ctrl+c 退出,容器不退出。
docker run -it centos
docker run -it --name mycentos centos
docker run -d centos #以后台進程方式創建容器並運行,但因為沒有可交互的前台進程,所以又被立刻終止。故docker ps 看不到。
[root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE redis latest a55fbf438dfd 8 days ago 95MB mysql latest 7bb2586065cd 8 days ago 477MB nginx latest 2bcb04bdb83f 8 days ago 109MB centos latest 9f38484d220f 2 weeks ago 202MB hello-world latest fce289e99eb9 3 months ago 1.84kB docker run -it 9f38484d220f #啟動交互式容器 [root@8e0ffee781f1 /]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 02:23 pts/0 00:00:00 /bin/bash root 16 1 0 02:23 pts/0 00:00:00 ps -ef [root@8e0ffee781f1 /]# exit exit [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8e0ffee781f1 9f38484d220f "/bin/bash" 4 minutes ago Exited (0) 3 minutes ago pensive_lumiere 3af63c5c69c6 hello-world "/hello" 42 hours ago Exited (0) 42 hours ago pensive_dubinsky [root@localhost ~]# docker rename 8e0ffee781f1 mycentos [root@localhost ~]# docker start mycentos mycentos [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8e0ffee781f1 9f38484d220f "/bin/bash" 40 minutes ago Up 6 seconds mycentos [root@localhost ~]# docker stats mycentos CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 8e0ffee781f1 mycentos 0.00% 380KiB / 991.2MiB 0.04% 656B / 0B 0B / 0B 1 [root@localhost ~]# docker top mycentos UID PID PPID C STIME TTY TIME CMD root 4675 4659 0 10:44 pts/0 00:00:00 /bin/bash [root@localhost ~]# docker attach mycentos 不關容器,安全退出: ctrl +p ctrl+q [root@localhost ~]# docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8e0ffee781f1 9f38484d220f "/bin/bash" 3 hours ago Up 2 hours mycentos [root@localhost ~]# docker images centos REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 9f38484d220f 2 weeks ago 202MB [root@localhost ~]# docker run -it --name mycentos01 centos #重新打開一個容器,並命名為mycentos01 [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ed1315df6320 centos "/bin/bash" About a minute ago Up About a minute mycentos01 8e0ffee781f1 9f38484d220f "/bin/bash" 3 hours ago Up 2 hours mycentos
2.列出容器
docker ps -a 顯示當前或曾經打開的容器
docker ps -l 顯示上一次運行的容器
docker ps -n 3 顯示上3次運行的容器
docker ps -ql 只顯示上一次運行的容器ID
3.退出容器
exit #退出並關閉容器
ctrl+p,crl+q #退出但不關閉容器
4.停止容器
docker stop 容器 ID或name
docker stop -t n 容器 ID或name # Seconds to wait for stop before killing it (default 10) 殺掉容器前等待多少秒(默認10s)
直接關閉
docker kill 容器 ID或name
[root@localhost ~]# docker stop mycentos mycentos01 #同時停止多個容器 mycentos mycentos01 [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4.啟動容器
docker start 容器 ID或name
docker restart 容器 ID或name
[root@localhost ~]# docker start mycentos mycentos01 mycentos mycentos01 [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ed1315df6320 centos "/bin/bash" 9 minutes ago Up 36 seconds mycentos01 8e0ffee781f1 9f38484d220f "/bin/bash" 3 hours ago Up 36 seconds mycentos
5.重啟容器
docker restart 容器 ID或name
6.刪除停止運行的容器
docker rm 容器 ID或name
docker rm -f 強制刪除容器,即使在運行
docker rm -f $(docker ps -qa) # 刪除全部容器
docker ps -qa | xargs docker rm # 刪除全部已停止容器
docker rmi 刪除鏡像
[root@localhost ~]# docker ps -n2 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ed1315df6320 centos "/bin/bash" 23 minutes ago Exited (137) 7 minutes ago mycentos01 8e0ffee781f1 9f38484d220f "/bin/bash" 3 hours ago Exited (137) 8 minutes ago mycentos [root@localhost ~]# docker rm mycentos01 mycentos01 [root@localhost ~]# docker ps -n2 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8e0ffee781f1 9f38484d220f "/bin/bash" 3 hours ago Exited (137) 9 minutes ago mycentos 3af63c5c69c6 hello-world "/hello" 45 hours ago Exited (0) 45 hours ago pensive_dubinsky
7.查看所有容器的實時資源占用情況
docker stats
8.查看容器日志
docker logs -f -t --tail 10 容器 ID或name
-f 持續刷新最新日志
-t 顯示時間戳
--tail 顯示最后幾行
[root@localhost ~]# docker run -d --name mycentos1 centos ba18b348bd9857bde9b25a62d848d6239c1c7c0de302a8bc279185a758efd861 [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@localhost ~]# docker run -d --name mycentos2 centos /bin/bash -c "while true;do echo Hello World;sleep 3;done" 21494ef841e27c69877afaf1a0be5ae2bb7d32d6862eb7bfa1e6eb237f04efa3 [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 21494ef841e2 centos "/bin/bash -c 'while…" 2 seconds ago Up 2 seconds mycentos2 [root@localhost ~]# docker logs -f -t --tail 5 21494ef841e2 2019-04-04T07:37:43.721260403Z Hello World 2019-04-04T07:37:46.721904929Z Hello World 2019-04-04T07:37:49.723204790Z Hello World 2019-04-04T07:37:52.724042843Z Hello World 2019-04-04T07:37:55.725116649Z Hello World ...
9.查看容器內進程
docker top 容器 ID或name
[root@localhost ~]# docker run -d centos /bin/bash -c "while true;do echo Nihao;sleep 2 ;done" 4768a70886fcb74cdf00cb19d142fb503a18d2390406dc31ad533d697b423f46 [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4768a70886fc centos "/bin/bash -c 'while…" 3 seconds ago Up 2 seconds affectionate_cori [root@localhost ~]# docker top 4768a70886fc UID PID PPID C STIME TTY TIME CMD root 9379 9364 0 15:48 ? 00:00:00 /bin/bash -c while true;do echo Nihao;sleep 2 ;done root 9427 9379 0 15:48 ? 00:00:00 sleep 2
10.查看容器細節
docker inspect 容器 ID或name
[root@localhost ~]# docker inspect 4768a70886fc [ { "Id": "4768a70886fcb74cdf00cb19d142fb503a18d2390406dc31ad533d697b423f46", "Created": "2019-04-04T07:48:20.460764642Z", "Path": "/bin/bash", "Args": [ "-c", "while true;do echo Nihao;sleep 2 ;done" ], "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, ....
11.進入容器
docker attach 容器 ID或name
docker exec -t -w -u -e 容器 ID或name 命令 # 功能更強大,也能實現登陸容器內部
-d, --detach Detached mode: run command in the background
-e, --env list Set environment variables
-i, --interactive Keep STDIN open even if not attached
-t, --tty Allocate a pseudo-TTY
-u, --user string Username or UID (format: <name|uid>[:<group|gid>])
-w, --workdir string Working directory inside the container
[root@localhost ~]# docker exec -t -w /tmp -uroot -e LANG=en 4768a70886fc ls ks-script-eC059Y yum.log [root@localhost ~]# docker exec 4768a70886fc ls /tmp ks-script-eC059Y yum.log [root@localhost ~]# docker exec -it 4768a70886fc ls /tmp ks-script-eC059Y yum.log [root@localhost ~]# docker exec -it 4768a70886fc /bin/bash [root@4768a70886fc /]# ls anaconda-post.log bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
12. docker cp
Copy files/folders between a container and the local filesystem 在本地系統和容器間copy文件或文件夾
[root@localhost ~]# docker cp anaconda-ks.cfg 4768a70886fc:/home [root@localhost ~]# docker exec 4768a70886fc ls /home anaconda-ks.cfg [root@localhost ~]# docker exec -it 4768a70886fc ls /tmp ks-script-eC059Y yum.log [root@localhost ~]# docker cp 4768a70886fc:/tmp/yum.log /tmp [root@localhost ~]# ls -l /tmp 總用量 8 -rw-------. 1 root root 0 3月 6 01:34 yum.log
docker run -d /bin/bash -c 的注意點
重啟docker 后,會繼續執行創建docker 時指定的腳本。
相當於該容器運行的是 鏡像+shell 的組合模板。
docker attach 登陸容器后,如果command 命令是前台進程就會一直執行,而不能做其他操作。
