Docker(4)-DockerFile
Docker(4)-DockerFile
DockerFile是用来构建Docker镜像的文件,是命令参数脚本。
我们以后要发布项目,做成镜像,就需要编写dockerfile文件。
DockerFile:构建文件,定义了一切步骤。
DockerImages:通过DockerFile构建生成的镜像,最终发布和运行的产品。
DockerContainer:容器就是镜像运行起来提供服务。
构建步骤:
- 编写DockerFile文件。
- docker build 命令构建成为一个镜像。
- docker run 运行镜像。
- docker push 发布镜像(DokcerHub、阿里云镜像仓库)。
DockerFile基础
- 每个指令必须是大写字母。
- 执行顺序从上到下。
- # 表示注释。
- 每一个指令都会创建并提交一个镜像层。
DockerFile指令
- FROM :基础镜像,一切从这里构建。
- MAINTAINER :镜像是谁写的,姓名+邮箱
- RUN :镜像构建时需要运行的命令。
- ADD :添加内容
- WORKDIR :镜像的工作目录
- VOLUME :挂载卷
- EXPOSE :指定对外的端口 -p
- CMD :指定容器启动时要运行的命令,只有最后一个会生效,可被替代
- ENTRYPOINT :指定容器启动时要运行的命令,可追加命令
- ONBUILD :当构建一个被继承DockerFile时,会触发。
- COPY :类似ADD,将文件拷贝到镜像中
- ENV :构建时设置环境变量。
实战测试,创建自己的Centos
- 编写dockerfile文件
FROM centos
MAINTAINER yinrz<1760266861@qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD /bin/bash
- docker build
[root@yinrz dockerFile]# docker build -f dockerfile-centos -t mycentos:0.1 .
Successfully built c84e529294f4
Successfully tagged mycentos:0.1
- docker run
[root@yinrz dockerFile]# docker run -it c84e529294f4
- 测试
# 工作目录切换
[root@67fd307daf52 local]# pwd
/usr/local
# vim和ifconfig命令存在
[root@67fd307daf52 local]# vim test
[root@67fd307daf52 local]# ifconfig
实战测试,创建自己的Tomcat
- 准备镜像文件:tomcat的压缩包、jdk的压缩包。

- 编写Dockerfile文件(官网命令文件名为Dockerfile,build时候不加-f会自动寻找这个文件)
FROM centos
MAINTAINER yinrz<1760266861@qq.com>
COPY readme.txt /usr/local/readme.txt
ADD jdk-8u211-linux-x64.tar_2.gz /usr/local/
ADD apache-tomcat-9.0.37.tar.gz /usr/local/
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.0_211
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.37
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/loca1/apache-tomcat-9.0.37/bin/startup.sh && tail -f /usr/local/apache-tomcat-9.0.37/logs/catalina.out
- 构建镜像
docker build -t mytomcat .
Successfully built 9efab115c346
Successfully tagged mytomcat:latest
- 运行镜像,生成容器
docker run -d -p 9090:8080 --name mytomcat -v /home/yinrz/tomcat/test:/usr/local/apache-tomcat-9.0.37/webapps/test -v /home/yinrz/tomcat/tomcatlogs:/usr/local/apache-tomcat-9.0.37/logs mytomcat
发布镜像到DockerHub
- https://hub.docker.com/ 注册账号,登录
- 在服务器上提交镜像
# 1.登录
# docker login -u DockerHub账号名
# Password:密码
[root@yinrz ~]# docker login -u 18068333193
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
# 2.提交
# docker tag 镜像ID DockerHub账号名/镜像名:[版本]
# docker push DockerHub账号名/镜像名:[版本]
[root@yinrz ~]# docker tag 128f15f269f8 18068333193/dockercmd:1.0
[root@yinrz ~]# docker push 18068333193/dockercmd:1.0
The push refers to repository [docker.io/18068333193/dockercmd]
eb29745b8228: Pushing [=> ] 4.37MB/215.3MB
发布镜像到阿里云容器服务
- 登录阿里云,找到容器镜像服务。
- 先创建命名空间。

- 再创建镜像仓库。

- 进入仓库查看操作指南。

[root@yinrz ~]# docker login --username=熠煜辰星 registry.cn-hangzhou.aliyuncs.com
[root@yinrz ~]# docker tag 128f15f269f8 registry.cn-hangzhou.aliyuncs.com/yinrz/test:1.0
[root@yinrz ~]# docker push registry.cn-hangzhou.aliyuncs.com/yinrz/test:1.0

浙公网安备 33010602011771号