初识DockerFile
一、DockerFile介绍
dockerfile是用来构建docker镜像的文件,命令参数脚本。构建步骤:
- 编写一个dockerfile文件
- docker build 构建成为一个镜像
- docker run 运行镜像
- docker push 发布镜像(DockerHub、阿里云镜像仓库)
二、DockerFile构建过程
1. DockerFile基础知识
- 每个保留关键字(指令)都必须是大写字母。
- 执行顺序:从上到下顺序执行。
- # 表示注释
- 每一个指令都会创建提交一个新的镜像层,并提交。
2. DockerFile指令说明
- FROM 基础镜像,一切从这里开始构建
- MAINTAINER 镜像是谁写的,姓名+邮箱
- RUN 镜像构建的时候需要运行的命令
- ADD
- WORKDIR 镜像的工作目录
- VOLUME 挂载的目录
- EXPOSE 暴露端口配置
- CMD 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代。
- ENTRYPOINT 指定这个容器启动的时候要运行的命令,可以追加命令。
- ONBUILD 当构建一个被继承DockerFile,这个时候就会运行ONBUILD的指令,触发指令。
- COPY 类似ADD,将我们文件拷贝到镜像中。
- ENV 构建的时候设置环境变量。
构建DockerFile
一、创建自己的 centos 镜像
1. 编写Dockerfile文件
FROM centos MAINTAINER dongdong<158629568@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
2. 通过Dockerfile文件构建镜像
[root@localhost ~]# docker build -f dockerfile文件路径 -t 镜像名:[tag] . [root@localhost ~]# docker build -f mydockerfile -t mycentos:0.1 .
3. 查看自己构建的 centos 镜像
[root@localhost ~]# docker images # 查看mycentos镜像是否生成 [root@localhost ~]# docker run -it mycentos:0.1 # 运行镜像,生成容器 [root@localhost ~]# docker history 镜像id # 查看镜像是怎么一步一步做起来的 [root@localhost ~]# docker history 920636cc7d12
二、创建自己的 tomcat 镜像
1. 准备镜像文件tomcat压缩包,jdk的压缩包。我这里是:apache-tomcat-9.0.37.tar.gz、jdk-8u161-linux-x64.tar.gz。
2. 编写Dockerfile文件,官方命名:Dockerfile,这样在build的时候,会自动寻找这个文件,就不需要-f指定了。
FROM centos MAINTAINER dongdong<158629568@qq.com> COPY readme.txt /usr/local/readme.txt ADD jdk-8u161-linux-x64.tar.gz /usr/local/ ADD apache-tomcat-9.0.37.tar.gz /usr/local/ RUN yum -y install vim RUN yum -y install net-tools ENV MyPath /usr/local WORKDIR $MyPath ENV JAVA_HOME /usr/local/jdk1.8.0_161 ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.37 ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.37 ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin EXPOSE 8080 CMD /usr/local/apache-tomcat-9.0.37/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.37/bin/logs/catalina.out
3. 构建镜像
[root@localhost ~]# docker build -t my_tomcat . # . 代表当前路径,也可以写绝对路径。
4. 启动镜像,生成容器,并访问测试
[root@localhost ~]# docker run -d -p 3120:8080 --name my_tomcat01 -v /home/tomcat/test:/usr/local/apache-tomcat-9.0.37/webapps/test -v /home/tomcat/logs:/usr/local/apache-tomcat-9.0.37/logs my_tomcat [root@localhost ~]# curl localhost:3120 # 访问测试 [root@localhost ~]# docker exec -it 容器id /bin/bash # 进入容器 [root@localhost ~]# docker exec -it 074b23e94d /bin/bash
5. 发布项目(由于做了卷挂载,我们直接在本地编写项目就可以发布了)
发布自己的镜像到DockerHub
一、注册自己的账号,地址:https://hub.docker.com/
二、在我们服务器上提交自己的镜像。
[root@localhost ~]# docker login -u username # 使用用户名登陆docker hub [root@localhost ~]# docker login -u love666
三、登陆完毕后,就可以提交镜像了。使用docker push命令。
[root@localhost ~]# docker push my_tomcat # 方式一:直接push自己的镜像到服务器上。 [root@localhost ~]# docker tag e5de7fdf4d2e liumou/my_tomcat:1.0 # 方式二:先修改自己的镜像的信息(tag与名称),再发布。这里e5de7fdf4d2e是镜像id。 [root@localhost ~]# docker push liumou/my_tomcat:1.0
发布自己的镜像到阿里云容器服务
一、登陆阿里云
二、找到容器镜像服务
三、创建命名空间
四、创建镜像仓库
五、查看镜像仓库信息,按照步骤来一步步提交
[root@localhost ~]# sudo docker login --username=小刘_小田 registry.cn-hangzhou.aliyuncs.com [root@localhost ~]# sudo docker tag e5de7fdf4d2e registry.cn-hangzhou.aliyuncs.com/bilibili-dongdong/dongdong-niubi:1.0 # e5de7fdf4d2e是镜像id [root@localhost ~]# sudo docker push registry.cn-hangzhou.aliyuncs.com/bilibili-dongdong/dongdong-niubi:1.0
六、现在别人就可以使用你的镜像啦。通过docker pull、docker run。