网站首页 > 博客文章 正文
系列文章将包含(打钩的为本次章节内容):
- docker 简介
- docker 安装与启动
- docker 常用操作命令 ?
- docker 使用技巧
- docker 一键快速搭建环境
- dockerfile 定制镜像
- docker-compose 容器编排
- docker 公有及私有化镜像仓库
- docker 可视化管理工具-dockerUI
一、镜像操作命令
命令 | 说明 |
pull | 拉取镜像 |
search | 搜索相关镜像 |
tag | 重命名镜像 |
rmi | 删除镜像 |
images 或 image ls | 查看所有镜像 |
build | 基于Dockerfile构建镜像 |
commit | 基于已有容器构建镜像 |
1.拉取镜像
使用"docker pull 镜像名称",拉取远程仓库的镜像到本地(先校验本地是否存在,本地不存在时再默认从官网拉取最新版本的镜像)
以busybox为例:
BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例grep、find、mount以及telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 Linux 系统的自带的shell。
docker pull busybox # 拉取镜像
在拉取镜像前,也可以通过docker search命令搜索不同类型的镜像
docker search busybox # 搜索相关镜像
2.查看镜像
使用 "docker image ls" 或 "docker images" 命令查看本地已经存在的镜像
docker images # 查看所有镜像
docker images | grep busybox # 查看指定镜像
3.修改镜像名称
使用 "docker tag 原始镜像名称 新名称" 命令重命名镜像,如:docker tag busybox:latest mybusybox:V1.0,重命名镜像会新增一条镜像,相当于创建了一个副本,但ID相同。
docker tag busybox:latest mybusybox:V1.0
4.删除镜像
使用 "docker rmi 镜像名称" 命令删除无用镜像,通过镜像名称删除,只会删除指定名称的镜像;通过镜像ID删除,会删除所有ID相同的镜像。
docker rmi mybusybox:V1.0
docker rmi -f ff4a8eb070e1
二、容器操作命令
容器操作命令:
命令 | 说明 |
create | 创建容器 |
run | 运行容器,run = pull + create + start |
exec...-it...sh | 进入容器内部 |
start | 启动容器 |
restart | 重启容器 |
stop | 停止容器 |
rm | 删除容器 |
commit | 基于已有容器构建镜像 |
ps | 查看容器状态:
|
logs | 查看容器日志:
|
容器操作相关参数:
命令 | 说明 |
--name | 指定容器名称:
|
-d | 后台运行 |
-p | 映射端口,宿主机端口:容器端口,例如:
|
-v | 挂载目录到本地,宿主机目录:容器目录,例如:
|
--restart | 自动重启,例如:
|
1.创建容器
docker create (--name=容器名) 镜像名,例如:
docker create --name=mybusybox busybox
2.查看容器状态
docker ps -a # 查看所有容器
docker ps -a | grep mybusybox # 过滤查看指定容器
docker ps -l # 查看最近操作的容器
通过create命令创建完成后的容器是"Created"状态的,可以通过start命令来启动容器
3.启动容器
docker start mybusybox
4.进入容器
通过"docker exec -it 容器名 sh"命令进入容器内部,例如:
docker exec -it mybusybox sh
5.运行容器
docker run = docker pull + docker create + docker start
docker run --name=mynginx -d -p 81:80 nginx
6.停止容器
docker stop 容器名或容器ID,例如:
docker stop mybusybox
docker stop 6fbf5a7a580b
7.删除容器
docker rm 容器名或容器ID,删除前要先停止容器,例如:
docker stop mybusybox
docker rm mybusybox
docker rm 6fbf5a7a580b
8.查看容器日志
- docker logs 容器名或容器ID:以文件形式查看日志,类似 cat;
- docker logs 容器名或容器ID:实时查看日志,类似 tail -f;
例如:
docker logs sonic_sonic-server-controller_1
docker logs -f sonic_sonic-server-controller_1
9.基于已有容器构建为新的镜像模板
用法:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
参数 | 说明 |
-a | 标注作者信息 |
-c | 使用Dockerfile指令来生成镜像 |
-m | 提交说明信息,类似于git commit -m "xxxx" |
-p | 在提交时,暂停容器 |
例如:当前有个需求,将当前服务器上正在运行的一个容器,无痕迁移到另一台服务器上运行。意味着需要执行以下步骤:
将当前正在运行的容器构建为新的镜像A>>将新镜像A的镜像文件复制到另一台服务器或直接将镜像A提交到镜像仓库>>在另一台服务器上将镜像A从镜像仓库下载下来>>基于镜像A创建容器并运行
① 打包容器
为了便于演示,先将一个文件复制到已有容器内
docker cp jdk_install.sh mysql:/home
② 查看容器内文件
docker exec -it mysql sh
可以看到,已经将jdk_install.sh文件复制到了mysql容器的/home目录下:
③ 基于容器构建新的镜像
docker commit -a "chenjigang" mysql new-mysql
通过"docker images"命令查看当前镜像列表,可以看到名为new-mysql的镜像:
④ 基于新镜像运行容器
docker run -d --name new-mysql-container -e MYSQL_ROOT_PASSWORD=123456 -p 3308:3306 new-mysql
⑤ 查看容器内文件
docker exec -it new-mysql-container sh
通过下图可以看出,之前复制到容器内的jdk_install.sh文件,已经保存到镜像中、并跟随出现在新的容器内:
猜你喜欢
- 2025-01-09 Kubernetes(k8s)pod详解
- 2025-01-09 「Docker」命令使用大全,全集一览
- 2025-01-09 Docker:关于 Dockerfile 编写优化的一些笔记整理
- 2025-01-09 第6课 Kubernetes之深入掌握Pod机制及应用
- 2025-01-09 Docker 大势已去,Podman 即将崛起
- 2025-01-09 Docker 47 个常见故障的原因和解决方法
- 2025-01-09 Web即终端——基于GoTTY,ttyd通过Web共享终端
- 2025-01-09 K8S Pod 的生命周期
- 2025-01-09 如何管理distroless容器
- 2025-01-09 Cloudflare代理docker镜像仓库的两种方式
你 发表评论:
欢迎- 367℃用AI Agent治理微服务的复杂性问题|QCon
- 359℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 358℃初次使用IntelliJ IDEA新建Maven项目
- 351℃Maven技术方案最全手册(mavena)
- 348℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 346℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 345℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 342℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)