Docker入门与实践:操作容器方法详细介绍
Docker容器作为Docker的核心概念之一,是独立运行的一个/一组应用及其运行状态的环境。本文将介绍如何管理一个Docker容器,包括创建、启动和停止操作等内容。
在学习Docker容器具体操作之前,我们要具有这样的意识:由于Docker容器的轻量级特性,使用容器的通常方法是随时删除和新建容器。
一、Docker容器的启动方法
新建并启动Docker容器的命令为docker run
。比如,本地具有ubuntu:16.04
Docker镜像(如果没有,可以使用docker pull ubuntu:16.04
下载docker镜像)。
1.1 启动Docker容器执行任务后并退出
比如,我们可以在本地通过ubuntu:16.04
容器的bash
终端输出Hello, Xiaoliang!
并终止容器:
docker run ubuntu:16.04 /bin/echo `Hello, Xiaoliang!`
1.2 以交互方式启动Docker容器执行任务
通过如下指令,我们可以实现以交互的形式实现通过ubuntu
容器的终端输出内容:
docker run -t -i ubuntu:16.04 /bin/bash
其中,-t
表示为Docker容器分配一个伪终端(pseudo-tty
)并绑定到容器的标准输入上;-i
表示容器的标准输入保持打开状态。此时,我们能够以交互的模式在docker容器终端输入命令进行相应操作。
注意:终止容器的方式为在docker容器终端输入exit
或Ctrl+d
即可。
说明:当执行docker run命令创建容器时,docker后台执行了如下操作
(1)检测本地是否存在该镜像,如果不存在则从共有仓库上下载;
(2)通过本docker地镜像创建并启动一个docker容器;
(3)分配一个文件系统,并在只读的本地docker镜像层外部挂载一个可读写层;
(4)从宿主机配置的网桥接口中桥接一个虚拟接口到docker容器内;
(5)从地址池配置一个ip地址给docker容器;
(6)执行相应的应用程序,执行完不后终止容器。
二、Docker容器的后台运行、终止/删除、进入方法
2.1 Docker容器的后台运行方法
通常,我们使用docker容器的方式是让docker容器在后台运行,而不是直接将输出结果输出到宿主机。我们可以通过-d
选项来实现docker容器的后台运行(也叫守护态运行)。比如,我们要实现启动ubuntu16.04
容器,并实现每1秒输出一个Hello World!
。如果我们不是用-d
选项,则会出现如下情况,每秒在宿主机终端输出一个Hello World!
。
但是,如果我们使用后台运行,则会出现如下图所示的结果,需要注意输出的哈希值的前3位,它是后台运行docker容器的唯一Container id
,通过这3位我们可以查看docker后台容器运行结果。此时,docker容器会在后台每秒输出一个Hello World!
,而不会在宿主机的终端输出结果。但是我们可以通过docker logs
命令查看输出结果。
我们还可以通过docker container ls
来查看运行的容器信息,如下图所示,运行了两个docker容器:
2.2 Docker容器终止/删除方法
(1)容器的终止方法
终止容器的命令为:
docker container stop 容器ID的前几位
这里先介绍查看终止状态的容器命令为:
docker container ls -a
如下图所示,我这里有两个处于运行状态的容器和几个处于终止状态的容器:
- 注意:对于终止的容器,我们可以使用
docker container start 容器ID前几位
- 来重新启动,这也是启动容器的另一种方法。
此时,我们可以使用如下命令,同时终止两个后台运行的容器:
docker container stop 8c1 36c
然后,使用docker container ls -a
查看结果,运行的两个容器状态变为了Exited
状态,即实现了容器的终止操作。
(2)容器的删除方法
删除容器的命令为:
docker container rm [-f] 容器ID的前几位
- 注意:如果一个容器处于运行状态,需要使用
-f
- 选项来强制删除容器。
有的时候,我们想要删除所有处于会终止状态的容器,其命令如下所示:
docker container prune
2.3 Docker容器进入方法
在使用-d
选项后台运行容器后,有时候需要进入容器进行相应操作,此时我们可以使用docker exec
命令进入后台运行容器。
docker exec -i 容器ID前几位 bash
-d
- 选项,还要使用
-it
- 为Docker容器分配一个伪终端并保持标准输入状态,即
-it
- 配合使用时,则可以通过熟悉的Linux命令提示符操作容器。
如下图所示,给出一个例子:
(1)使用docker run -dit ubuntu:16.04
命令以后台方式打开一个docker容器,并为Docker容器分配一个伪终端和保持标准输入状态;
(2)实际情况下有多个后台运行容器时,可以使用docker container ls -a
查看所有容器的信息;
(3)使用docker exec -it 容器ID前几位 bash
命令进入容器,并执行相应操作。
可以通过输入exit
退出容器,此操作并不停止容器。