Docker(二)—— Docker容器操作

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 二、使用步骤
    • [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提供了大量能使我们快速便捷地处理数据的函数和方法。

相关推荐
你什么冠军?2 小时前
Docker
运维·容器
梦想的旅途22 小时前
RVA与基址偏移在自动化执行中的稳定性研究
运维·自动化·企业微信·rpa
呼啦啦呼啦啦啦啦啦啦2 小时前
推送docker镜像至私有 Docker 镜像仓库(附企业harbor实战)
运维·docker·容器
m0_485614672 小时前
Docker基础
docker·容器·php
二等饼干~za8986682 小时前
碰一碰发视频系统源码开发搭建--技术分享
java·运维·服务器·重构·django·php·音视频
爱学大树锯3 小时前
【Docker本地化超级实践】Docker 镜像离线构建方案
运维·docker·容器
熙丫 133814823863 小时前
CISAW-RM风险管理认证培训|2026年度课程计划全面发布:筑牢安全防线
运维·安全
默恋~微凉3 小时前
Docker
运维·docker·容器
叽里咕噜怪3 小时前
Docker 场景化作业:生产环境容器操作实训
运维·docker·容器