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

docker 学习笔记

Docker 三要素

镜像(Images)

  • 定义:只读模板,用于创建Docker容器。
  • 特点:一个镜像可以创建多个容器。

容器(Containers)

  • 定义:独立运行的一个或一组应用。
  • 特点:用镜像创建的运行实例,每个容器都是相互隔离的。

仓库

  • 定义:集中存放镜像文件的地方。
  • 分类:公开仓库和私有仓库。
  • 最大公开仓库:Docker Hub (https://hub.docker.com)
  • 仓库与仓库注册服务器的区别
    • 仓库注册服务器:放置多个仓库,每个仓库中包含多个镜像,每个镜像有不同的标签。

阿里云镜像加速

设置本机Docker加速配置
  1. vim /etc/docker/daemon.json

  2. 把阿里云中的配置案例复制下来,修改其中的配置信息:

    { "registry-mirrors": ["复制的个人加速地址"] }
    
  3. 重新加载:systemctl daemon-reload

  4. 重启Docker:systemctl restart docker

  5. 查看Docker在本机的进程信息:ps -ef|grep docker

Docker 命令

帮助命令

  • docker version
    • 说明:查看Docker版本。
  • docker info
    • 说明:查看Docker信息。
  • docker --help
    • 说明:查看Docker的帮助。

镜像命令

  • docker images
    • 说明:查看本地所有镜像。
    • 参数
      • -a: 列出所有镜像(包括中间映像层)。
      • -q: 只显示镜像ID。
      • --digests: 显示镜像的摘要信息。
      • --no-trunc: 显示完整镜像信息。
  • docker search [参数] 镜像名
    • 说明:查询镜像。
    • 参数
      • -s: 收藏数不小于指定值的镜像。
      • --automated: 只列出automated build类型的镜像。
      • --no-trunc: 显示完整镜像信息。
  • docker push 镜像名[:TAG]
    • 说明:下载镜像。
  • docker rmi [参数] 镜像名1[:TAG] 镜像名2[:TAG]...
    • 说明:删除一个或多个镜像。
    • 参数
      • -f: 强制删除。
  • docker rmi [参数] $(docker images -qa)
    • 说明:删除全部镜像。
    • 参数
      • -f: 强制删除。

基本操作

  • docker inspect 镜像名
    • 说明:查看镜像名的配置。
  • docker start [-i] 镜像名
    • 说明:启动镜像,-i参数是以交互式启动。
  • docker attach 镜像名
    • 说明:进入正在运行的镜像。
  • netstat -anp | grep 端口号
    • 说明:查看端口占用。

守护式进程

  • 运行
    • docker run -i -t 镜像名 /bin/bash
    • Ctrl+p Ctrl+q: 退出交互式容器,但后台还继续运行。
  • 查看运行镜像中的进程
    • docker top 镜像名
  • 在运行的镜像中启动新进程
    • docker exec [-d] [-i] [-t] 镜像名 [command] [arg....]
  • 停止守护容器
    • docker stop 镜像名
    • docker kill 镜像名

容器端口映射

  • docker run [-P|-p] -i -t 镜像名
    • -P: publish-all=true | false (默认) 暴露所有端口。
    • -p: publish=[] 指定端口映射。
      • 格式:
        • 指定容器端口:docker run -p 端口号 -i -t 镜像名 /bin/bash
        • 主机端口:容器端口:docker run -p 主机端口:容器端口 -i -t 镜像名 /bin/bash
        • IP地址::容器端口:docker run -p IP地址::容器端口 -i -t 镜像名 /bin/bash
        • IP地址:主机端口:容器端口:docker run -p IP地址:主机端口:容器端口 -i -t 镜像名 /bin/bash

其他常用命令

  • docker run [参数] 镜像名 [command] [arg...]
    • option
      • --name="容器新名字":为容器指定一个名称。
      • -d:后台运行容器,并返回容器ID,启动守护式容器。
      • -i:以交互式模式运行容器,通常与-t同时使用。
      • -t:为容器重新分配一个伪输入终端,通常与-i使用。
      • -P:随机端口映射,通常与-t使用。
      • -p:指定端口映射。
  • Ctrl p + q: 退出容器,但后台继续运行容器。
  • exit: 退出容器,容器停止运行。
  • docker kill 容器名称
    • 说明:强制停止容器的运行。
  • docker logs -f -t --tail 容器id
    • 说明:查看容器运行日志。
    • -f:跟随最新的日志打印。
    • -t:加入时间戳。
    • --tail:数字,显示最后多少条。
  • docker top 容器id
    • 说明:查看容器内运行的进程。
  • docker inspect 容器id
    • 说明:查看容器内部细节。
  • docker attach 容器id
    • 说明:直接进入容器启动命令的终端,不会启动新的进程。
  • docker exec -it 容器id bash shell
    • 说明:在容器中打开新的终端,并启动新的进程。
  • docker cp 容器id:容器内路径 目的主机的路径
    • 说明:从容器中拷贝文件到主机上。

Docker 镜像

  • 联合文件系统
    • 特性:分层,轻量级高性能的文件系统,对文件系统的修改作为一次提交来一层层的叠加。
    • 一次同时加载多个文件系统。
    • 镜像都是只读的。
  • docker commit [参数] 镜像id 要创建的目标镜像名:[标签名]
    • 说明:提交容器副本使之成为一个新的镜像。
    • 参数
      • -m: 提交的描述信息。
      • -a: 作者。
    • 示例docker commit -a="zhangxiaosan" -m="it is tomcat which is haven't doct" e9bd0c5f0a37 zhangxiaosan/tomcat:9

Docker 容器数据卷

  • 功能:做数据持久化+容器数据共享。
  • 命令docker run -it -v /主机绝对路径目录:/容器内目录:[权限] 镜像名
    • 权限
      • ro: read only 只读。
      • wo: write only 只写。

DockerFile

  • 定义:镜像的构建文件,是由命令和参数组成的脚本。
  • 构建镜像docker build -f Dockerfile所在目录 -t 构建的镜像标识/构建的镜像名
    • 示例:docker build -f /mydocker/Dockerfile -t zhangxiaosan/myDockerfileDemo1
  • DockerFile解析过程
    • 注意事项:
      • 每条保留字指令必须为大写且之后跟有至少一个参数。
      • 指令从上往下顺序执行。
      • # 表示注解。
      • 每条指令都会创建一个新的镜像层,并对镜像进行提交。
    • 解析过程:
      • Docker从基础镜像运行一个容器。
      • 执行一条指令并对容器进行修改。
      • 执行类似的docker commit的操作提交一个新的镜像层。
      • Docker再基于刚提交的镜像运行一个新的容器。
      • 执行DockerFile中的下一条指令,直到所有的指令都执行完成。

Dockerfile 保留字指令

FROM

  • 定义:基础镜像,当前新的镜像是基于哪个镜像。

MAINTAINER

  • 定义:镜像维护者的姓名和邮箱。

RUN

  • 定义:容器构建时需要运行的命令。

EXPOSE

  • 定义:当前容器暴露的端口号。

WORKDIR

  • 定义:指定容器创建后,终端登录进来的工作目录。
  • 默认:未指定时工作目录为根目录。

ENV

  • 定义:用来在构建镜像过程中设置的环境变量。

ADD

  • 定义:将宿主机目录下的文件拷贝到镜像。
  • 特点:ADD命令会自动处理URL和解压tar压缩包。

COPY

  • 定义:类似ADD,拷贝文件或目录到镜像中。
  • 用法
    • 方式1: COPY src dest
    • 方式2: COPY ["src", "dest"]

VOLUME

  • 定义:容器数据卷,用于保存数据和持久化工作。

CMD

  • 定义:指定一个容器启动时需要运行的命令。
  • 特点:Dockerfile中可以有多个CMD指令,但只有最后一个生效;CMD会被docker run之后的参数替换。

ENTRYPOINT

  • 定义:指定一个容器启动时需要运行的命令。
  • 特点:与CMD类似,可以有多个,但是不会像CMD被docker run之后的参数替换,而是被追加。

ONBUILD

  • 定义:当构建一个被继承的Dockerfile时运行命令。
  • 特点:父镜像在被子镜像继承之后父镜像的ONBUILD被触发。

构建自定义的Dockerfile镜像

  • 命令docker build -f DockerFile路径 -t 新镜像名:标签版本 .
    • 说明:末尾的点.代表当前的路径。
    • 示例docker build -f DockerFile_MyCenterOS -t mycenteros:1.0 .

案例1:自定义CentOS

Dockerfile FROM centos
# 设置环境变量
ENV MYPATH /tmp
# 设置默认工作目录
WORKDIR $MYPATH
# 运行安装vim和net-tools
RUN yum -y install vim RUN yum -y install net-tools
# 暴露端口
EXPOSE 80
CMD ["/bin/bash"]

容器间数据共享

  • 命令docker run -it --name 容器1别名 --volumes-from 容器2别名 容器2
docker run -it --name 容器1别名 --volumes-from 容器2别名 容器2
  • 说明:实现数据共享。
  • 示例
    • 容器2,3继承容器1。
    • 删除容器1,容器2,3数据依然存在,且容器2,3数据依然共享。

http://www.kler.cn/news/306459.html

相关文章:

  • 【详细原理】蒙特卡洛树搜索
  • 财富通公司开发洗车小程序有哪些用处?
  • 通过load->model()加载数据模型:在爬虫中实现动态数据处理
  • MySQL 变量查询如何使用索引
  • 用户体验在网站建设中的重要性
  • 下载chromedriver驱动
  • CesiumJS+SuperMap3D.js混用实现可视域分析 S3M图层加载 裁剪区域绘制
  • EmguCV学习笔记 VB.Net 11.5 目标检测
  • 浪潮信息首推3秒智能控温!告别服务器开机噪音
  • 设计师福音:CleanClip 如何提升创意工作效率
  • 网络安全宣传周 | DNS安全威胁与应对措施分享
  • 数据管理生态的核心解析:数据库、数据仓库、数据湖、数据平台与数据中台的关系与实现
  • uniapp在开发app时上传文件时的问题
  • 配置RHEL和centOS的阿里云镜像源
  • Python--常见的数据格式转换
  • 安卓获取apk的公钥,用于申请app备案等
  • Windows 11上pip报‘TLS/SSL connection has been closed (EOF) (_ssl.c:1135)‘的解决方法
  • MySQL一:在Ubuntu下安装MySQL数据库
  • UAC2.0 麦克风——单通道 USB 麦克风
  • C++部分题目解析
  • 基于ssm+vue+uniapp的智能停车场管理系统小程序
  • Chrome 本地调试webrtc 获取IP是xxx.local
  • SQL进阶技巧:火车票相邻座位预定一起可能情况查询算法 ?
  • 喜报 | 知从科技荣获 “AutoSec 安全之星 - 优秀汽车软件供应链安全方案奖”
  • Qt:Q_GLOBAL_STATIC实现单例(附带单例使用和内存管理)
  • 有了数据中台,是否需要升级到数据飞轮?怎么做才能升级到数据飞轮?
  • 并行编程实战——TBB中的Task
  • C++的内存分布
  • FastAPI与环境变量:实现无缝切换与高效运维
  • Python操作MySQL