提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 二、使用步骤
-
- [2.2 Docker容器操作](#2.2 Docker容器操作)
-
- [2.2.1 创建容器](#2.2.1 创建容器)
- [2.2.2 启动/停止容器](#2.2.2 启动/停止容器)
- [2.2.3 查看容器状态](#2.2.3 查看容器状态)
- [2.2.4 创建并启动容器(docker run)](#2.2.4 创建并启动容器(docker run))
- [2.2.5 在后台持续运行 docker run 创建的容器](#2.2.5 在后台持续运行 docker run 创建的容器)
- [2.2.6 容器交互(进入容器)](#2.2.6 容器交互(进入容器))
- [2.2.7 容器文件复制(宿主机↔容器)](#2.2.7 容器文件复制(宿主机↔容器))
- 2.2.8容器导出/导入
- [2.2.9 删除容器](#2.2.9 删除容器)
- 总结

前言
提示:以下是本篇文章正文内容,下面案例可供参考
二、使用步骤
2.2 Docker容器操作
容器是镜像的运行实例,以下是容器的全生命周期操作。
2.2.1 创建容器
bash
创建容器但不启动,示例:
格式:docker create [选项] 镜像
# 创建交互式nginx容器(-i:标准输入,-t:伪终端)
docker create -it --name mynginx nginx:latest /bin/bash
参数说明:
- -i:保持容器标准输入打开
- -t:为容器分配伪终端(便于交互)
- --name:指定容器名称(避免自动生成随机名称)

2.2.2 启动/停止容器
bash
# 启动容器(通过名称或ID)
docker start mynginx
# 停止容器
docker stop mynginx
# 重启容器
docker restart mynginx
# 暂停容器(暂停进程)
docker pause mynginx
# 恢复暂停的容器
docker unpause mynginx
2.2.3 查看容器状态
bash
# 查看正在运行的容器
docker ps
# 查看所有容器(运行/暂停/停止)
docker ps -a
# 查看容器简洁信息(仅ID和名称)
docker ps -aq

2.2.4 创建并启动容器(docker run)
bash
docker run centos:7 /usr/bin/bash -c ls /
docker ps -a #会发现创建了一个新容器并启动执行一条 shell 命令,之后就停止了

当利用 docker run 来创建容器时, Docker 在后台的标准运行过程是:
Dockers引擎会在本地查找镜像
本地找到镜像 然后启动镜像
本地没有找到镜像,然后根据Docker引擎配置的仓库地址,远程去查找镜像。
远程查询到镜像,把镜像下载到本地,然后启动镜像
远程查询到镜像,Docker返回错误,提示镜像远程未找到。
运行中的镜像支持:停止、启动、重启、删除(先停止才可以删除)操作

2.2.5 在后台持续运行 docker run 创建的容器
需要在 docker run 命令之后添加 -d 选项让 Docker 容器以守护形式在后台运行。并且容器所运行的程序不能结束
bash
docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done"
docker ps -a #可以看出容器始终处于 UP,运行状态
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
77c7fa347272 centos:7 "/usr/bin/bash -c 'w..." 26 seconds ago Up 25 seconds goofy_knuth
bash
#创建容器并持续运行容器
docker run -itd --name mycentos centos:7 /bin/bash


Docker容器主要有以下7个状态:
created:已创建,还未运行的容器
running:正在运行中的容器
restarting:容器正在重启中
removing:容器正在迁移中
paused:已暂停状态的容器
exited:停止状态的容器
dead:死亡,主要是操作系统出现异常或者断电关机等有可能引发dead状态,不是很常见。
暂停和停止状态的区别:
docker pause 命令挂起指定容器中的所有进程
docker stop 容器内主进程会在指定时间内被杀死,默认为10s后。
2.2.6 容器交互(进入容器)
进入运行中的容器执行命令,推荐使用docker exec(退出后容器不停止):
示例:docker exec -it <container_id> bash,进入容器交互式 shell
-i 选项表示让容器的输入保持打开;
-t 选项表示让 Docker 分配一个伪终端
bash
# 进入mycentos容器,启动bash交互
docker exec -it mycentos /bin/bash
ls
# 退出容器(容器继续运行)
exit
docker ps -a

补充:执行docker run -it centos:7 bash,不加 -d 选项会创建容器后直接进入容器,但是退出容器,容器也会停止
2.2.7 容器文件复制(宿主机↔容器)
bash
echo abc123 > ~/test.txt #在宿主机 root 家目录(/root)创建 test.txt,内容仅为 abc123
# 宿主机文件复制到容器(格式:docker cp 宿主机路径 容器名:容器路径)
docker cp ~/test.txt mycentos:/opt/

bash
# 容器文件复制到宿主机(格式:docker cp 容器名:容器路径 宿主机路径)
docker cp mycentos:/opt/test.txt ~/abc123.txt
2.2.8容器导出/导入
用户可以将任何一个 Docker 容器从一台机器迁移到另一台机器。在迁移过程中,可以使用docker export 命令将已经创建好的容器导出为文件,无论这个容器是处于运行状态还是停止状态均可导出。可将导出文件传输到其他机器,通过相应的导入命令实现容器的迁移。
注意:导出的是容器当前状态,导入后变为镜像
1.导出容器
bash
#导出格式:docker export 容器ID/名称 > 文件名
# 导出mynginx容器为centos7.tar
docker export mycentos > centos7.tar
2.导入容器(生成镜像)
bash
#导入格式:cat 文件名 | docker import -- 镜像名称:标签
# 从centos7.tar导入为镜像centos7:test
cat centos7.tar | docker import - centos7:test
区别:docker save/load操作镜像,docker export/import操作容器(导入后失去镜像历史层)。
2.2.9 删除容器
格式:docker rm [-f] 容器ID/名称
bash
# 删除已停止的容器
docker stop 9b0247bdac6e
docker rm 9b0247bdac6e
# 强制删除运行中的容器
docker rm -f 9b0247bdac6e
bash
# 批量停止容器
docker ps -a | awk 'NR>=2{print $1}'| xargs docker stop
docker ps -a | awk 'NR>=2{print "docker stop "$1}' | bash
# 批量删除所有容器
docker ps -a | awk 'NR>=2{print $1}'| xargs docker rm
docker ps -a | awk 'NR>=2{print "docker rm "$1}' | bash
bash
# 批量删除镜像
docker images | awk 'NR>=2{print $3}'|xargs docker rmi
docker images | awk 'NR>=2{print "docker rmi "$3}'| bash
# 删除none镜像
docker images | grep none | awk '{print $3}' | xargs docker rmi
bash
# 批量清理后台停止的容器
docker rm $(docker ps -a -q)

查询配置、状态、存储、网络等细节,是排查容器 / 镜像问题
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。