可以使用 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 包。
构建步骤
- 编写一个 dockerfile 文件;
- docker build 命令构建成一个镜像:注意命令最后有 .;
- 命令:docker build -t -f dockerfile路径 镜像名:[tag] .
- 使用示例:docker build -t mysql-lzh:1.0 .
- docker run 运行镜像;
- docker push 发布镜像(可发布到 DockerHub 或 阿里云镜像中心)
基础知识
- 每个保留关键字(指令)都必须是大写字母;
- 执行从上至下顺序执行;
- 每一个指令都会创建提交一个新的镜像层,并提交!
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 指令;
评论区