创建Nginx镜像
创建一个基于Nginx的Docker镜像,用于后续在Docker容器中部署和运行Nginx服务。
- 启动Docker。
dockerd & ps -ef | grep docker
- 查找并下载镜像源。
- CentOS:
- openEuler 20.03:
1 2 3
docker search openeuler docker pull openeuler20/origin-pod:v3.11 docker images
若现场环境无法直接联网但可通过设置代理的方式访问外网,则配置好代理服务器环境变量后,需要对Docker进行配置。
配置代理服务器环境变量的具体操作步骤如下:- 创建目录。
1
mkdir /etc/systemd/system/docker.service.d/
- 新建并编辑http-proxy.conf文件。
1
vim /etc/systemd/system/docker.service.d/http-proxy.conf
- 按“i”进入编辑模式,添加如下内容。以下参数请根据实际情况修改:youraccount为用户名,password为密码,
IP Address为代理的IP地址,PORT为代理端口。
[Service] Environment="http_proxy=http://youraccount:password@IP Address:PORT"
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 重启服务器生效。
若始终无外网权限,可以在有外网权限的服务器中下载相关镜像后,再备份到部署服务器。具体操作步骤如下:
- 访问镜像网站:https://mirrors.tools.huawei.com/openeuler/openEuler-22.03-LTS-SP1/docker_img/。
- 根据服务器架构下载对应Docker镜像。此处以下载aarch64架构Docker镜像的为例。
- 将下载好的Docker镜像上传至Server端“/home”目录下。
- 在Docker中加载镜像。
docker load -i /home/openEuler-docker.aarch64.tar.xz
或者
docker load < /home/openEuler-docker.aarch64.tar.xz
- 查看加载的镜像。
docker images
- dockerfile创建镜像。
- 创建“dockerfile”目录。
1
mkdir /home/dockerfile
- 将编译并配置好的Nginx及其依赖复制到“dockerfile”目录下。
- CentOS:
1 2 3 4 5 6 7
\cp -r /usr/local/nginx /home/dockerfile \cp -r /usr/lib64/perl5 /home/dockerfile \cp -r /usr/local/lib64/perl5 /home/dockerfile/perl5_1 \cp -r /usr/share/perl5 /home/dockerfile/perl5_2 \cp -r /usr/sbin/ifconfig /home/dockerfile \cp -r /usr/sbin/ethtool /home/dockerfile \cp -r /usr/bin/netstat /home/dockerfile
- openEuler:
1 2 3 4 5 6 7 8
\cp -r /usr/local/nginx /home/dockerfile \cp -r /usr/lib64/perl5 /home/dockerfile \cp -r /usr/lib64/perl5 /usr/local/lib64/ \cp -r /usr/local/lib64/perl5 /home/dockerfile/perl5_1 \cp -r /usr/share/perl5 /home/dockerfile/perl5_2 \cp -r /usr/sbin/ifconfig /home/dockerfile \cp -r /usr/sbin/ethtool /home/dockerfile \cp -r /usr/bin/netstat /home/dockerfile
- CentOS:
- 将物理机上的sysctl.conf拷贝到“dockerfile”目录下。
1
\cp /etc/sysctl.conf /home/dockerfile
- 创建Nginx启动脚本。
- 新建start.sh脚本文件。
1
vim /home/dockerfile/start.sh
- 写入以下内容。
sysctl -p /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 新建start.sh脚本文件。
- 创建“dockerfile”文件。
- 新建文件。
1
vi /home/dockerfile/dockerfile
- 将以下内容写入文件。
- CentOS:
FROM centos:7 USER root WORKDIR /home/ COPY sysctl.conf /etc/ COPY nginx /usr/local/nginx COPY perl5 /usr/lib64/perl5 COPY perl5_1 /usr/local/lib64/perl5 COPY perl5_2 /usr/share/perl5 COPY ifconfig /usr/sbin/ COPY ethtool /usr/sbin/ COPY netstat /usr/sbin/ COPY start.sh /home/ RUN echo 'ulimit -n 102400' >> /etc/profile RUN chmod +x /home/start.sh CMD /home/start.sh && /usr/bin/top
- openEuler:
FROM openeuler20/origin-pod:v3.11 USER root WORKDIR /home/ COPY sysctl.conf /etc/ COPY nginx /usr/local/nginx COPY perl5 /usr/lib64/perl5 COPY perl5_1 /usr/local/lib64/perl5 COPY perl5_2 /usr/share/perl5 COPY ifconfig /usr/sbin/ COPY ethtool /usr/sbin/ COPY netstat /usr/sbin/ COPY start.sh /home/ RUN echo 'ulimit -n 102400' >> /etc/profile RUN chmod +x /home/start.sh CMD /home/start.sh && /usr/bin/top
- CentOS:
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
运行命令说明参考表1。
执行/usr/bin/top的原因:Docker容器后台运行,必须有一个一直挂起的命令(运行top,tail等),否则容器会自动退出。
- 新建文件。
- 创建镜像。
- CentOS:
1 2 3
cd /home/dockerfile docker build -t arm/centos7/nginx:http . docker images | grep arm/centos7/nginx
- openEuler:
1 2 3
cd /home/dockerfile docker build -t arm/openeuler20/nginx:http . docker images | grep arm/openeuler20/nginx
- arm/centos7/nginx:http分别为镜像名和tag。
- arm/openeuler20/nginx:http分别为镜像名和tag。
- “.”表示使用当前目录的dockerfile创建镜像。
- CentOS:
- 创建“dockerfile”目录。
父主题: Nginx容器部署指南