實驗環境
CentOS 7.5
容器
容器是鏡像的運行實例。不同的是,鏡像是靜態的只讀文件,而容器帶有運行時需要的可寫文件層;同時,容器中的應用進程處於運行狀態。
進入容器
可使用以下命令進入容器:
attach命令
docker container attach [OPTIONS] CONTAINER
[root@kvm ~]# docker container attach --help
Usage: docker container attach [OPTIONS] CONTAINER
Attach to a running container
Options:
--detach-keys string 指定退出attach模式的快捷鍵
--help 幫助信息
--no-stdin 是否關閉標准輸入,默認是保持打開;--no-stdin=true|false
--sig-proxy 是否代理收到的系統信號給應用進程,默認為true;--sig-proxy=true|false
注意:
- attach命令只能進入處於運行狀態的容器中;
- attach命令直接進入容器並啟動命令的終端,不會啟動新的進程;
- attach命令進入容器后,如果直接從這個stdin中exit(ctrl+d),會導致容器的停止;不建議使用此命令操作容器。
exec命令
docker container exec [OPTIONS] CONTAINER COMMAND [ARG...]
[root@kvm ~]# docker container exec --help
Usage: docker container exec [OPTIONS] CONTAINER COMMAND [ARG...]
Run a command in a running container
Options:
-d, --detach 在容器中后台執行命令;
--detach-keys string 指定將容器切回后台的按鍵;
-e, --env list 指定環境變量列表;
--help 幫助信息
-i, --interactive 打開標准輸入接受用戶輸入命令,默認值為false;--interactive=true|false;
--privileged 是否給執行命令以高權限,默認值為false;--privileged=true|false;
-t, --tty 分配偽終端,默認值為false;--tty=true|false;
-u, --user string 執行命令的用戶名或ID;--user=""。
注意:
- 同attach命令,exec命令也只能進入處於運行狀態的容器中;
- 不同attach命令,exec命令是在容器中打開新的終端,並且可以啟動新的進程;
- exec命令進入容器后,如果直接從這個stdin中exit(ctrl+d),不會導致容器的停止;
- 使用exec命令的同時使用 -it 選項時,會打開一個跟我們平時使用的TTY一樣的終端。
刪除容器
docker [container] rm [OPTIONS] CONTAINER [CONTAINER...]
[root@kvm ~]# docker container rm --help
Usage: docker container rm [OPTIONS] CONTAINER [CONTAINER...]
Remove one or more containers
Options:
-f, --force 是夠強制終止並刪除一個運行中的容器;
--help 幫助信息;
-l, --link 刪除容器的鏈接,但是保留容器;
-v, --volumes 刪除容器掛載的數據卷。
默認情況下,docker rm
命令只能刪除已經處於停止或退出狀態的容器,並不能刪除還處於運行狀態的容器,除非使用-f
參數強制刪除。
刪除所有處於同一狀態的容器
可以使用docker ps -a
狀態定位容器並對其進行過濾:創建,重新啟動,運行,暫停或退出。要查看已退出容器的列表,可使用-f
參數根據狀態進行過濾。當確認要刪除這些容器時,使用-q
參數將容器ID傳遞給docker rm
命令;eg:
- 列出所有處於停止狀態的容器列表
docker ps -a -f status=exited
- 刪除所有處於停止狀態的容器
docker rm $(docker ps -a -f status=exited -q)
批量刪除其他狀態的容器方法同理。
刪除所有容器
- 刪除所有容器首先需要停止所有容器
docker stop $(docker ps -a -q)
- 刪除所有容器
docker rm $(docker ps -a -q)