简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机能够理解为模拟运行的一整套操做系统(提供了运行态环境和其余系统环境)和跑在上面的应用。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