[步骤] Docker 虚拟网桥的创建

注意:

在创建 Docker 虚拟网桥之前,要先安装 Docker

正文:

步骤一:创建 Docker 的虚拟网桥

# docker network create --subnet=172.16.0.0/24 dockernetwork

(补充:这里以创建网段为 172.16.0.0/24 名为 dockernetwork 为例)

步骤二:显示创建的虚拟网桥

# docker network list

步骤三:使用创建的虚拟网桥加载并启动 Docker 镜像

# docker run --network=dockernetwork -id nginx

(补充:这里以使用 dockernetwork 开启 nginx 镜像为例)

步骤四:创建端口映射

# docker run -p 8080:80 -id nginx

(补充:这里以将宿主机的 8080 端口映射到 nginx 容器的 80 端口为例)

步骤五:显示端口映射是否实现

# curl 127.0.0.1:8080

(补充:这里以显示宿主机的 8080 端口为例)

[步骤] Docker 容器的使用

注意:

在使用 Docker 容器之前,要先安装 Docker

正文:

内容目录:

内容一:加载并启动 Docker 镜像
1.1 在前台启动 Docker 镜像
1.1.1 在非交互模式下在前台加载并启动 Docker 镜像
1.1.1.1 在非交互模式下在前台加载并启动 Docker 镜像但不执行命令
1.1.1.1.1 在非交互模式下在前台加载并启动 Docker 镜像但不执行命令的格式
1.1.1.1.2 在非交互模式下在前台加载并启动 Docker 镜像但不执行命令的案例
1.1.1.2 在非交互模式下在前台加载并启动 Docker 镜像同时执行命令
1.1.1.2.1 在非交互模式下在前台加载并启动 Docker 镜像同时执行命令的格式
1.1.1.2.2 在非交互模式下在前台加载并启动 Docker 镜像同时执行命令的案例
1.1.2 在交互模式下在前台加载并启动 Docker 镜像
1.1.2.1 在交互模式下在前台加载并启动 Docker 镜像的格式
1.1.2.2 在交互模式下在前台启动 Docker 镜像的案例
1.2 在后台启动 Docker 镜像
1.2.1 在后台启动 Docker 镜像的格式
1.2.2 在后台启动 Docker 镜像的案例

步骤二:将容器的端口号映射宿主机的端口号
2.1 将容器的端口号映射宿主机的端口号的格式
2.2 将容器的端口映射宿主机的端口的案例

步骤三:将宿主机上的文件或目录映射到容器的文件或目录里
3.1 将宿主机上的文件或目录映射到容器的文件或目录里的格式
3.2 将宿主机上的文件或目录映射到容器的文件或目录里的案例

步骤四:显示容器列表
4.1 显示正在运行的容器列表
4.2 显示所有加载并运行过或正在运行的容器列表

步骤五:显示容器的信息
5.1 显示容器在运行的进程
5.2 显示容器的 IP 地址
5.3 显示容器的 MAC 地址

步骤六:连接某一个容器
6.1 连接接某一个容器但是退出时会关闭这个容器
6.2 连接某一个容器且退出时不会关闭这个容器
6.3 以非交互的形式连接一个容器

步骤七:重启某一个容器

步骤八:启动某一个已经停止的容器

步骤九:删除某一个容器

具体的内容:

内容一:加载并启动 Docker 镜像
1.1 在前台启动 Docker 镜像
1.1.1 在非交互模式下在前台加载并启动 Docker 镜像
1.1.1.1 在非交互模式下在前台加载并启动 Docker 镜像但不执行命令
1.1.1.1.1 在非交互模式下在前台加载并启动 Docker 镜像但不执行命令的格式

# docker run <image ID or image name>


补充:
1) 如果使用镜像名无效就使用镜像的 ID
2) 如果镜像的 ID 只有一个 9 开头,那就只用使用 9 ,如果有 94 和 95 开头的镜像,就需要使用 94 或 95,反正需要保证它们的唯一性,否则会一次性操作所有相关的镜像
3) 镜像启动了之后就变成容器了

1.1.1.1.2 在非交互模式下在前台加载并启动 Docker 镜像但不执行命令的案例

# docker run centos

(补充:这里以非交互式加载并启动 centos 镜像 为例)

1.1.1.2 在非交互模式下在前台加载并启动 Docker 镜像同时执行命令
1.1.1.2.1 在非交互模式下在前台加载并启动 Docker 镜像同时执行命令的格式

# docker run <image ID or image name> <command in image>


补充:
1) 如果使用镜像名无效就使用镜像的 ID
2) 如果镜像的 ID 只有一个 9 开头,那就只用使用 9 ,如果有 94 和 95 开头的镜像,就需要使用 94 或 95,反正需要保证它们的唯一性,否则会一次性操作所有相关的镜像
3) 镜像启动了之后就变成容器了

1.1.1.2.2 在非交互模式下在前台加载并启动 Docker 镜像同时执行命令的案例

# docker run centos /bin/echo 'Hello world'
Hello world

(补充:这里以非交互式加载并启动 centos 镜像,并执行 /bin/echo ‘Hello world’ 为例)

1.1.2 在交互模式下在前台加载并启动 Docker 镜像
1.1.2.1 在交互模式下在前台加载并启动 Docker 镜像的格式

# docker run centos -t -i <image ID or image name>


补充:
1) 如果使用镜像名无效就使用镜像的 ID
2) 如果镜像的 ID 只有一个 9 开头,那就只用使用 9 ,如果有 94 和 95 开头的镜像,就需要使用 94 或 95,反正需要保证它们的唯一性,否则会一次性操作所有相关的镜像
3) 镜像启动了之后就变成容器了
4) -i 代表要保持打开并且可以进行标准输入
5) -t 代表要开启一个伪终端

1.1.2.2 在交互模式下在前台启动 Docker 镜像的案例

# docker run -t -i centos
[root@1a7d6f4fd45c /]# exit
exit


补充:
1) 这里以交互式加载并启动 centos 镜像,再退出为例
2) -i 代表要保持打开并且可以进行标准输入
3) -t 代表要开启一个伪终端
4) 默认会进入 bash 环境

或者:

# docker run -it centos
 bash
[root@1a7d6f4fd45c /]# exit
exit


补充:
1) 这里以交互式加载并启动 centos 镜像,再退出为例
2) -i 代表要保持打开并且可以进行标准输入
3) -t 代表要开启一个伪终端
4) bash 代表通过 bash 命令来进入 bash 环境

1.2 在后台启动 Docker 镜像
1.2.1 在后台启动 Docker 镜像的格式

# docker run -tid <image ID or image name>


补充:
1) 如果使用镜像名无效就使用镜像的 ID
2) 如果镜像的 ID 只有一个 9 开头,那就只用使用 9 ,如果有 94 和 95 开头的镜像,就需要使用 94 或 95,反正需要保证它们的唯一性,否则会一次性操作所有相关的镜像
3) 镜像启动了之后就变成容器了
4) -i 代表要保持打开并且可以进行标准输入
5) -t 代表要开启一个伪终端
6) -d 代表放在后台运行

1.2.2 在后台启动 Docker 镜像的案例

# docker run -itd centos


补充:
1) 这里以在后台加载并启动 centos 镜像为例
2) -i 代表要保持打开并且可以进行标准输入
3) -t 代表要开启一个伪终端
4) -d 代表放在后台运行

步骤二:将容器的端口号映射宿主机的端口号
2.1 将容器的端口号映射宿主机的端口号的格式

# docker run -d -p <the port number of the host>:<the port number of the container> -it <image ID or image name>


补充:
1) 需要在加载并启动镜像时执行此步骤
2) 如果镜像的 ID 只有一个 9 开头,那就只用使用 9 ,如果有 94 和 95 开头的容器,就需要使用 94 或 95,反正需要保证它们的唯一性,否则会一次性操作所有相关的镜像
3) 镜像启动了之后就变成容器了
4) -d 代表放在后台运行
5) -p 代表要做端口映射
6) -i 代表要保持打开并且可以进行标准输入
7) -t 代表要开启一个伪终端

2.2 将容器的端口映射宿主机的端口的案例

# docker run -d -p 8080:80 -it nginx

(补充:这里以启动 nginx 镜像,并将宿主机的 8080 端口映射到容器的 80 端口为例)

步骤三:将宿主机上的文件或目录映射到容器的文件或目录里
3.1 将宿主机上的文件或目录映射到容器的文件或目录里的格式

# docker run -d -v <a file or directory on the host>:<a file or directory on the container> -it <image ID or image name>


补充:
1) 需要在加载并启动镜像时执行此步骤
2) 如果镜像的 ID 只有一个 9 开头,那就只用使用 9 ,如果有 94 和 95 开头的容器,就需要使用 94 或 95,反正需要保证它们的唯一性,否则会一次性操作所有相关的镜像
3) 镜像启动了之后就变成容器了
4) -d 代表放在后台运行
5) -v 代表要做文件或目录映射
6) -i 代表要保持打开并且可以进行标准输入
7) -t 代表要开启一个伪终端

3.2 将宿主机上的文件或目录映射到容器的文件或目录里的案例

# docker run  -d -v /tmp/web:/var/www/html -it nginx

(补充:这里以启动 nginx 镜像,并将宿主机的目录/tmp/web 映射到容器的目录 /var/www/html 为例)

步骤四:显示容器列表
4.1 显示正在运行的容器列表

# docker ps

4.2 显示所有加载并运行过或正在运行的容器列表

# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
e145ad3588ed        centos              "/bin/bash"         19 seconds ago      Exited (0) 17 seconds ago                       thirsty_mcnulty

步骤五:显示容器的信息
5.1 显示容器在运行的进程

# docker top <image ID or image name>


补充:
1) 如果使用镜像名无效就使用镜像的 ID
2) 如果镜像的 ID 只有一个 9 开头,那就只用使用 9 ,如果有 94 和 95 开头的镜像,就需要使用 94 或 95,反正需要保证它们的唯一性,否则会一次性操作所有相关的镜像

5.2 显示容器的 IP 地址

# docker inspect -f '{{.NetworkSettings.IPAddress}}' <image ID or image name>


补充:
1) 如果使用镜像名无效就使用镜像的 ID
2) 如果镜像的 ID 只有一个 9 开头,那就只用使用 9 ,如果有 94 和 95 开头的镜像,就需要使用 94 或 95,反正需要保证它们的唯一性,否则会一次性操作所有相关的镜像

5.3 显示容器的 MAC 地址

# docker inspect -f '{{.NetworkSettings.MacAddress}}' <image ID or image name>


补充:
1) 如果使用镜像名无效就使用镜像的 ID
2) 如果镜像的 ID 只有一个 9 开头,那就只用使用 9 ,如果有 94 和 95 开头的镜像,就需要使用 94 或 95,反正需要保证它们的唯一性,否则会一次性操作所有相关的镜像

步骤六:连接某一个容器
6.1 连接某一个容器但是退出时会关闭这个容器

# docker attach <image ID or image name>


补充:
1) 如果使用镜像名无效就使用镜像的 ID
2) 如果镜像的 ID 只有一个 9 开头,那就只用使用 9 ,如果有 94 和 95 开头的镜像,就需要使用 94 或 95,反正需要保证它们的唯一性,否则会一次性操作所有相关的镜像

6.2 连接某一个容器且退出时不会关闭这个容器

# docker exec -it <image ID or image name> /bin/bash


补充:
1) 如果使用镜像名无效就使用镜像的 ID
2) -i 代表要保持打开并且可以进行标准输入
3) -t 代表要开启一个伪终端
4) 如果镜像的 ID 只有一个 9 开头,那就只用使用 9 ,如果有 94 和 95 开头的镜像,就需要使用 94 或 95,反正需要保证它们的唯一性,否则会一次性操作所有相关的镜像

6.3 以非交互的形式连接一个容器

# docker exec -t <image ID or image name> <command>


补充:
1) 如果使用镜像名无效就使用镜像的 ID
2) -t 代表要开启一个伪终端
3) 如果镜像的 ID 只有一个 9 开头,那就只用使用 9 ,如果有 94 和 95 开头的镜像,就需要使用 94 或 95,反正需要保证它们的唯一性,否则会一次性操作所有相关的镜像

步骤七:重启某一个容器

# docker restart <container ID or container name>


补充:
1) 如果使用容器名无效就使用容器的 ID
2) 如果容器的 ID 只有一个 9 开头,那就只用使用 9 ,如果有 94 和 95 开头的容器,就需要使用 94 或 95,反正需要保证它们的唯一性,否则会一次性操作所有相关的镜像

步骤八:启动某一个已经停止的容器

# docker stop <container ID or container name>


补充:
1) 如果使用容器名无效就使用容器的 ID
2) 如果镜像的 ID 只有一个 9 开头,那就只用使用 9 ,如果有 94 和 95 开头的容器,就需要使用 94 或 95,反正需要保证它们的唯一性,否则会一次性操作所有相关的镜像

步骤九:删除某一个容器

# docker rm <container ID or container name>


补充:
1) 如果使用容器名无效就使用容器的 ID
2) 如果容器的 ID 只有一个 9 开头,那就只用使用 9 ,如果有 94 和 95 开头的容器,就需要使用 94 或 95,反正需要保证它们的唯一性,否则会一次性操作所有相关的镜像

[步骤] Docker 官方镜像的下载

注意:

在下载 Docker 官方镜像之前,要先安装 Docker

正文:

步骤目录:

步骤一:使用 Docker 官方的代理加速器
1.1 修改 Docker 的配置文件
1.2 重启 Docker 服务

步骤二:显示本地已有的 Docker 镜像

步骤三:查找某一个官方库里的 Docker 镜像
3.1 查找某一个官方库里的 Docker 镜像的格式
3.2 查找某一个官方库里的 Docker 镜像名的案例

步骤四:下载某一个官方库里的 Docker 镜像
4.1 下载某一个官方库里的 Docker 镜像的格式
4.1.1 下载某一个官方库里最新版的 Docker 镜像的格式
4.1.2 下载某一个官方库里旧的指定版的 Docker 镜像的格式
4.2 下载某一个官方库里的 Docker 镜像的案例
4.2.1 下载某一个官方库里最新版的 Docker 镜像的案例
4.2.2 下载某一个官方库里旧的指定版的 Docker 镜像的案例

步骤五:显示官方库里 Docker 镜像是否成功下载到本地

步骤六:删除 Docker 本地镜像

步骤七: 上传 Docker 本地镜像

具体的操作步骤:
步骤一:使用 Docker 官方的代理加速器
1.1 修改 Docker 的配置文件

# vim /etc/docker/daemon.json

将以下内容:

......
}

修改为:

......
  "registry-mirrors": ["https://registry.docker-cn.com"],
}


补充:
1) 此步骤是为了避免因网络问题导致下载官方 Docker 镜像不成功的情况
2) 主要目的是为了将 “registry-mirrors”: [“https://registry.docker-cn.com”], 放在大括号 “{}” 内

1.2 重启 Docker 服务

# systemctl restart docker

步骤二:显示本地已有的 Docker 镜像

# docker images

步骤三:查找某一个官方库里的 Docker 镜像
3.1 查找某一个官方库里的 Docker 镜像的格式

# docker search <image> 

3.2 查找某一个官方库里的 Docker 镜像名的案例

# docker search centos


补充:
1) 这里以查找 centos 镜像为例
2) 这里默认会从公网 docker.io 的官方镜像库里查找
3) 如果在查找的 DESCRIPTION 里出现了类似 The official build 的字样,则表示这个镜像是由官方制作的

步骤四:下载某一个官方库里的 Docker 镜像
4.1 下载某一个官方库里的 Docker 镜像的格式
4.1.1 下载某一个官方库里最新版的 Docker 镜像的格式

# docker pull <image>

或者:

# docker pull <image>:latest

4.1.2 下载某一个官方库里旧的指定版的 Docker 镜像的格式

# docker pull <image>:<version>

4.2 下载某一个官方库里的 Docker 镜像的案例
4.2.1 下载某一个官方库里最新版的 Docker 镜像的案例

# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
3c72a8ed6814: Pull complete 
Digest: sha256:76d24f3ba3317fa945743bb3746fbaf3a0b752f10b10376960de01da70685fbd
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest


补充:
1) 这里以下载 centos 镜像为例
2) 这里默认会从公网 docker.io 的官方镜像库里下载

4.2.2 下载某一个官方库里旧的指定版的 Docker 镜像的案例

# docker pull nginx:1
1: Pulling from library/nginx
d121f8d1c412: Downloading [============>                                      ]  6.728MB/27.09MB
ebd81fc8c071: Downloading [===============>                                   ]  8.289MB/26.4MB
655316c160af: Download complete                                                                                                                                 d121f8d1c412: Pull complete 
ebd81fc8c071: Pull complete 
655316c160af: Pull complete 
d15953c0e0f8: Pull complete 
2ee525c5c3cc: Pull complete 
Digest: sha256:c628b67d21744fce822d22fdcc0389f6bd763daac23a6b77147d0712ea7102d0
Status: Downloaded newer image for nginx:1
docker.io/library/nginx:1


补充:
1) 这里以下载 nginx 的 1 版本为例
2) 这里默认会从公网 docker.io 的官方镜像库里下载

步骤五:显示官方库里 Docker 镜像是否成功下载到本地

# docker images
REPOSITORY                                    TAG                 IMAGE ID            CREATED             SIZE
centos                                        latest              0d120b6ccaa8        7 weeks ago         215MB
nginx                                         1                   7e4d58f0e5f3        3 weeks ago         133MB

步骤六:删除 Docker 本地镜像

# docker rmi <image>

步骤七: 上传 Docker 本地镜像

# docker push <image>

(补充:这里默认会往公网 docker.io 的官方镜像库里上传)

[步骤] Docker 的安装

步骤一:系统环境要求

服务器系统要配置好可用的软件源

步骤二:安装 Docker
2.1 CentOS&RHEL 安装 Docker

# yum -y install docker

2.2 openSUSE&SUSE 安装 Docker

# zypper -n install docker

(注意:从 CentOS&RHEL 8 开始,CentOS&RHEL 将用 podman 替代 Docker,所以 CentOS&RHEL 官方库中不再包含 Docker 的软件包)

步骤三:启动 Docker

# systemctl start docker

步骤四:显示 Docker 的信息

# docker info