docker 命令(待完善)
文章目錄
1、docker run
新建並執行容器
docker run -it centos
: 執行一個 centos 容器
[[email protected]st java]# docker run -it 75835a67d134
[ [email protected] /]# cd /
[[email protected] /]# ls
anaconda-post.log bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[[email protected] /]# pwd
/
[[email protected] /]#
開啟一個新的終端,檢視 docker中執行的容器
[[email protected] java]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6d69ff2cbd03 75835a67d134 "/bin/bash" 26 seconds ago Up 25 seconds dreamy_chandrasekhar
[ [email protected] java]#
1.1、--name 別名
給容器起別名
docker run -it --name mycentos124 centos
: 執行一個 centos 容器,並通過--name
引數指定一個別名為mycentos111
[[email protected] java]# docker run -it --name mycentos111 75835a67d134
[[email protected] /]# ls
anaconda-post.log bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[[email protected] /]#
docker ps
命令檢視正在執行的容器,最後一列name
為剛才指定的別名
[[email protected] java]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
129ff84a96b4 75835a67d134 "/bin/bash" 18 seconds ago Up 17 seconds mycentos111
[[email protected] java]#
2、docker ps
列出當前docker中 正在執行
的 容器
docker ps
:列出當前docker中 正在執行
的 容器
docker ps
:
[[email protected] java]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7ba0aaaccee9 75835a67d134 "/bin/bash" 11 seconds ago Up 9 seconds pensive_hypatia
2.1、docker ps [option]
:
-a
: 列出當前所有正在執行的容器 + 歷史上執行過的容器
-l
: 顯示 上一次執行過的容器
-n
: 顯示 上 n 次執行過的容器
-q
: 靜默模式,只顯示容器編號
--no-trunc
: 不截斷輸出
docker ps -a
:(列出當前所有正在執行的容器 + 歷史上執行過的容器)
[[email protected] java]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7ba0aaaccee9 75835a67d134 "/bin/bash" 10 minutes ago Exited (0) 7 minutes ago pensive_hypatia
b25d05ece250 centos "/bin/sh -c 'while t…" 3 days ago Exited (255) 15 minutes ago priceless_morse
d4cca0323327 centos "/bin/bash" 3 days ago Exited (0) 3 days ago determined_meninsky
6f0d900f3a0e 75835a67d134 "/bin/bash" 3 days ago Exited (137) 3 days ago mycentos
d38621653e1b 75835a67d134 "/bin/bash" 3 days ago Exited (137) 3 days ago lucid_shtern
8d177f15646c 4ab4c602aa5e "/hello" 3 days ago Exited (0) 3 days ago dreamy_hopper
678219b66f73 4ab4c602aa5e "/hello" 3 days ago Exited (0) 3 days ago suspicious_yonath
docker ps -l
: (顯示 上一次執行過的容器)
[[email protected] java]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7ba0aaaccee9 75835a67d134 "/bin/bash" 10 minutes ago Exited (0) 7 minutes ago pensive_hypatia
docker ps -lq
: (顯示 上一次執行過的容器的 容器id)
[[email protected] java]# docker ps -lq
7ba0aaaccee9
docker ps -aq
: (列出當前所有正在執行的容器 + 歷史上執行過的容器的 容器id)
[[email protected] java]# docker ps -aq
7ba0aaaccee9
b25d05ece250
d4cca0323327
6f0d900f3a0e
d38621653e1b
8d177f15646c
678219b66f73
3、docker start
啟動容器(已停止執行的容器)
[[email protected] java]# docker ps -l # 檢視上一次執行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
129ff84a96b4 75835a67d134 "/bin/bash" 20 minutes ago Exited (0) 23 seconds ago mycentos111
[[email protected] java]#
[[email protected] java]# docker start 129ff84a96b4 #重新啟動容器,129ff84a96b4是容器的id
129ff84a96b4
[[email protected] java]#
4、docker run
與 docker start
的區別
相同點:
都能啟動容器。
不同點:
docker run
:啟動的是映象,通過映象建立容器,並啟動。
docker start
:啟動的是歷史的容器;
docker run
只在第一次執行容器時,需要通過 映象 建立
容器。以後再次啟動這個容器時,只需要使用命令 docker start
即可。
docker run
相當於執行了兩步操作:
- 1.將映象放入容器中(docker create);
- 2.然後將容器啟動,使之變成執行時容器(docker start)。
docker start
:
docker start
的作用是,重新啟動已存在的容器。
使用這個命令,我們必須事先知道這個容器的ID,可以使用docker ps
的命令找到這個容器的資訊,然後 使用 docker start
命令啟動容器。
5、 docker restart
重啟容器(正在執行的容器)
[[email protected] java]# docker ps # 檢視正在執行的容器,STATUS是7分鐘
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
129ff84a96b4 75835a67d134 "/bin/bash" 28 minutes ago Up 7 minutes mycentos111
[[email protected] java]#
[[email protected] java]# docker restart 129ff84a96b4 # 重啟容器
129ff84a96b4 # 重啟完畢後,返回一個容器id
[[email protected] java]#
[[email protected] java]# docker ps #檢視正在執行的容器,STATUS是4秒鐘
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
129ff84a96b4 75835a67d134 "/bin/bash" 29 minutes ago Up 4 seconds mycentos111
[[email protected] java]#
6、docker log 容器id
檢視容器日誌
引數說明:
-t
: 加入時間戳
-f
: 實時打印出最新的日誌
--tail
: 顯示最後多少條
先執行一段程式
[[email protected] java]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[[email protected] java]# docker run -d centos /bin/sh -c "while true;do echo hello zzyy;sleep 2;done"
2db1ff5cc3a18cc869e931de7109a34a5fd02a26df610cc1fca12e06e00a96b4
[[email protected] java]#
[[email protected] java]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2db1ff5cc3a1 centos "/bin/sh -c 'while t…" 15 seconds ago Up 14 seconds elastic_bhaskara
[[email protected] java]#
docker logs 2db1ff5cc3a1
:一次性顯示所有的日誌
[[email protected] java]# docker logs 2db1ff5cc3a1
hello zzyy
hello zzyy
hello zzyy
hello zzyy
hello zzyy
hello zzyy
hello zzyy
hello zzyy
docker logs -t --tail 5
一次性顯示最新的5條日誌,並加上時間戳
[[email protected] java]# docker logs -t --tail 5 2db1ff5cc3a1
2018-11-08T09:47:00.808550916Z hello zzyy
2018-11-08T09:47:02.812877422Z hello zzyy
2018-11-08T09:47:04.816929773Z hello zzyy
2018-11-08T09:47:06.821516115Z hello zzyy
2018-11-08T09:47:08.825211232Z hello zzyy
docker logs -t -f --tail 5
:剛開始顯示出最新5條日誌,並實時動態打印出最新的日誌
[[email protected] java]# docker logs -t -f --tail 5 2db1ff5cc3a1
2018-11-08T09:47:04.816929773Z hello zzyy
2018-11-08T09:47:06.821516115Z hello zzyy
2018-11-08T09:47:08.825211232Z hello zzyy
2018-11-08T09:47:10.827242700Z hello zzyy
2018-11-08T09:47:12.831193573Z hello zzyy
2018-11-08T09:47:14.835069567Z hello zzyy
2018-11-08T09:47:16.840180042Z hello zzyy
2018-11-08T09:47:18.841954295Z hello zzyy
2018-11-08T09:47:20.844636084Z hello zzyy
2018-11-08T09:47:22.848753931Z hello zzyy
2018-11-08T09:47:24.851426354Z hello zzyy
2018-11-08T09:47:26.854595560Z hello zzyy
.....(實時動態打印出最新的日誌)
前期資料準備
docker run -it centos
[[email protected] java]# docker run -it centos
[[email protected] /]#
[[email protected] /]# ls
anaconda-post.log bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
Ctrl + p + q
:退出不停止容器
[[email protected] /]# [[email protected] java]#
[[email protected] java]#
[[email protected] java]#
驗證,容器還在執行中
[[email protected] java]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f809b6f11262 centos "/bin/bash" 4 minutes ago Up 4 minutes kind_ardinghelli
2db1ff5cc3a1 centos "/bin/sh -c 'while t…" 27 minutes ago Up 27 minutes elastic_bhaskara
[[email protected] java]#
7、重新進入容器
7.1、 docker attach 容器id
docker attach 容器id
:從宿主機 進入容器中
[[email protected] java]# docker attach f809b6f11262
[[email protected] /]# ls
anaconda-post.log bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[[email protected] /]#
7.2、docker exec -t 容器id shell命令
在宿主機中,而不是在容器中,對容器執行命令
[[email protected] /]# exit
exit
[[email protected] java]# docker run -it centos
[[email protected] /]#
[[email protected] /]#
[[email protected] /]# [[email protected] java]# #【此處是退出不停止容器】
[[email protected] java]#
[[email protected] java]#
[[email protected] java]# docker exec -t 81bc97b5bc57 ls -l /tmp
total 4
-rwx------. 1 root root 836 Oct 6 19:15 ks-script-7RxiSx
-rw-------. 1 root root 0 Oct 6 19:14 yum.log
[[email protected] java]#
docker exec -t 81bc97b5bc57 ls -l /tmp
說明:
docker exec -t 81bc97b5bc57
是docker exec -t 容器id
,在宿主機中,而不是在容器中,對容器執行命令。-t
表示只需要客戶端即可。如果是-it
表示 需要與客戶端進行互動。ls -l /tmp
是顯示目錄tmp的結構。
二者聯在一塊就是在宿主機中執行對容器的tmp目錄的顯示操作
7.3、docker attach
與 docker exec
的區別
docker attach
:直接進入容器啟動命令的終端,不會啟動新的程序
docker exec
:是在宿主機中
開啟新的終端,並且可以啟動新的程序
[[email protected] java]# docker exec -it 81bc97b5bc57 /bin/sh
sh-4.2#
sh-4.2#
sh-4.2# ls
anaconda-post.log bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var