欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > Docker镜像制作---指令

Docker镜像制作---指令

2025/6/22 22:29:17 来源:https://blog.csdn.net/2403_89688685/article/details/148816562  浏览:    关键词: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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词