当前位置: 首页 > news >正文

Docker补充

目录
  • Docker实际应用
    • docker 管理
      • 镜像操作
      • 容器操作
    • Dockerfile
      • 命令学习
  • 一些Docker的图解

Docker实际应用

docker 管理

镜像操作

  • 搜索对应镜像
docker serarch xxx
  • 查看现有镜像
docker images 
docker images ls
docker images image_name # 也可以直接查找镜像名
  • 拉取镜像
docker pull xxx  # 默认default版本docker pull xxx:xxx # 可以冒号后面指定版本号
  • 镜像配置文件路径(该文件内容是用的json格式数据)
docker info  # docker信息,包含了路径
一般情况下在 /var/lib/docker 下
docker info | grep root # 不确定的话可以直接查看对应数据存放的目录

可以接着去看该目录下对应的内容,下图直接告诉你存放docker镜像配置文件的具体位置

# 查看镜像的信息
docker images inspect 镜像id
  • 删除镜像
docker rmi 镜像名字# 删除所有镜像, 参数a就是显示所有镜像,q就是只显示镜像id,所以列出来后再进行rmi就很方便了
docker rmi `docker images -aq`

这里删除的时候可能会因为容器被挂起了,或者容器被使用过无法删除镜像,这里需要找到对应的容器删除,那删除容器后面会讲

  • 导入/导出镜像
 # 导出docker save nginx:latest -o docker_nginx_latest.tar.gzdocker save nginx > /opt/docker_nginx_latest.tar.gz# 导入docker load -i docker_nginx_latest.tar.gz
  • 当前状态保存为一个新的镜像
# commit 命令
OPTIONS说明:-a :提交的镜像作者。-c :使用 Dockerfile 指令来创建镜像。-m :提交时的说明文字。-p :提交镜像前暂停容器(默认为 true)。将名为 my_container 的容器保存为一个名为 my_new_image 的新镜像
指定标签: docker commit my_container my_new_image:latest
  • 给镜像打标签
通过为镜像打标签,可以使用更容易记忆的名字或版本号来标识和管理镜像
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]- SOURCE_IMAGE[:TAG]: 源镜像名称和标签,标签默认为 latest。- TARGET_IMAGE[:TAG]: 目标镜像名称和标签,标签默认为 latest。

容器操作

  • 运行容器
docker run nginx:xxx# 也可以在运行容器的时候执行一个命令
docker run nginx:xxx ping baidu.om
# 上述中运行了一个容器,容器运行了ping biadu.com,所以当你终止ping baidu.com 的时候这个容器也就终止了# 参数-i 交互模式  参数-t开启一个终端
docker run -it nginx:xxx bash
# 上面这个就是运行nginx的时候进入一个交互模式,并且运行一个命令bash,因为你bash才能交互,# 上面的都是:如果你中断了该进程比如ping 或者 你进入的那个bash交互,中断了之后容器也终止了
# 那我们就需要另一个参数 -d 在后台运行容器
docker run -d nginx:xxx ping biaud.com
如下图所示一:command中就是你运行的命令,当然具体情况看你执行了什么

  • 指定容器运行的名字
docker run -d --name xxx nginx:xxx
  • 容器启动
docker start 容器名/容器id
  • 停止容器
docker stop 容器名/容器id
  • 删除容器
docker rm 容器名/容器id
  • 查看某个容器的日志
# 查看该容器的所有日志,注意:会显示非常多
docker logs 容器id# 监听日志参数 -f
docker logs -f 容器id
  • 查看已有容器
docker ps# 查看不管挂掉还是停止了的容器
docker ps -aq
  • 查看容器详细信息
# 这个依旧是json数据,显示容器的具体详细信息
docker container inspect 容器id
  • 容器端口映射
# 这里就是物理机的84端口与容器内的80端口映射
# 也就是说你物理机访问84端口就可以访问到容器的80端口
docker run -p 84:80 nginx# 实际情况中当然还要结合其他参数,比如-d后台执行,--name 指定容器的名字 等等

Dockerfile

Dockerfile文件,可以通过docker build . 来构镜像

这个就是当你有这个Dockerfile文件后,你通过这个命令能够根据你这个文件的配置去构建一个镜像

命令学习

  • FROM
从现有镜像指定一个作为基础先去本地看是否存在该镜像,若有就直接使用,若没有则需要去仓库中在线下载
  • RUN
从你这个镜像中,你希望运行一个容器后他要做什么
  • ADD <物理机的源目标/URL> <容器的目录目标>
添加宿主机的文件到容器内
ADD 添加进容器, 若源文件为 tar 压缩文件的话,压缩格式为 gzip, bzip2 以及 xz 的情况下,会自动复制并解压到目标路径若ADD指定的是一个URL,则会去下载然后放到目标目录中

  • COPY
和ADD功能差不多,但官方推荐使用这个,因为这个单单只是复制仅此而已,不会对什么压缩包额外进行解压之类操作
  • WORKDIR
类似CD,就是在创建容器后,进入的目录的位置
在你配置Dockerfile的时候,可能需要切换目录去做一些操作,那这个就类似cd
这也就是为什么上面所说有的容器进入的时候,发现他的默认目录不一样,这是因为写Dockerfile的那个人可能用这个切换了目录去做一些事情,也有可能希望用户默认进入的目录是某个目录等等
  • VOLUME
挂载,就是类似vmware的目录映射,将物理的某个目录映射到容器内的某个目录
当你访问容器内那个目录的时候就相当于访问映射的那个物理机的目录这个更多的作用是:确保应用产生的数据不写入应用层,而是将数据写入到我们的物理机中想要存储的位置,所以我们就可以用VOLUME还有一个方式是当你run的时候,指定参数-v指定目录挂载

当你构建了一个镜像后,且运行了一个该镜像的容器后可以通过docker inspect 容器id来查看你挂载的目录在哪,下面这个就是自动指定的一个物理机中的目录,你VOLUME指定的是容器中哪个目录

  • CMD ["参数1", "参数2"]
    该命令不允许在run的时候额外传入参数,所以这就需要后面学习的ENTRYPOINT命令
比如我们docker run -it nginx bash中最后一个bash就是我们进入容器执行的一个命令
若不指定,那就是默认我们写的dockerfile中构建的这个容器的配置中写的这个CMD了
所以该CMD的作用就是默认你进入容器的命令例子:
CMD ["cat", "/etc/passwd"]  # 这个就是等于正常的cat /etc/passwd
CMD ["/bin/bash"]
  • ENTRYPOINT
简单点直接看例子:
Dockerfile重新修成下面这样
------------
FROM nginxENTRYPOINT ["nginx", "-c"] # 定参
CMD ["/etc/nginx/nginx.conf"] # 变参------------当你run的时候就可以传参了:docker run  nginx:test -c /etc/nginx/new.conf
这个可不是重新传入一个新命令哈,这个是重新传入-c参数并指定新的一个conf文件进去
(容器内会默认运行以下命令,启动主进程(/etc/nginx/new.conf:假设容器内已有此文件)
  • EXPOSE
EXPOSE <端口1> [<端口2>...]仅仅只是声明端口,不会作用于你实际的映射端口(除非你使用随机映射参数-P的时候才会起到帮忙随机你指定的端口)
- 帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射。
- 在运行时使用随机端口映射时,也就是 docker run -P 时,会自动随机映射 EXPOSE 的端口。

理解:
EXPOSE 指令是声明容器运行时提供服务的端口,这只是一个声明,在容器运行时并不会因为这个声明应用就会开启这个端口的服务。在 Dockerfile 中写入这样的声明有两个好处,一个是帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射;另一个用处则是在运行时使用随机端口映射时,也就是 docker run -P 时,会自动随机映射 EXPOSE 的端口。

  • ENV/ARG
ENV 在构建镜像和容器运行的时候都可以找得到能使用
ARG 只在构建镜像的时候能用,容器跑起来的时候找不到不能用
  • User
    切换用户
USER root
USER test
  • MAINTAINER
维护者信息(可选)

一些Docker的图解

看视频课过程中截图下来的一些图解

这里主要要注意增删的时候都是只在容器层处理,基础镜像这些不会被改变,只做记录,这是为了保证你这个镜像image可以启动多个容器而不会因为某个容器修改导致其他容器想要使用的时候镜像被修改了


现阶段我个人所需的且能用到的就这些,后续可能会有更多的补充内容。

http://www.hskmm.com/?act=detail&tid=35779

相关文章:

  • 【QNX】Socket ServerClient 源代码
  • arp 断网小实验
  • 2025 年箱变压器厂家最新推荐榜单:涵盖非晶合金铁心、三相、矿用等多类型设备,助力采购方精准筛选优质合作企业
  • 从“人防”到“智防”:EasyCVR+煤矿AI智能分析一体机重塑矿山安全监管模式
  • 从Java工程师到AI工程师,我花了6个月的转型经验分享
  • 2025 年最新推荐配电柜源头厂家口碑排行榜:聚焦高压智能防爆等多类型产品,精选实力品牌助企业采购高压/智能/抽屉式/照明/防爆配电柜厂家推荐
  • 2025南京鑫铭机械厂家推荐:精密钣金加工与天文台圆顶定制专家
  • 2025年氢氧化镁厂家推荐排行榜,矿石氢氧化镁,水镁石氢氧化镁,阻燃剂氢氧化镁,改性氢氧化镁源头企业实力解析
  • vue控制页面不能复制
  • 开源能源管理系统 MyEMS:赋能企业降本增效,加速能源数字化转型
  • 2025工业臭氧检测仪实力厂家推荐,逸云天电子专业提供多场景精准监测方案
  • FMC学习笔记
  • MyEMS:赋能高效能源管理的核心工具
  • 2025 年最新推荐!国内优质充电桩厂家排行榜,助您精准挑选适配性强、安全高效的充电设备电车/智能/新能源/电动车充电桩厂家推荐
  • 优惠券测试用例
  • 2025工装定制实力厂家推荐:贵格服饰专注防静电工装与POLO衫定制
  • 2025 年物流公司最新推荐排行榜:覆盖多线路运输,精选优质品牌助您高效选择
  • 2025潮流服饰实力厂家推荐,COVERNAT乐酷天打造品质穿搭新选择
  • 2025 年太阳能厂家最新推荐:企业综合实力测评榜单,含热水 / 发电 / 光伏系统等全品类服务商彩图发电系统 / 分户储水系统 / 分户计量系统公司推荐
  • 2025铝单板厂家推荐杰兰斯装饰,专注异形冲孔雕花定制!
  • vscode(Visual Studio Code) 下载安装及简单使用
  • 【OpenCV】13 特征检测、匹配与图像查找
  • 2025视频号运营实力推荐:青海云动时空数据公司专业代运营服务商
  • windows本地jenkins打包部署远端服务
  • 生成式AI购物助手Rufus的技术架构解析
  • 2025东莞品之豪金属制品推荐:CNC精密加工源头厂家,多行业定制专家
  • 详解ROMA中复杂图表的渲染实现
  • 前端部署新方案-技术篇(总体架构设计)
  • 2025气柱袋优质厂家推荐昆山戈尔德,专业缓冲包装定制生产厂家
  • 2025数控滚齿机实力厂家推荐,无锡吉莱特智能装备高精度定制!