注意:
在使用 Docker 容器之前,要先安装 Docker
正文:
内容一:加载并启动 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 只有 1 个 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 只有 1 个 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 只有 1 个 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 代表要开启 1 个伪终端
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 只有 1 个 9 开头,那就只用使用 9 ,如果有 94 和 95 开头的镜像,就需要使用 94 或 95,反正需要保证它们的唯一性,否则会一次性操作所有相关的镜像
3) 镜像启动了之后就变成容器了
4) -i 代表要保持打开并且可以进行标准输入
5) -t 代表要开启 1 个伪终端
6) -d 代表放在后台运行
)
1.2.2 在后台启动 Docker 镜像的案例
# docker run -itd centos
(
补充:
1) 这里以在后台加载并启动 centos 镜像为例
2) -i 代表要保持打开并且可以进行标准输入
3) -t 代表要开启 1 个伪终端
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 代表要开启 1 个伪终端
)
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 代表要开启 1 个伪终端
)
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 只有 1 个 9 开头,那就只用使用 9 ,如果有 94 和 95 开头的镜像,就需要使用 94 或 95,反正需要保证它们的唯一性,否则会一次性操作所有相关的镜像
)
5.3 显示容器的 MAC 地址
# docker inspect -f '{{.NetworkSettings.MacAddress}}' <image ID or image name>
(
补充:
1) 如果使用镜像名无效就使用镜像的 ID
2) 如果镜像的 ID 只有 1 个 9 开头,那就只用使用 9 ,如果有 94 和 95 开头的镜像,就需要使用 94 或 95,反正需要保证它们的唯一性,否则会一次性操作所有相关的镜像
)
步骤六:连接某 1 个容器
6.1 连接某 1 个容器但是退出时会关闭这个容器
# docker attach <image ID or image name>
(
补充:
1) 如果使用镜像名无效就使用镜像的 ID
2) 如果镜像的 ID 只有 1 个 9 开头,那就只用使用 9 ,如果有 94 和 95 开头的镜像,就需要使用 94 或 95,反正需要保证它们的唯一性,否则会一次性操作所有相关的镜像
)
6.2 连接某 1 个容器且退出时不会关闭这个容器
# docker exec -it <image ID or image name> /bin/bash
(
补充:
1) 如果使用镜像名无效就使用镜像的 ID
2) -i 代表要保持打开并且可以进行标准输入
3) -t 代表要开启 1 个伪终端
4) 如果镜像的 ID 只有一个 9 开头,那就只用使用 9 ,如果有 94 和 95 开头的镜像,就需要使用 94 或 95,反正需要保证它们的唯一性,否则会一次性操作所有相关的镜像
)
6.3 以非交互的形式连接 1 个容器
# docker exec -t <image ID or image name> <command>
(
补充:
1) 如果使用镜像名无效就使用镜像的 ID
2) -t 代表要开启 1 个伪终端
3) 如果镜像的 ID 只有一个 9 开头,那就只用使用 9 ,如果有 94 和 95 开头的镜像,就需要使用 94 或 95,反正需要保证它们的唯一性,否则会一次性操作所有相关的镜像
)
步骤七:重启某 1 个容器
# docker restart <container ID or container name>
(
补充:
1) 如果使用容器名无效就使用容器的 ID
2) 如果容器的 ID 只有 1 个 9 开头,那就只用使用 9 ,如果有 94 和 95 开头的容器,就需要使用 94 或 95,反正需要保证它们的唯一性,否则会一次性操作所有相关的镜像
)
步骤八:启动某 1 个已经停止的容器
# docker stop <container ID or container name>
(
补充:
1) 如果使用容器名无效就使用容器的 ID
2) 如果镜像的 ID 只有 1 个 9 开头,那就只用使用 9 ,如果有 94 和 95 开头的容器,就需要使用 94 或 95,反正需要保证它们的唯一性,否则会一次性操作所有相关的镜像
)
步骤九:删除某 1 个容器
# docker rm <container ID or container name>
(
补充:
1) 如果使用容器名无效就使用容器的 ID
2) 如果容器的 ID 只有 1 个 9 开头,那就只用使用 9 ,如果有 94 和 95 开头的容器,就需要使用 94 或 95,反正需要保证它们的唯一性,否则会一次性操作所有相关的镜像
)