1、在我们对docker容器进行操作时,我们首先要保证容器是启动的,启动一个容器有常见的两种方式:

  • 基于镜像新建一个容器并启动
  • 在终止状态(stopped)的容器重新启动

案例一:基于镜像新建一个容器并启动

1、下面的命令则启动一个 bash 终端,允许用户进行交互。
[root@localhost home]# docker run -t -i centos:7.6.1810 /bin/bash
[root@f37e551d68ba /]#
其中:
-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i则让容器的标准输入保持打开。即为交互模式。


2、使用的命令为docker run。下面的命令输出一个 “Hello World”,之后终止容器。
[root@localhost home]# docker run centos:7.6.1810 /bin/echo 'Hello world'
Hello world

标注:/bin/echo 'Hello world' //在容器里面启动一个镜像


当利用docker run来创建容器时,Docker在后台运行的标准操作包括:
  检查本地是否存在指定的镜像,不存在就从公有仓库下载
  利用镜像创建并启动一个容器
  分配一个文件系统,并在只读的镜像层外面挂载一层可读写层/存储层【容器存储层】
  从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
  从地址池配置一个 ip 地址给容器
  执行用户指定的应用程序【由docker启动的服务都是在docker里面前台运行,不能放在后台,放在后台就退出了,容器与服务是同时存在同时退出的,即我们所说的容器即是服务,服务即容器】
  执行完毕后容器被终止

案例二:在终止状态的容器重新启动

我们可以利用“docker container start” 命令,直接将一个已经终止的容器启动运行。
容器的核心为所执行的应用程序,所需要的资源都是应用程序运行所必需的。除此之外,并没有其它的资源。可以在伪终端中利用ps或top来查看进程信息。例如:
[root@f37e551d68ba /]# ps
  PID TTY          TIME CMD
    1 pts/0    00:00:00 bash
   16 pts/0    00:00:00 ps


[root@localhost ~]# docker container ls -a //查看容器
CONTAINER ID   IMAGE                                                             COMMAND             CREATED        STATUS          PORTS                                                                                  NAMES
c8c30f87437b   nginx-proxy-manager:v1.0   "/init"             8 months ago   Up 34 minutes   0.0.0.0:80-81->80-81/tcp, :::80-81->80-81/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   nmp_nginx-web_1
8b1c5905920d   mariadb-aria:v1.0          "/scripts/run.sh"   8 months ago   Up 34 minutes   3306/tcp                                                                               nmp_db_1
[root@localhost ~]#