Docker实战-操作Docker容器实战(一)

导语
  在之前的分享中,我们介绍了关于如何去操作Docker镜像,下面我们来看看如何去操作容器。

  简单来讲,容器是镜像运行的一个实例,与镜像不同的是镜像只能作为一个静态文件进行读取,而容器是可以在运行时进行写入操作的。同时容器中的应用进程是处于一个运行状态的,而在镜像中的应用程序只是一个应用程序的文件。

  如果说虚拟机模拟的是一个计算机操作系统,那么容器就相当于一个独立运行新的一个应用,及其必要的运行环境的组合。

  下面我们就来详细的介绍有关Docker容器使用相关的内容。

Docker实战-操作Docker容器实战(一)_第1张图片

如何创建一个容器?

新建容器

  我们可以使用 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 ~]# 

总结

  上面我们演示了如何去创建一个容器,如何运行一个容器,如何去暂停容器和停止容器,并且介绍了如何清理停止中的容器。在后续的分享中,我们还会介绍如何进入到容器,如何删除容器等操作,敬请期待吧!

你可能感兴趣的:(Docker,docker,容器,运维)