docker用法整理:镜像、容器操作命令

2022-11-2709:35:46服务器及运维Comments1,063 views字数 2689阅读模式
作者:大刚测试开发实战文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

一、镜像操作命令

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html
docker用法整理:镜像、容器操作命令
命令说明
pull拉取镜像
search搜索相关镜像
tag重命名镜像
rmi删除镜像
images 或 image ls查看所有镜像
build基于Dockerfile构建镜像
commit基于已有容器构建镜像

1.拉取镜像

使用"docker pull 镜像名称",拉取远程仓库的镜像到本地(先校验本地是否存在,本地不存在时再默认从官网拉取最新版本的镜像)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

以busybox为例:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例grep、find、mount以及telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 Linux 系统的自带的shell。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

docker pull busybox  # 拉取镜像
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html
docker用法整理:镜像、容器操作命令

在拉取镜像前,也可以通过docker search命令搜索不同类型的镜像文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

docker search busybox  # 搜索相关镜像
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html
docker用法整理:镜像、容器操作命令

2.查看镜像

使用 "docker image ls" 或 "docker images" 命令查看本地已经存在的镜像文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

docker images  # 查看所有镜像
docker images | grep busybox  # 查看指定镜像
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html
docker用法整理:镜像、容器操作命令

3.修改镜像名称

使用 "docker tag 原始镜像名称 新名称" 命令重命名镜像,如:docker tag busybox:latest mybusybox:V1.0,重命名镜像会新增一条镜像,相当于创建了一个副本,但ID相同。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

docker tag busybox:latest mybusybox:V1.0
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html
docker用法整理:镜像、容器操作命令

4.删除镜像

使用 "docker rmi 镜像名称" 命令删除无用镜像,通过镜像名称删除,只会删除指定名称的镜像;通过镜像ID删除,会删除所有ID相同的镜像。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

docker rmi mybusybox:V1.0
docker rmi -f ff4a8eb070e1
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html
docker用法整理:镜像、容器操作命令

二、容器操作命令

容器操作命令:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

命令说明
create创建容器
run运行容器,run = pull + create + start
exec...-it...sh进入容器内部
start启动容器
restart重启容器
stop停止容器
rm删除容器
commit基于已有容器构建镜像
ps查看容器状态:docker ps -a:查看所有容器docker ps -l:查看最近操作的容器
logs查看容器日志:docker logs 容器名:查看指定容器的运行日志docker logs -f 容器名:实时查看指定容器的运行日志

容器操作相关参数:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

命令说明
--name指定容器名称:--name=容器名--name 容器名
-d后台运行
-p映射端口,宿主机端口:容器端口,例如:-p 3307:3306
-v挂载目录到本地,宿主机目录:容器目录,例如:-v /usr/local/nginx:/usr/local/nginx
--restart自动重启,例如:--restart=always,跟随docker服务的重启而重启

1.创建容器

docker create (--name=容器名) 镜像名,例如:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

docker create --name=mybusybox busybox

2.查看容器状态

docker ps -a  # 查看所有容器
docker ps -a | grep mybusybox  # 过滤查看指定容器
docker ps -l  # 查看最近操作的容器

通过create命令创建完成后的容器是"Created"状态的,可以通过start命令来启动容器文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html
docker用法整理:镜像、容器操作命令

3.启动容器

docker start mybusybox

4.进入容器

通过"docker exec -it 容器名 sh"命令进入容器内部,例如:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

docker exec -it mybusybox sh

5.运行容器

docker run = docker pull + docker create + docker start文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

docker run --name=mynginx -d -p 81:80 nginx

6.停止容器

docker stop 容器名或容器ID,例如:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

docker stop mybusybox
docker stop 6fbf5a7a580b

7.删除容器

docker rm 容器名或容器ID,删除前要先停止容器,例如:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

docker stop mybusybox
docker rm mybusybox
docker rm 6fbf5a7a580b

8.查看容器日志

  • docker logs 容器名或容器ID:以文件形式查看日志,类似 cat;
  • docker logs 容器名或容器ID:实时查看日志,类似 tail -f;

例如:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

docker logs sonic_sonic-server-controller_1
docker logs -f sonic_sonic-server-controller_1

9.基于已有容器构建为新的镜像模板

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html
docker用法整理:镜像、容器操作命令

用法:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

OPTIONS释义
-a标注作者信息
-c使用Dockerfile指令来生成镜像
-m提交说明信息,类似于git commit -m "xxxx"
-p在提交时,暂停容器

例如:当前有个需求,将当前服务器上正在运行的一个容器,无痕迁移到另一台服务器上运行。意味着需要执行以下步骤:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

将当前正在运行的容器构建为新的镜像A>>将新镜像A的镜像文件复制到另一台服务器或直接将镜像A提交到镜像仓库>>在另一台服务器上将镜像A从镜像仓库下载下来>>基于镜像A创建容器并运行文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

① 打包容器文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

为了便于演示,先将一个文件复制到已有容器内文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

docker cp jdk_install.sh mysql:/home

② 查看容器内文件文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

docker exec -it mysql sh

可以看到,已经将jdk_install.sh文件复制到了mysql容器的/home目录下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html
docker用法整理:镜像、容器操作命令

③ 基于容器构建新的镜像文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

docker commit -a "chenjigang" mysql new-mysql

通过"docker images"命令查看当前镜像列表,可以看到名为new-mysql的镜像:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html
docker用法整理:镜像、容器操作命令

④ 基于新镜像运行容器文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

docker run -d --name new-mysql-container -e MYSQL_ROOT_PASSWORD=123456 -p 3308:3306 new-mysql

⑤ 查看容器内文件文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

docker exec -it new-mysql-container sh

通过下图可以看出,之前复制到容器内的jdk_install.sh文件,已经保存到镜像中、并跟随出现在新的容器内:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html
docker用法整理:镜像、容器操作命令
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/30138.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/yunwei/30138.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定