Docker學習之容器

簡單的說,容器是獨立運行的一個或一組應用,以及它們的運行態環境。對應的,虛擬機能夠理解爲模擬運行的一整套操做系統(提供了運行態環境和其餘系統環境)和跑在上面的應用。git

啓動容器有兩種方式,一種是基於鏡像新建一個容器並啓動,另一個是將在終止狀態(stopped)的容器從新啓動。docker


新建並啓動ubuntu

# docker run ubuntu:16.04 /bin/echo "hello world"bash


啓動一個bash終端,運行用戶交互ionic

# docker run -it ubuntu:16.04 /bin/bashide

root@1f778f9011c3:/# pwdspa

/操作系統


啓動已終止容器:rest

能夠利用 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

相關文章
相關標籤/搜索