DockerFile
DockerFile介绍
dockerfile是用来构建docker镜像的文件!命令参数脚本!
构建步骤:
1、编写一个dockerfile文件
2、docker build构建成为一个镜像
3、docker run运行
4、docker push 发布镜像 (DockerHub 阿里云镜像仓库)
FROM scratch
ADD centos-7-x86_64-docker.tar.xz /
LABEL \
org.label-schema.schema-version="1.0" \
org.label-schema.name="CentOS Base Image" \
org.label-schema.vendor="CentOS" \
org.label-schema.license="GPLv2" \
org.label-schema.build-date="20201113" \
org.opencontainers.image.title="CentOS Base Image" \
org.opencontainers.image.vendor="CentOS" \
org.opencontainers.image.licenses="GPL-2.0-only" \
org.opencontainers.image.created="2020-11-13 00:00:00+00:00"
CMD ["/bin/bash"]
官方镜像包比较简单 很多时候需要自己做镜像。
DockerFile构建过程
基础知识:
1、每个保留关键字必须是大写字母
2、执行从上到下
3、# 表示注释
4、每一个指令都属于镜像层
DockerFile相对简单,成为企业交付的标准。
DockerFile指令
| 指令 | 描述 | 备注 |
|---|---|---|
| FROM | 基础镜像 | centos |
| MAINTAINER | 作者 | ljchengx |
| RUN | 编译镜像时运行的脚本 | |
| ADD | 编译镜像时复制文件到镜像中 | 类似于tomcat压缩包 |
| WORKDIR | 镜像的工作目录 | |
| VOLUME | 设置容器的挂载卷 | |
| EXPOSE | 设置镜像暴露的端口 | |
| CMD | 设置容器的启动命令 | 只有最后一个生效 |
| ENTRYPOINT | 设置容器的启动命令 | 可追加 |
| ONBUILD | 设置镜像的ONBUILD指令 | |
| COPY | 将文件拷贝在镜像中 | |
| ENV | 构建时设置环境变量 |
实战测试
FROM scratch # DockerHub中 大多数镜像 基于scratch
创建一个centos
# 编写文件
FROM centos
MAINTAINER ljchengx<759990553@qq.com>
ENV MYPATH /usr/local #设置默认工作目录
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "--end--"
CMD /bin/bash
# 构建镜像
docker build -f mydockerfile -t mycentos:0.1 .
# 测试运行
# 启动
[root@VM-0-11-centos dockerfile]# docker run -it mycentos:0.1
vim 指令 ifconfig指令都可用
查看docker镜像构建历史
实战:制作Tomcat镜像
1、准备镜像文件 tomcat 压缩包 jdk
# 准备工作
[root@VM-0-11-centos tomcat]# ls
apache-tomcat-9.0.43.tar.gz jdk-8u281-linux-x64.tar.gz
2、编写dockerfile文件 官方名称 Dockerfile 默认使用 命令直接找到 不用指定
FROM centos
MAINTAINER ljchengx # 作者
COPY readme.text /usr/local/readme.txt # 复制一个文件
ADD jdk-8u281-linux-x64.tar.gz /usr/local/ # ADD 可以自动完成解压处理
ADD apache-tomcat-9.0.43.tar.gz /usr/local/
RUN yum -y install vim # 安装vim
ENV MYPATH /usr/local # 定义容器内路径
WORK $MYPATH # 指定上面定义的路径为工作路径
ENV JAVA_HOME /usr/local/jdk1.8.0_281 # 设置java环境变量
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.43 # 设置tomcat环境变量
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.43
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080 # 暴露内部8080端口
CMD /usr/local/apache-tomcat-9.0.43/bin/startup.sh && tail -F /url/local/apache-tomcat-9.0.43/bin/logs/catalina.out # 执行命令
3、构建镜像
[root@VM-0-11-centos tomcat]# docker build -t diytomcat .
构建完成查看已经生成成功!
4、运行
# docker run -d -p 9090:8080 --name ljchengxtomcat -v /home/tomcat/test:/usr/local/apache-tomcat-9.0.43/webapps/test -v /home/tomcat/logs:/usr/local/apache-tomcat-9.0.43/logs diytomcat
# 启动后发现 成功 并且挂载成功
[root@VM-0-11-centos tomcat]# docker run -d -p 9090:8080 --name ljchengxtomcat -v /home/tomcat/test:/usr/local/apache-tomcat-9.0.43/webapps/test -v /home/tomcat/logs:/usr/local/apache-tomcat-9.0.43/logs diytomcat
d97affb4d1d08fe19dd72de4b181e4c8340d5534c7aae349c44e6aeac1535576
[root@VM-0-11-centos tomcat]# ls
apache-tomcat-9.0.43.tar.gz Dockerfile jdk-8u281-linux-x64.tar.gz logs readme.txt test
# 随便写个简单的页面 发现网站访问正常
发布镜像
发布DockerHub
1、注册DockerHub账号
2、登录账号
3、Linux也需要登录
[root@VM-0-11-centos tomcat]# docker login --help
Usage: docker login [OPTIONS] [SERVER]
Log in to a Docker registry.
If no server is specified, the default is defined by the daemon.
Options:
-p, --password string Password
--password-stdin Take the password from stdin
-u, --username string Username
4、发布
# docker push diytomcat
# 修改标签
[root@VM-0-11-centos tomcat]# docker tag 613b591c146d ljchengx/tomcat
[root@VM-0-11-centos tomcat]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
diytomcat latest 613b591c146d 53 minutes ago 640MB
ljchengx/tomcat latest 613b591c146d 53 minutes ago 640MB
mycentos 0.1 6e3f53d5b8d2 25 hours ago 291MB
ljchengx/centos 1.0 3e09855b2bc7 26 hours ago 209MB
nginx latest f6d0b4767a6c 8 weeks ago 133MB
centos latest 300e315adb2f 3 months ago 209MB
# [root@VM-0-11-centos tomcat]# docker push ljchengx/tomcat
发布到阿里云
1、创建命名空间
2、创建镜像仓库
3、登录推送
[root@VM-0-11-centos tomcat]# docker tag 613b591c146d registry.cn-hangzhou.aliyuncs.com/ljchengx/ljchengx:1.0
[root@VM-0-11-centos tomcat]# docker push registry.cn-hangzhou.aliyuncs.com/ljchengx/ljchengx:1.0
参考阿里云: