(四)容器常用操作
(1)stop/start/restart 容器
root@cuiyongchao:/dockerfile# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
872ebb8a83c1 ubuntu "/bin/bash -c 'while…" About an hour ago Up About an hour hardcore_kepler
root@cuiyongchao:/dockerfile# docker stop 872ebb8a83c1
872ebb8a83c1
root@cuiyongchao:/dockerfile# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
872ebb8a83c1 ubuntu "/bin/bash -c 'while…" About an hour ago Exited (137) 5 seconds ago hardcore_kepler
? 容器在 docker host 中實際上是一個行程,docker stop 命令本質上是向該行程發送一個 SIGTERM 信號,如果想快速停止容器,可使用 docker kill 命令,其作用是向容器行程發送 SIGKILL 信號,
root@cuiyongchao:/dockerfile# docker kill 638740d1042a
638740d1042a
root@cuiyongchao:/dockerfile# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
638740d1042a httpd "httpd-foreground" 3 hours ago Exited (137) 4 seconds ago my_http_server
root@cuiyongchao:/dockerfile# docker start 638740d1042a
638740d1042a
root@cuiyongchao:/dockerfile# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
638740d1042a httpd "httpd-foreground" 3 hours ago Up 3 seconds 80/tcp my_http_server
docker start 會保留容器的第一次啟動時的所有引數,
docker restart 可以重啟容器,其作用就是依次執行 docker stop 和docker start,
? 容器可能會因某種錯誤而停止運行,對于服務類容器,我們通常希望在這種情況下容器能夠自動重啟,啟動容器時設定 --restart 就可以達到這個效果,
root@cuiyongchao:/dockerfile# docker run -d --restart=always httpd
5830e72ffb636e9c6ebe27ee9b302468144ecf83d4f9d6acca3dec280fb357a6
root@cuiyongchao:/dockerfile#
--restart=always 意味著無論容器因何種原因退出(包括正常退出),就立即重啟,該引數的形式還可以是 --restart=on-failure:3,意思是如果啟動行程退出代碼非0,則重啟容器,最多重啟3次,
(2)pause/unpause 容器
? 有時我們只是希望暫時讓容器暫停作業一段時間,比如要對容器的檔案系統打個快照,或者 dcoker host 需要使用 CPU,這時可以執行 docker pause,
root@cuiyongchao:/dockerfile# docker pause 5830e72ffb63
5830e72ffb63
root@cuiyongchao:/dockerfile# docker ps 5830e72ffb63
"docker ps" accepts no arguments.
See 'docker ps --help'.
Usage: docker ps [OPTIONS]
List containers
root@cuiyongchao:/dockerfile# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5830e72ffb63 httpd "httpd-foreground" 3 minutes ago Up 3 minutes (Paused) 80/tcp hardcore_sanderson
root@cuiyongchao:/dockerfile# docker unpause 5830e72ffb63
5830e72ffb63
root@cuiyongchao:/dockerfile# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5830e72ffb63 httpd "httpd-foreground" 5 minutes ago Up 5 minutes 80/tcp hardcore_sanderson
? 處于暫停狀態的容器不會占用 CPU 資源,直到通過 docker unpause 恢復運行,
(3)洗掉容器
使用 docker 一段時間后,host 上可能會有大量已經退出了的容器,
這些容器依然會占用 host 的檔案系統資源,如果確認不會再重啟此類容器,可以通過 docker rm 洗掉,
root@cuiyongchao:/dockerfile# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
37234805f5e2 busybox "sh" 19 minutes ago Exited (127) 14 minutes ago nifty_borg
872ebb8a83c1 ubuntu "/bin/bash -c 'while…" 2 hours ago Exited (137) 13 minutes ago hardcore_kepler
d3d17f299cfc ubuntu "/bin/bash -c 'while…" 2 hours ago Exited (137) 2 hours ago angry_jepsen
1d48fd6d1a40 ubuntu "/bin/bash -c 'while…" 3 hours ago Exited (137) 3 hours ago priceless_lovelace
root@cuiyongchao:/dockerfile# docker rm 37234805f5e2 872ebb8a83c1 d3d17f299cfc
37234805f5e2
872ebb8a83c1
d3d17f299cfc
root@cuiyongchao:/dockerfile#
docker rm 一次可以指定多個容器,如果希望批量洗掉所有已經退出的容器,可以執行如下命令:
docker rm -v $(docker ps -aq -f status=exited)
root@cuiyongchao:/dockerfile# docker rm $(docker ps -aq -f status=exited)
1d48fd6d1a40
fe757aa05f42
8e8f2f1fff93
be1ba7d18a9b
e0899ffc4801
97f9b6d4c13a
root@cuiyongchao:/dockerfile# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5830e72ffb63 httpd "httpd-foreground" 10 minutes ago Up 10 minutes 80/tcp hardcore_sanderson
638740d1042a httpd "httpd-foreground" 3 hours ago Up 13 minutes 80/tcp
順便說一句:docker rm 是洗掉容器,而 docker rmi 是洗掉鏡像,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/211020.html
標籤:其他
下一篇:msf生成木馬
