Docker教程

CentOS Docker 安装

1.使用官方脚本自动安装,安装命令如下

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

2.验证docker是否安装成功

[root@localhost ~]# docker version
Client: Docker Engine - Community
 Version:           23.0.0
 API version:       1.42
 Go version:        go1.19.5
 Git commit:        e92dd87
 Built:             Wed Feb  1 17:49:02 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          23.0.0
  API version:      1.42 (minimum version 1.12)
  Go version:       go1.19.5
  Git commit:       d7573ab
  Built:            Wed Feb  1 17:46:49 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.16
  GitCommit:        31aa4358a36870b21a992d3ad2bef29e1d693bec
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

如果出现docker相关版本信息,则代表安装成功

3.启动docker

systemctl start docker  # 启动服务
systemctl status docker  # 查看状态
systemctl stop docker  # 停止服务
systemctl restart docker  # 重启服务

Docker使用

1.列出镜像列表

[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
emqx         5.0.14    3498af707410   7 weeks ago   236MB

各个选项说明:

  • **REPOSITORY:**表示镜像的仓库源
  • **TAG:**镜像的标签。同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,
  • **IMAGE ID:**镜像ID
  • **CREATED:**镜像创建时间
  • **SIZE:**镜像大小

2.获取新的镜像

当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它。

[root@localhost ~]# docker pull ubuntu:13.10
13.10: Pulling from library/ubuntu
Image docker.io/library/ubuntu:13.10 uses outdated schema1 manifest format. Please upgrade to a schema2 image for better future compatibility. More information at https://docs.docker.com/registry/spec/deprecated-schema-v1/
a3ed95caeb02: Pull complete 
0d8710fc57fd: Pull complete 
5037c5cd623d: Pull complete 
83b53423b49f: Pull complete 
e9e8bd3b94ab: Pull complete 
7db00e6b6e5e: Pull complete 
Digest: sha256:403105e61e2d540187da20d837b6a6e92efc3eb4337da9c04c191fb5e28c44dc
Status: Downloaded newer image for ubuntu:13.10
docker.io/library/ubuntu:13.10
您在 /var/spool/mail/root 中有新邮件

3.启动容器

当我们以交互式使用指定版本的镜像时,需要使用命令如下:

[root@localhost ~]# docker run -t -i emqx:5.0.14  /bin/bash

如果你不指定一个镜像的版本标签,例如你只使用 emqx,docker 将默认使用emqx:latest 镜像。

参数说明:

  • -i: 交互式操作。
  • -t: 终端。
  • emqx:5.0.14: 这是指用 emqx 5.0.14 版本镜像为基础来启动容器。
  • /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

当我们以后台模式即以一个进程方式运行容器时:

[root@localhost ~]# docker run -d emqx:5.0.14  /bin/bash
4ce66e7a0683fe808c22bd5cb58b1cc80b58e6d631f337d4324cb77d94a5680a

4ce66e7a0683fe808c22bd5cb58b1cc80b58e6d631f337d4324cb77d94a5680a

这个长字符串叫做容器 ID,对每个容器来说都是唯一的,我们可以通过容器 ID 来查看对应的容器发生了什么。

4.启动一个已经停止的容器

[root@localhost ~]# docker start 5917eac21c36

5.停止容器

[root@localhost ~]# docker stop 5917eac21c36

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

[root@localhost ~]# docker restart 5917eac21c36

6.查看容器运行状态

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE                  COMMAND              ...  
5917eac21c36        ubuntu:15.10           "/bin/sh -c 'while t…"    ...

输出详情介绍:

CONTAINER ID: 容器 ID。

IMAGE: 使用的镜像。

COMMAND: 启动容器时运行的命令。

CREATED: 容器的创建时间。

STATUS: 容器状态。

状态有7种:

  • created(已创建)
  • restarting(重启中)
  • running 或 Up(运行中)
  • removing(迁移中)
  • paused(暂停)
  • exited(停止)
  • dead(死亡)

PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。

NAMES: 自动分配的容器名称。

7.查看容器输出

[root@localhost ~]# docker logs 4ce66e7a0683fe808c

其中4ce66e7a0683fe808c为容器ID

8.进入容器

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

  • docker attach:进入容器后,再使用exit退出容器后,会导致容器的停止
  • docker exec:进入容器后,再使用exit退出容器后,会退出容器终端,但不会导致容器的停止。
docker attach 容器ID
docker exec -it 容器ID /bin/bash

9.导出容器

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

docker export 1e560fca3906 > ubuntu.tar

10.导入容器快照

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

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

11.删除容器

docker rm 容器ID

12.docker 复制

docker cp 宿主机文件路径 容器ID:容器路径