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 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 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 ~]#