什么是Dockerfile?

    在制作Docker镜像时有两种方式:
    1、使用 Docker container,直接构建容器,再导出成镜像使用
    2、使用 Dockerfile,将所有动作写在文件中,再用docker build制作成镜像。

Docker内容简介

    # This my first nginx Dockerfile
    # Version 1.0
    
    # Base images 基础镜像
    FROM ubuntu
    
    #MAINTAINER 维护者信息
    MAINTAINER SD
    
    #ENV 设置环境变量
    ENV PATH /usr/local/nginx/sbin:$PATH
    
    #ADD  文件放在当前目录下,拷过去会自动解压
    ADD /etc/passwd /opt/passwd
    
    #RUN 执行命令
    RUN apt-get update
    RUN apt-get upgrade -y

    #WORKDIR 工作目录,即在哪个目录下面,可以理解成cd
    WORKDIR /etc/init.d
    
    #EXPOSE 映射端口,即将哪个端口开放。
    EXPOSE 80
    
    #CMD 运行以下命令。
    CMD ["nginx"]

使用Dockerfile构建静态网站
构建一个简单的web网站

  1)创建Dockerfile存放的目录、创建Dockerfile文件
  命令:
    [[email protected] ~]# cd /opt/
    [[email protected] opt]# mkdir sample_web
    [[email protected] opt]# cd sample_web/
    [[email protected] sample_web]# ls
    [[email protected] sample_web]# touch Dockerfile
    [[email protected] sample_web]# vim Dockerfile 
  2)准备nginx环境
  创建nginx配置文件存放的目录
    [[email protected] sample_web]# mkdir nginx
    [[email protected] sample_web]# cd nginx/
  拉取nginx配置文件(github上面有这东西,直接用现成的就好)
    [[email protected] nginx]# wget https://github.com/guanwei/dockerbook-code/blob/master/5/sample/nginx/global.conf
    [[email protected] nginx]# wget https://github.com/guanwei/dockerbook-code/blob/master/5/sample/nginx/nginx.conf
  3)编写Dockerfile文件
     需要编写一个包括:
     (1)安装nginx
     (2)在容器内创建一个/var/www/html目录
     (3)将本地的nginx配置文件添加至镜像内
     (4)启用80端口
    [[email protected] sample_web]# cat Dockerfile 
        FROM ubuntu:14.04
        MAINTAINER [email protected]
        ENV REFRESHED_AT 2020-11-06
        RUN apt-get update
        RUN apt-get -y -q install nginx vim 
        RUN mkdir -p /var/www/html
        ADD nginx/nginx.conf /etc/nginx/nginx.conf
        EXPOSE 80
  4)使用Docker build创建镜像
    [email protected]:/opt/docker# docker build -t nginx1 .
        Sending build context to Docker daemon  177.2kB
        Step 1/8 : FROM ubuntu
         ---> d70eaf7277ea
        Step 2/8 : MAINTAINER [email protected]
         ---> Using cache
         ---> 8e81046715df
        Step 3/8 : ENV REFRESHED_AT 2020-11-06
         ---> Using cache
         ---> d2c937e078fd
        Step 4/8 : RUN apt-get update
         ---> Using cache
         ---> 0d83a4f97903
        Step 5/8 : RUN apt-get -y -q install nginx vim
         ---> Using cache
         ---> 06f6fd29415e
        Step 6/8 : RUN mkdir -p /var/www/html
         ---> Using cache
         ---> 2beea8b82327
        Step 7/8 : ADD nginx/nginx.conf /etc/nginx/nginx.conf
         ---> 1668b007c15b
        Step 8/8 : EXPOSE 80
         ---> Running in 1e3abe5842d2
        Removing intermediate container 1e3abe5842d2
         ---> bca71ed33033
        Successfully built bca71ed33033
        Successfully tagged nginx1:latest

08189-khvd3u9ox2.png

  5)运行使用Dockerfile创建的镜像
    [email protected]:/opt/docker# docker run -tdi --name nginx01 -p 8011:80 nginx1 /bin/bash
    36033d6957ded5cf72c28ae054495452beaf5e3c5454aa65fbfcd802d6b9171f
    [email protected]:/opt/docker# docker ps
    CONTAINER ID   IMAGE     COMMAND        CREATED          STATUS         PORTS              NAMES
    36033d6957de  nginx1   "/bin/bash"   3 seconds ago    Up 2 seconds  0.0.0.0:8011->80/tcp   nginx01
    [email protected]:/opt/docker# docker exec -ti nginx01 /bin/bash "/etc/init.d/nginx" restart
     * Restarting nginx nginx                                       [ OK ]                                                                                  

17777-6rb5y5vrjw.png

  6)Docker中的数据卷
    简单说下数据卷这个东西吧,卷可以理解成在宿主机选择一个目录,将这个目录映射到容器内部,可以让多个容器共享这个宿主机的目录下所有东西,也可以赋予权限。
    [email protected]:~# docker run --name nginx_01 -tid -v /var/www/html/:/var/www/html/ -p 8001:80 nginx1 /bin/bash
    [email protected]:~# docker run --name nginx_02 -tid -v /var/www/html/:/var/www/html/ -p 8002:80 nginx1 /bin/bash
    上面的命令:创建的两个容器,将宿主机的/var/www/html目录映射到了容器内相同的路径下

21368-w7ew10hwcti.png

    使用命令启动容器内的nginx服务
    [email protected]:~# docker exec -ti nginx_01 bash "/etc/init.d/nginx" restart
    [email protected]:~# docker exec -ti nginx_02 bash "/etc/init.d/nginx" restart
    测试是否成功
    浏览器访问: ip:8001/8002

42302-3jwickwvxq4.png

    在宿柱机的/var/www/html目录下编写一个index.html网页
    [email protected]:~# vim /var/www/html/index.html

61012-qrv2e55w3mq.png

    浏览器访问成功

55475-9e2ngba1qz8.png

最后修改:2020 年 11 月 10 日 09 : 26 AM
如果觉得我的文章对你有用,请随意赞赏