侧边栏壁纸
博主头像
再见理想博主等级

只争朝夕,不负韶华

  • 累计撰写 112 篇文章
  • 累计创建 64 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

Docker基操-构建镜像

再见理想
2022-05-25 / 0 评论 / 0 点赞 / 392 阅读 / 1,074 字

可以使用 docker commit 命令构建镜像,更推荐用 DockerFile 构建 。

一,使用 docker commit 命令构建

# 命令
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
Options:
  -a, --author string    作者
  -c, --change list      使用 Dockerfile 指令来创建镜像
  -m, --message string   提交信息
  -p, --pause            在 commit 时,将容器暂停

# 使用示例
docker commit -a="lzh" -m="test commit" mysql mysql_lzh:1.0

二,使用 DockerFile 构建

DockerFile 构建文件定义了构建镜像一切的步骤、源代码;Docker 镜像逐渐成为企业交付的标准,必须要掌握。DockerImages 则是通过 DockerFile 构建生成的镜像,是最终发布和运行的产品。

目的:通过 dockerfile 构建项目的镜像,而不是提供一个 jar 包。

构建步骤

  1. 编写一个 dockerfile 文件;
  2. docker build 命令构建成一个镜像:注意命令最后有 .;
    1. 命令:docker build -t -f dockerfile路径 镜像名:[tag] .
    2. 使用示例:docker build -t mysql-lzh:1.0 .
  3. docker run 运行镜像;
  4. docker push 发布镜像(可发布到 DockerHub 或 阿里云镜像中心)

基础知识

  1. 每个保留关键字(指令)都必须是大写字母;
  2. 执行从上至下顺序执行;
  3. 每一个指令都会创建提交一个新的镜像层,并提交!

Dockerfile 指令

Dockerfile 每个保留关键字(指令)都必须是大写字母,指令从上至下顺序执行,每一个指令都会创建提交一个新的镜像层,并提交!

FROM            #基础镜像,一切从这里开始
MAINTAINER      #镜像是谁写的,姓名+邮箱
RUN             #镜像构建的时候需要执行的命令
ADD             #添加内容,
WORKDIR         #镜像的工作目录
VOLUME          #卷挂载的目录
EXPOSE          #暴漏端口配置,与docker run -p 宿主机端口:容器内端口 效果一样
CMD             #指定这个容器启动的时候要运行的命令,只有最后一个会生效
ENTRYPOINT      #指定这个容器启动的时候执行的命令
ONBUILD         #当构建一个被继承的DockerFile时,会运行ONBUILD的指令,触发指令
COPY            #类似于ADD,将我们文件拷贝到镜像中
ENV             #构建的时候设置环境变量

FROM:基础镜像,一切从这里开始构建;

FROM centos

MAINTAINER:镜像的谁写的,姓名+邮箱;

MAINTAINER lzh<lzh@qiyls.cn>

ADD:添加内容。添加压缩包会自动解压;

# 命令
ADD 文件名 容器路径

# 使用示例
# 添加压缩包并自动解压
ADD jdk-8u191-linux-x64.tar.gz /usr/local/

COPY:类似ADD,将文件拷贝到镜像中;

# 命令
COPY 文件名 容器路径

# 使用示例
COPY readme.txt /usr/local/readme.txt

RUN:镜像构建时候需要运行的命令,可用作安装一些基本命令;

# 装一些基本命令
RUN yum -y install vim

VOLUME:挂载在主机的目录;

VOLUME ["/java"]

ENV:构建的时间设置环境变量;

# 配置本地环境
ENV MYPATH /usr/local
# 配置环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_191
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.22
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.22
ENV PATH  $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

WORKDIR:镜像的工作目录。进入容器时默认的路径;

# 配置本地工作目录
WORKDIR $MYPATH

EXPOSE:指定暴露端口;跟 -p 命令作用一样;

# 开放端口
EXPOSE 8080

CMD:指定容器启动的时候要运行的命令,在执行 run 时追加的命令会替换 DockerFile中 CMD 的命令;

# 启动tomcat
CMD /usr/local/apache-tomcat-9.0.22/bin/startup.sh && tail -f /usr/local/apache-tomcat-9.0.22/logs/catalina.out

ENTRYPOINT:指定容器启动的时候要运行的命令,在执行 run 时追加的命令会追加在 DockerFile中 CMD 的命令后面;

USER:设置运行 RUN CMD ENTRYPOINT的用户名;

ARG:定义外部变量,构建镜像可以使用 build-arg=的格式传递参数;

ONBUILD:当构建一个被继承 DockerFile 时会触发运行 ONBUILD 指令;

0

评论区