导语
在之前的分享中,我们介绍了关于如何去操作Docker镜像,下面我们来看看如何去操作容器。简单来讲,容器是镜像运行的一个实例,与镜像不同的是镜像只能作为一个静态文件进行读取,而容器是可以在运行时进行写入操作的。同时容器中的应用进程是处于一个运行状态的,而在镜像中的应用程序只是一个应用程序的文件。
如果说虚拟机模拟的是一个计算机操作系统,那么容器就相当于一个独立运行新的一个应用,及其必要的运行环境的组合。
下面我们就来详细的介绍有关Docker容器使用相关的内容。
如何创建一个容器?
新建容器
我们可以使用 docker create 命令来创建一个容器,例如
[root@localhost ~]# docker create -it ubuntu:18.04
86244eee4f2a4f06157d32a433e3f4107e242e4b6f69b27396004202e4909b0f
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5cb48f5d7103 ubuntu:18.04 "/bin/bash" 3 hours ago Exited (0) 3 hours ago cool_nightingale
需要注意的是使用了docker create 命令创建完成的容器是处于一个静止的状态,我们可以使用docker start命令来启动它。当然docker create命令在使用的过程中还有很多的参数,我们可以在使用的时候通过docker create --help 命令来查看。
启动容器
使用docker start命令来启动一个已经创建好的容器
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5cb48f5d7103 ubuntu:18.04 "/bin/bash" 3 hours ago Exited (0) 3 hours ago cool_nightingale
[root@localhost ~]# docker start 5cb48f5d7103
5cb48f5d7103
[root@localhost ~]#
启动之后,我们可以通过docker ps 命令来查看运行中的容器
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5cb48f5d7103 ubuntu:18.04 "/bin/bash" 3 hours ago Up 47 seconds cool_nightingale
[root@localhost ~]#
新建并且启动容器
除了创建容器之后,使用start命令进行启动,还可以直接新建容器并启动。我们可以使用 docker run 命令来完成这个操作,这个命令就是 create 命令和 start命令的整合。如下所示
[root@localhost ~]# docker run ubuntu:18.04 /bin/echo 'hello world'
hello world
[root@localhost ~]#
当然这种操作在运行完成之后,容器并不会保留在正在运行的容器列表中,所以使用docker ps 查看之后内容为空。也就是说是一个临时创建,并没有持续运行。那么我们如何来实现守护运行呢?
守护态运行
在实际操作中,我们更多的时候需要让Docker容器以守护态来运行,因此,我们可以通过添加-d 参数来实现守护态运行。
[root@localhost ~]# docker run -d ubuntu:18.04 /bin/sh -c "while true;do echo hello world;sleep 1;done"
ae370749197f6cbbd694cf874ffe0e35c223584659ac11f018aec973d7b363d0
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ae370749197f ubuntu:18.04 "/bin/sh -c 'while t…" 4 seconds ago Up 3 seconds nice_varahamihira
[root@localhost ~]#
查看容器输出
想要获取到容器输出的内容,可以通过 docker logs 命令进行查看。
[root@localhost ~]# docker logs ae370749197f
hello world
hello world
如何停止容器
停止一个容器可以通过 pause/unpause 、stop和prune等命令来操作。
暂停容器
使用docker pause命令来暂停一个正在运行中的容器
[root@localhost ~]# docker pause ae370749197f
ae370749197f
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ae370749197f ubuntu:18.04 "/bin/sh -c 'while t…" 3 minutes ago Up 3 minutes (Paused) nice_varahamihira
[root@localhost ~]#
处于暂停状态的容器可以使用 docker unpause 命令来恢复到运行状态
[root@localhost ~]# docker unpause ae370749197f
ae370749197f
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ae370749197f ubuntu:18.04 "/bin/sh -c 'while t…" 4 minutes ago Up 4 minutes nice_varahamihira
[root@localhost ~]#
终止容器
使用docker stop命令来终止一个容器运行。
[root@localhost ~]# docker stop ae370749197f
ae370749197f
[root@localhost ~]#
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@localhost ~]#
还可以使用docker stop -t 命令来停止,执行这个命令之后先会等待10秒然后在发送停止容器的命令。
容器停止之后,执行 docker container prune 命令,就会自动清除掉所有的停止状态的容器。
[root@localhost ~]# docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
ae370749197f6cbbd694cf874ffe0e35c223584659ac11f018aec973d7b363d0
3eb583d3483b1e1f1c3bc8e7feea7b250d43e9843a75ced32e49e73da2356493
49f14786a502978527a628fd85bbc9d5ff144158bca2145f4bed929f7552ece8
Total reclaimed space: 0B
[root@localhost ~]#
总结
上面我们演示了如何去创建一个容器,如何运行一个容器,如何去暂停容器和停止容器,并且介绍了如何清理停止中的容器。在后续的分享中,我们还会介绍如何进入到容器,如何删除容器等操作,敬请期待吧!