5.1.1 Sample 网站的初始 Dockerfile

代码地址:

1. 创建目录及文件

image.png

2. 下载示例文件

  • 链接过时

image.png

global.conf:

  1. server {
  2. listen 0.0.0.0:80;
  3. server_name _;
  4. root /var/www/html/website;
  5. index index.html index.htm;
  6. access_log /var/log/nginx/default_access.log;
  7. error_log /var/log/nginx/default_error.log;
  8. }

nginx.conf:

  • nginx 在容器中以前台模式运行, 否则容器会退出
  1. user www-data;
  2. worker_processes 4;
  3. pid /run/nginx.pid;
  4. daemon off;
  5. events { }
  6. http {
  7. sendfile on;
  8. tcp_nopush on;
  9. tcp_nodelay on;
  10. keepalive_timeout 65;
  11. types_hash_max_size 2048;
  12. include /etc/nginx/mime.types;
  13. default_type application/octet-stream;
  14. access_log /var/log/nginx/access.log;
  15. error_log /var/log/nginx/error.log;
  16. gzip on;
  17. gzip_disable "msie6";
  18. include /etc/nginx/conf.d/*.conf;
  19. }

3. Dockerfile

image.png

Dockerfile:

  1. FROM ubuntu:18.04
  2. LABEL maintainer="james@example.com"
  3. ENV REFRESHED_AT 2014-06-01
  4. RUN apt-get -qq update && apt-get -qq install nginx
  5. RUN mkdir -p /var/www/html/website
  6. ADD nginx/global.conf /etc/nginx/conf.d/
  7. ADD nginx/nginx.conf /etc/nginx/ # 与书中不同
  8. EXPOSE 80

5.1.2 构建 Sample 网站和 Nginx 镜像

  1. $ sudo docker build -t jdxj/nginx .
  2. [sudo] jdxj 的密码:
  3. Sending build context to Docker daemon 4.608kB
  4. Step 1/8 : FROM ubuntu:18.04
  5. 18.04: Pulling from library/ubuntu
  6. f22ccc0b8772: Already exists
  7. 3cf8fb62ba5f: Already exists
  8. e80c964ece6a: Already exists
  9. Digest: sha256:fd25e706f3dea2a5ff705dbc3353cf37f08307798f3e360a13e9385840f73fb3
  10. Status: Downloaded newer image for ubuntu:18.04
  11. ---> 2c047404e52d
  12. ...

查看构建历史:

$ sudo docker history jdxj/nginx
IMAGE          CREATED              CREATED BY                                      SIZE      COMMENT
3181809982cd   About a minute ago   /bin/sh -c #(nop)  EXPOSE 80                    0B        
e16ecb772155   About a minute ago   /bin/sh -c #(nop) ADD file:d6698a182fafaf3cb…   415B      
e08071f095f9   About a minute ago   /bin/sh -c #(nop) ADD file:9778ae1b43896011c…   286B      
fc371ff4d3e8   About a minute ago   /bin/sh -c mkdir -p /var/www/html/website       0B        
41db94b132af   About a minute ago   /bin/sh -c apt-get -qq update && apt-get -qq…   95.2MB    
137449cb2bf8   About a minute ago   /bin/sh -c #(nop)  ENV REFRESHED_AT=2014-06-…   0B        
0bb3ff33e238   2 minutes ago        /bin/sh -c #(nop)  LABEL maintainer=james@ex…   0B        
2c047404e52d   7 weeks ago          /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B        
<missing>      7 weeks ago          /bin/sh -c mkdir -p /run/systemd && echo 'do…   7B        
<missing>      7 weeks ago          /bin/sh -c [ -z "$(apt-get indextargets)" ]     0B        
<missing>      7 weeks ago          /bin/sh -c set -xe   && echo '#!/bin/sh' > /…   745B      
<missing>      7 weeks ago          /bin/sh -c #(nop) ADD file:6ef542de9959c3061…   63.3MB

5.1.3 从 Sample 网站和 Nginx 镜像构建容器

image.png

index.html:

<head>

<title>Test website</title>

</head>

<body>

<h1>This is a test website</h1>

</body>

运行容器:

  • -p: 为80端口添加映射
$ sudo docker run -d -p 80 --name website -v $PWD/website:/var/www/html/website jdxj/nginx nginx
[sudo] jdxj 的密码:
ca820e342ce3470e8054487ce8f9016ce78636508ebf3bc0634047d55d0c4d72

5.1.4 修改网站

修改 index.html 文件后刷新浏览器.