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