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

Docker镜像制作---指令

Docker镜像制作

  1. 安装部署Harbor仓库

  2. 使用Dockerfile定制nginx,php,mysql的镜像

  3. 通过docker部署LNMP,wordpress应用采集案例

  4. 通过docker-compose实现多容器控制

  5. 构建私有网盘

1.harbor仓库的介绍

简洁的来说,

其实就是规模比较大的企业,建立的私有的镜像仓库方便自己公司内部的使用

harbor仓库的结构

  1. ui(Harbor的核心服务)
  2. log(运行reyslog容器,进行日志的收集)
  3. mysql(使用nginx做反向代理)
  4. registry(官方的DOCKER registry)
  5. adminserver(harbor的配置数据管理)
  6. jobservice(harbor的任务管理服务)
  7. redis(用于存储session)
  8. Notary (针对软件分发和跟新安全组件)

在这里插入图片描述

使用dockerfile定制镜像

1, dockerfile解释

Dockerfile是一个用来构建docker镜像的文本文件,文本内容包含了一条条镜像所需要构建的指令和说明,每一条指令构建一层,因此每一条指令的内容,就是描述该层是如何的构建。

在这里插入图片描述

编写一个简单的Dockerfile文件

1, 简单的编写一个Dockerfile文件
Dockerfile是一个文本文件,其中包含了一条条的指令,每一条指令构建一层,因此每一条的指令内容,就是描述该层是如何构建的。

FROM命令

所谓的定制化镜像,那一定是一个镜像为基础,在其上进行定制,就像我们之前运行的一个nginx镜像容器,再进行修改一样,镜像是必须被指定的,而FROM作用就是指定基础镜像,

因此FROM是Dockerfile的必备的指令

RUN命令

RUN 指令是用来执行命令的命令,RUN指令是在定制镜像时的最常用的指令。

如有多个命令不是可以,是定要用 && 这个符号区衔接下一个命令。

Dokcerfile中的额RUN指令就如同shell命令一样。

小练习

一共涉及两条指令,FROM,RUN

FROM nginx
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html

构建镜像

一般的文件名称都是Dockerfile

docker build -t test-nginx .
我们就可以看到镜像了

docker run -itd -p 888:80 test-nginx

在这里插入图片描述

dockerfile的基本语法

FROM ---> 基础镜像是谁

MANTAINER---> 告诉被人这个镜像是谁写的

RUN ------> 你想让这个镜像干什么

ADD-----> 你想往镜像中放那些文件

VOLUME-----> 你的数据目录的挂载

EXPOSE -----> 此镜像要打开的端口

RUN -----> 镜像要运行的服务(必须运行的一些命令)

copy 和 ADD命令

add命令要比copy命令用的比较多

ADD 指令的作用类似于 COPY 指令,但有一些差异。除了复制文件外,ADD 指令还可以执行额外的功能,如自动解压缩tar文件和URL下载等。

# 举个例子ADD myapp.tar.gz /usr/src/app.
把这个文件放到这个目录下

WORKDIR指令

# 相当于cd到这个目录,后续的操作都是在这个目录下进行WORKDIR /usr/src/app

VOLUME指令

把容器目录放到宿主机的目录下。

# 创建一个挂载点,也是防止忘记使用 -v的参数VOLUME ["/data"]

CMD指令

在Dockerfile中,CMD指令用于设置容器启动时默认执行的命令,每一个Docker镜像中建议只能有一个CMD的指令,会在容器启动时默认的执行

注意,如果你启动容器时新增加了命令,就会覆盖掉CMD的指令就不会执行CMD下的指令

# 一定使用的是双引号CMD ["可执行的文件","参数1","参数2"]

ENTRYPOINT指令

  • 在dockerfile中,ENTRYPOINT指令用于配置容器启动时默认执行的可执行的程序,
  • 容器启动时会运行且不会被覆盖掉,
  • 和CMD命令不同,ENTRYPOINT指令不会被docker run 命令中的任何命令被覆盖掉。
  • 最后,他始终是容器入口点的执行
# 语法ENTRYPOINT ["可执行的文件","参数1","参数2"]

EXPOSE指令

  • EXPOSE指令用于声明在容器运行时将要监听的端口,
  • 注意,EXPOSE仅仅是一个声明,他不会在宿主机上打开端口或者映射。
  • 他只是在构建镜像提供关于容器监听中的端口信息,在容器运行时,我们任然需要使用-p和-大P选项将容器内的端口映射到主机上。
#  EXPOSE语法EXPOSE 端口

USER指令

  • 一般的情况下我们是以root用户的形式去启动容器
  • USER就是换成一个普通的用户去执行,也就是降低权限
# 语法如下USER 用户名

ENV 指令

  • ENV 指令用于设置环境变量
  • 环境变量是在容器运行时可用键值对的新式,可以在容器内各个进程中使用,
# 语法ENV 变量名=值
变量名:环境变量的名称
值: 是相关联的值

下面是一个案例看看理解,和这每一步都是在干什么

在这里插入图片描述

私有网盘的搭建

# 网址https://github.com/filebrowser/filebrowser

这里的话我就不演示了,这里的Dockerfile写的已经很好的了,

大家只需要docker build -t name . 创建镜像ok

http://www.lryc.cn/news/573417.html

相关文章:

  • Qt输入数据验证的方法
  • rent8_wechat-最常用出租屋管理系统-微信小程序
  • 从零开发ComfyUI插件:打造你的AI绘画专属工具
  • 私有规则库:企业合规与安全的终极防线
  • C# 将 Enum枚举转成List,并显示在下拉列表中
  • LINUX621 NFS 同步 ;FTP;samba环境
  • 面试题-ts中的typeof
  • 面试题-把类型为b的值赋给类型为a的变量
  • Laravel 项目中图片上传后无法访问的问题
  • SQL关键字三分钟入门:INSERT INTO —— 插入数据详解
  • Python实现MySQL建表语句转换成Clickhouse SQL
  • 【格与代数系统】偏序关系、偏序集与全序集
  • 2048小游戏C++板来啦!
  • 【Docker基础】Docker镜像管理:docker rmi、prune详解
  • 竞业限制协议能单独充当商业秘密的 “保护伞” 吗?
  • docker执行yum报错Could not resolve host: mirrorlist.centos.org
  • python web开发-Flask 蓝图(Blueprints)完全指南
  • 【Docker 08】Compose - 容器编排
  • C#测试调用EPPlus根据批注设置excel单元格内容
  • JavaEE初阶第三期:解锁多线程,从 “单车道” 到 “高速公路” 的编程升级(一)
  • 【开源项目】当大模型推理遇上“性能刺客”:LMCache 实测手记
  • linux安装minio并使用
  • 在Docker、KVM、K8S常见主要命令以及在Centos7.9中部署的关键步骤学习备存
  • XCUITest + Objective-C 详细示例
  • FastGPT:开启大模型应用新时代(4/6)
  • Springboot 配置 FastJson 替换 Jackson
  • Rabbitmq集成springboot,手动确认消息basicAck、basicNack、basicReject的使用
  • 在 MyBatis 的xml中,什么时候大于号和小于号可以不用转义
  • Axios 在 Vue3 项目中的使用:从安装到组件中的使用
  • 升级到 .NET 9 分步指南