Docker(4)-DockerFile

Docker(4)-DockerFile

DockerFile是用来构建Docker镜像的文件,是命令参数脚本。

我们以后要发布项目,做成镜像,就需要编写dockerfile文件。

DockerFile:构建文件,定义了一切步骤。

DockerImages:通过DockerFile构建生成的镜像,最终发布和运行的产品。

DockerContainer:容器就是镜像运行起来提供服务。

构建步骤:

  1. 编写DockerFile文件。
  2. docker build 命令构建成为一个镜像。
  3. docker run 运行镜像。
  4. docker push 发布镜像(DokcerHub、阿里云镜像仓库)。

DockerFile基础

  1. 每个指令必须是大写字母。
  2. 执行顺序从上到下。
  3. # 表示注释。
  4. 每一个指令都会创建并提交一个镜像层。

DockerFile指令

  1. FROM :基础镜像,一切从这里构建。
  2. MAINTAINER :镜像是谁写的,姓名+邮箱
  3. RUN :镜像构建时需要运行的命令。
  4. ADD :添加内容
  5. WORKDIR :镜像的工作目录
  6. VOLUME :挂载卷
  7. EXPOSE :指定对外的端口 -p
  8. CMD :指定容器启动时要运行的命令,只有最后一个会生效,可被替代
  9. ENTRYPOINT :指定容器启动时要运行的命令,可追加命令
  10. ONBUILD :当构建一个被继承DockerFile时,会触发。
  11. COPY :类似ADD,将文件拷贝到镜像中
  12. ENV :构建时设置环境变量。

实战测试,创建自己的Centos

  1. 编写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

  1. docker build
[root@yinrz dockerFile]# docker build -f dockerfile-centos -t mycentos:0.1 .

Successfully built c84e529294f4
Successfully tagged mycentos:0.1
  1. docker run
[root@yinrz dockerFile]# docker run -it c84e529294f4
  1. 测试
# 工作目录切换
[root@67fd307daf52 local]# pwd
/usr/local
# vim和ifconfig命令存在
[root@67fd307daf52 local]# vim test
[root@67fd307daf52 local]# ifconfig

实战测试,创建自己的Tomcat

  1. 准备镜像文件:tomcat的压缩包、jdk的压缩包。

  1. 编写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
  1. 构建镜像
docker build -t mytomcat .

Successfully built 9efab115c346
Successfully tagged mytomcat:latest
  1. 运行镜像,生成容器
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

  1. https://hub.docker.com/ 注册账号,登录
  2. 在服务器上提交镜像
# 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

发布镜像到阿里云容器服务

  1. 登录阿里云,找到容器镜像服务。
  2. 先创建命名空间。

  1. 再创建镜像仓库。

  1. 进入仓库查看操作指南。

[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
posted @ 2020-08-13 03:06  Baby丿太依赖  阅读(107)  评论(0)    收藏  举报