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:容器路径