案例

通过dockerfile构建镜像步骤 1、创建一个目录 2、在目录下创建 Dockerfile 文件以及其他文件 3、通过docker build构建镜像 4、通过构建的镜像启动容器

栗子:

1、创建一个目录:

  1. mkdir /usr/local/rw_test

2、编辑Dockerfile文件:

  1. vi Dockerfile

3、编辑内容如下

  1. # pull down centos image
  2. FROM docker.io/centos:7
  3. LABEL steel
  4. # install nginx
  5. RUN yum install -y pcre pcre-devel openssl openssl-devel gcc gcc+ gcc-c++ wget vim net-tools automake autoconf make
  6. # 创建一个www用户(此步骤用不到可以省略)
  7. RUN useradd www -M -s /sbin/nologin
  8. # 下载nginx包并解压到 /usr/local/src 目录
  9. RUN cd /usr/local/src && wget https://nginx.org/download/nginx-1.18.0.tar.gz && tar -zxvf nginx-1.18.0.tar.gz
  10. # 配置nginx
  11. RUN cd /usr/local/src/nginx-1.18.0 && ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module && make && make install
  12. # 若不创建用户则用下方配置nginx
  13. RUN cd /usr/local/src/nginx-1.18.0 && ./configure --with-http_stub_status_module --with-http_ssl_module && make && make install
  14. # 启动nginx
  15. ENTRYPOINT /usr/local/nginx/sbin/nginx && tail -f /usr/local/nginx/logs/access.log

4、在 rw_test 目录下构建镜像

  1. docker build -t rw_nginx --rm=true .
  2. -t 表示选择指定生成镜像的用户名,仓库名和tag
  3. --rm=true 表示指定在生成镜像过程中删除中间产生的临时容器(文件)。
  4. 注意:上面构建命令中最后的.符号不要漏了,表示使用当前目录下的 Dockerfile 构建镜像

5、测试

打开后就能查看到nginx默认的页面,若想配置为发布的项目,则需修改nginx配置,配置路径/usr/local/nginx/conf/nginx.conf
修改后重新启动 nginx,命令/usr/local/nginx/sbin/nginx -s reload

  1. # 后台运行容器
  2. docker run -it -d --name test_nginx -p 5000:80 rw_nginx /bin/bash
  3. # 进入容器
  4. docker exec -it test_nginx /bin/bash
  5. # 访问
  6. 通过浏览器访问:http://127.0.0.1:5000

拉取的是centos7版本的镜像,经测试,拉取centos:latest最新版(centos8)执行命令时会出现
Unable to find a match: gcc+