软件系统开发定制Docker进阶 dockerfile指令构建docker镜像

目录


初识Dockerfile

Dockerfile软件系统开发定制就是用来构建镜像的构建文件!命令脚本!

软件系统开发定制通过这个脚本可以生成镜像,软件系统开发定制镜像是一层层的,软件系统开发定制脚本是一行行的命令,软件系统开发定制每行命令都是一层

dockerfile软件系统开发定制是面向开发的,我们以后要发布项目,作镜像,就需要编写dockerfile文件,这个文件十分简单。

Dockerfile镜像之间成为了企业交付的标准,必须掌握!

编写一个自己的docker 镜像:

查看一个镜像是怎么生成的:

docker history 镜像ID或镜像名

构建步骤:

  1. 1、编写一个dockerfile文件
  2. 2、docker build 构建成为一个镜像
  3. 3、docker run 运行镜像
  4. 4、docker push 发布镜像

编写Dockerfile文件:

  1. #创建一个dockerfile文件,名字可以随机,建议Dockerfile
  2. #文件中的内容:指令(大写) 参数
  3. #实例测试:
  4. #创建目录存放dockerfile文件的目录:
  5. [root@localhost ~]# mkdir docker_test
  6. #进入目录创建dockerfile文件:
  7. [root@localhost ~]# mkdir docker_test
  8. [root@localhost ~]# cd docker_test/
  9. [root@localhost docker_test]# touch dockerfile
  10. #编写dockerfile文件,在文件中写入dockerfile指令:
  11. [root@localhost docker_test]# vim dockerfile
  12. FROM centos
  13. VOLUME ["volume01","volume02"]
  14. CMD echo "----end----"
  15. CMD /bin/bash

将Dockerfile文件转为镜像:

  1. #使用docker build . 命令将dockerfile文件转为镜像
  2. [root@localhost docker_test]# docker build -f /root/docker_test/dockerfile -t hzw/centos .
  3. Sending build context to Docker daemon 2.048kB
  4. Step 1/4 : FROM centos
  5. ---> 5d0da3dc9764
  6. Step 2/4 : VOLUME ["volume01","volume02"]
  7. ---> Running in d4b23ae86ace
  8. Removing intermediate container d4b23ae86ace
  9. ---> 8f39792fbef7
  10. Step 3/4 : CMD echo "----end----"
  11. ---> Running in 1bb4751f04ef
  12. Removing intermediate container 1bb4751f04ef
  13. ---> 2e2bb5e2a502
  14. Step 4/4 : CMD /bin/bash
  15. ---> Running in 82a0b5905405
  16. Removing intermediate container 82a0b5905405
  17. ---> 39a1fd86fd73
  18. Successfully built 39a1fd86fd73
  19. Successfully tagged hzw/centos:latest
  20. #由此可以发现docker创建镜像也是一层层创建的。每个命令都是镜像的一层。

查看自己构建的docker镜像

  1. [root@localhost docker_test]# docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. hzw/centos latest 39a1fd86fd73 2 minutes ago 231MB

使用自己构建的docker镜像生成容器:

  1. [root@localhost docker_test]# docker run -it hzw/centos /bin/bash
  2. [root@f62a714bb306 /]# ls
  3. bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var volume01 volume02
  4. #可以看见我们构建的镜像也是能正常进去使用的,并且我们在dockerfile写指令挂载的目录也在这个容器里。

DockerFile

dockerfile时用来构建docker镜像文件!命令参数脚本!
构建步骤:

1、编写一个dockerfile文件

2、docker build . 构建称为一个镜像

3、docker run 运行镜像

4、docker push 发布镜像(DockerHub、阿里云镜像仓库)

Dockerfile指令:

  1. FROM #指定基础镜像,一切从这里开始构建
  2. MAINTAINER #镜像是谁写的,姓名+邮箱
  3. RUN #镜像构建的时候需要运行的命令
  4. ADD #步骤:tomcat镜像,这个tomcat压缩包!添加内容
  5. WORKDIR #镜像的工作目录
  6. VOLUME #挂载的目录
  7. EXPOST #暴露端口配置
  8. CMD #指定这个容器启动时候要运行的命令,Dockerfile里有多个CMD指令的话,只有最后一个CMD指令会生效,可被替代
  9. ENTRYPOINT #指定这个容器其董事会要运行的命令,可以追加命令
  10. ONBUILD #当构建一个被继承dockerfile,这个时候就会运行ONBUILD的指令。是一个触发指令
  11. COPY #类似ADD,将我们文件拷贝到镜像
  12. ENV #构建的时候设置环境变量!

docker build . 命令

构建好dockerfile文件后,我们就用docker build命令将文件构建成镜像。

  1. #命令使用方法:
  2. docker build -f dockerfile文件路径 -t 取个镜像名 .
  3. #参数详解:
  4. -f dockerfile的文件路径,可以写绝对路径,也可以写相对路径
  5. -t 给构建的镜像取个名字,名字格式: 名字:标签
  6. . 构建上下文的路径 必须写

查看镜像是如何生成的

docker history 镜像ID

 docker命令总结:

实操训练:Dockerfile构建镜像:

编写Dockerfile制作镜像,生成镜像名为my_build:Nginx1。首先创建目录dockerfile-nginx1,保存Dockerfile文件。具体要求如下:

(1)基于镜像centos:7

(2)安装Nginx

       a.安装相关依赖

       b.下载并解压Nginx

(3)工作目录设为:nginx-1.9.7

(4)编译安装Nginx

(5)对外暴露80,443端口

(6)修改Nginx配置文件,以非daemon方式启动

(7)复制服务启动脚本并设置权限

(8)启动容器时执行脚本run.sh

run.sh内容如下所示:

开始操作:

创建dockerfile-nginx1文件夹,进入该文件夹,编写Dockerfile文件

  1. mkdir dockerfile-nginx1
  2. cd dockerfile-nginx1/
  3. vim Dockerfile

编写Dockerfile文件内容:

  1. #该文件时基于centos7镜像为基础创建的
  2. FROM centos:7
  3. #下载nginx依赖源
  4. RUN yum -y install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
  5. #下载wget
  6. RUN yum install -y wget
  7. #下载nginx
  8. RUN wget http://nginx.org/download/nginx-1.9.7.tar.gz
  9. #解压nginx
  10. RUN tar -zxvf nginx-1.9.7.tar.gz
  11. #执行编译命令,通过--prefix=安装目录,指定nginx安装目录
  12. RUN ./configure --prefix=/usr/localinx && make && make install
  13. #设置工作目录
  14. WORKDIR nginx-1.9.7
  15. #暴露端口80和443
  16. EXPOSE 80
  17. EXPOSE 443
  18. #将虚拟机文件复制到容器里
  19. ADD run.sh /run.sh
  20. #给run.sh授予可执行权限
  21. RUN chmod 775 /run.sh
  22. #启动容器后执行run.sh脚本
  23. CMD ["/run.sh"]

在该文件夹里再编写一个run.sh

  1. vim run.sh
  2. run.sh里的内容:
  3. #!/bin/bash
  4. /usr/local/nginx/sbin/nginx

docker build 构建镜像

docker build -t my_build:nginx1 .

 docker images查看镜像:

 使用该镜像构建容器:

 可以看到镜像成功启动,东西也下载安装好了,工作目录设置好了,文件也复制到容器里了

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发