1. 程式人生 > >Docker學習之容器

Docker學習之容器

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學習之容器