Docker學習之容器
啟動容器有兩種方式,一種是基於鏡像新建一個容器並啟動,另外一個是將在終止狀態(stopped)的容器重新啟動。
新建並啟動
# docker run ubuntu:16.04 /bin/echo "hello world"
啟動一個bash終端,運行用戶交互
# docker run -it ubuntu:16.04 /bin/bash
root@1f778f9011c3:/# pwd
/
啟動已終止容器:
可以利用 docker container start 命令,直接將一個已經終止的容器啟動運行。
# docker container start <容器ID>
後臺運行
不加-d 參數,一直在宿主機打印hello world
# docker run ubuntu:16.04 /bin/sh -c "while true;do echo hello world;sleep 1;done"
hello world
hello world
hello world
hello world
加-d 參數 後臺運行,輸出結果用docker logs <容器id> 查看
# docker run -d ubuntu:16.04 /bin/sh -c "while true;do echo hello world;sleep 1;done"
# docker logs 952
註: 容器是否會長久運行,是和 docker run 指定的命令有關,和 -d 參數無關。
終止容器
# docker container stop <容器id>
已經終止的容器 docker container ls -a 可以看到,狀態為Exited
# docker container start <容器id> 啟動已終止的容器
# docker container restart <容器id> 停止一個運行狀態的容器,再重新啟動它
進入容器
attach命令attach <容器id>
# docker run -dit ubuntu
7e74e9d5309d4a93a804a26c155209b81d9ef4320cfa315c585e8713b2f94dc2
[root@localhost ~]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7e74e9d5309d ubuntu "/bin/bash" 8 seconds ago Up 6 seconds agitated_curie
# docker attach 7e74
root@7e74e9d5309d:/# cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04 LTS (Bionic Beaver)"
root@7e74e9d5309d:/# exit
exit
從這個stdin中exit,會導致容器的停止;
exec命令,推薦使用;exec -it <容器id> /bin/bash
# docker run -dit ubuntu
# docker exec -it 51fc bash
從這個stdin中exit,不會導致容器的停止;
導入導出容器
導出容器快照到本地 docker export <容器ID> > name.tar
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
51fc79bce0e0 ubuntu "/bin/bash" 5 minutes ago Exited (0) 2 seconds ago
# docker export 51fc79bce0e0 > ubuntu.tar
# ls -lh
-rw-r--r-- 1 root root 69M May 14 13:53 ubuntu.tar
導入容器快照
# cat ubuntu.tar |docker import - test/ubuntu:v1.0
sha256:e5a67314033cf0ba8c81302e780c5b18e5172692c7f5cad1a8b532080edab1c2
# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
test/ubuntu v1.0 e5a67314033c 5 seconds ago 69.8MB
刪除容器
刪除一個處於終止狀態的容器
# docker container rm <容器ID> or <NAME>
如果要刪除一個運行中的容器,可以添加 -f 參數。Docker 會發送 SIGKILL 信號給容器。
清理所有處於終止狀態的容器
用 docker container ls -a 命令可以查看所有已經創建的包括終止狀態的容器,如果數量太多要一個個刪除可能會很麻煩,用下面的命令可以清理掉所有處於終止狀態的容器。
# docker container prune
Docker學習之容器