0%

[2023-09-22] Docker #3:Docker容器操作

容器命令

1. 启动容器

以下命令使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器:

1
$ docker run -it ubuntu /bin/bash

参数说明:

  • -i: 交互式操作。
  • -t: 终端。
  • ubuntu: ubuntu 镜像。
  • /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

要退出终端,直接输入 exit:

1
root@ed09e4490c57:/# exit

启动已停止运行的容器

查看所有的容器命令如下:

1
$ docker ps -a

使用 docker start 启动一个已停止的容器:

1
$ docker start b750bbbcfd88 

后台运行

在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式。

1
$ docker run -itd --name ubuntu-test ubuntu /bin/bash

注:加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec

停止一个容器

停止容器的命令如下:

1
$ docker stop <容器 ID>

停止的容器可以通过 docker restart 重启:

1
$ docker restart <容器 ID>

2. 进入容器

在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:

  • docker attach
  • docker exec:推荐大家使用 docker exec 命令,因为此命令会退出容器终端,但不会导致容器的停止。

attach 命令

下面演示了使用 docker attach 命令。

1
$ docker attach 1e560fca3906 

注意: 如果从这个容器退出,会导致容器的停止。

exec 命令

下面演示了使用 docker exec 命令。

1
$docker exec -it 243c32535da7 /bin/bash

注意: 如果从这个容器退出,容器不会停止,这就是为什么推荐大家使用 docker exec 的原因。

更多参数说明请使用 docker exec –help 命令查看。

3. 导出和导入容器

导出容器

如果要导出本地某个容器,可以使用 docker export 命令。

1
$ docker export 1e560fca3906 > ubuntu.tar

导出容器 1e560fca3906 快照到本地文件 ubuntu.tar。

导入容器快照

可以使用 docker import 从容器快照文件中再导入为镜像,以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1:

1
$ cat docker/ubuntu.tar | docker import - test/ubuntu:v1

容器保存为镜像

1
2
3
4
5
6
7
8
9
10
# 将容器保存为镜像
$docker commit [CONTAINER ID] [IMAGE NAME] #容器ID 创建的镜像名

# 使用 docker save 命令根据 ID 将镜像保存成一个文件
$ docker save 0fdf2b4c26d3 > hangge_server.tar
# 还可以同时将多个 image 打包成一个文件,比如下面将镜像库中的 postgres 和 mongo 打包
$ docker save -o images.tar postgres:9.6 mongo:3.4

# 使用 docker load 命令则可将这个镜像文件载入进来
$ docker load < hangge_server.tar