dockerfile 部署nginx

本文介绍了如何利用Dockerfile在轻量级的Alpine Linux系统上部署Nginx服务器。内容包括Ubuntu的软件包管理和服务管理命令,以及Alpine Linux的apk包管理和服务管理,重点讲解了如何通过apk命令安装Nginx。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux dockerfile 部署nginx

ubuntu的软件包管理命令和服务管理命令

Ubuntu是世界上最流行的Linux系统之一,比Ubuntu更大的是自由软件,而比自由软件更大的则是自由软件的社区。Ubuntu社区为其使用者提供了多种学习、交流、切磋和讨论方式,如论坛、星球、维基及IRC即时通信等。通过Ubuntu庞大的社区组织,Ubuntu用户可以获得很多帮助和支持,使得Ubuntu使用起来更加得心应手。

dpkg命令

dpkg -i /**/**/**.deb 安装软件 
dpkg -x **.deb 解开.deb文件 
dpkg -r /-p 删除并清配置 
更详细的 用dpkg --help 查询 如下: 
dpkg -i|--install <.deb 文件的文件名> ... | -R|--recursive <目录> ... 
dpkg --unpack <.deb 文件的文件名> ... | -R|--recursive <目录> ... 
dpkg -A|--record-avail <.deb 文件的文件名> ... | -R|--recursive <目录> ... 
dpkg --configure <软件包名> ... | -a|--pending 
dpkg -r|--remove | -P|--purge <软件包名> ... | -a|--pending 
dpkg --get-selections [<表达式> ...] 把已选中的软件包的列表打印到标准输出 
dpkg --set-selections 从标准输入里读出要选择的软件包列表 
dpkg --update-avail 替换现可安装的软件包信息 
dpkg --merge-avail 把文件中的信息合并到系统中 
dpkg --clear-avail 清除现有的软件包信息 
dpkg --forget-old-unavail 忘却已被删除,现在却不能安装的软件包 
dpkg -s|--status <软件包名> ... 显示软件包详尽的状态信息 
dpkg -p|--print-avail <软件包名> ... 显示软件包当前可供安装的版本的详细信 息 
dpkg -L|--listfiles <软件包名> ... 列出所有“属于”该软件包(或多个软件包)的文件 
dpkg -l|--list [<表达式> ... 简明地列出软件包的状态 
dpkg -S|--search <表达式> ... 搜寻拥有该文件(或多个文件)的软件包 
dpkg -C|--audit 检查搜寻残损的软件包 
dpkg --print-architecture 显示目标机的体系架构(借助 GCC) 
dpkg --print-gnu-build-architecture 显示目标机体系架构的 GNU 版本的表示 
dpkg --print-installation-architecture 显示本地主机的体系架构(用于安装) 
dpkg --compare-vesions <甲> <关系> <乙> 比较版本号 - 见下 
dpkg --help | --version 显示本帮助文档以及版本号 
dpkg --force-help | -Dh|--debug=help 强制操作时,有关出错方面的帮助 
dpkg --licence 显示版权和许可证的条文 

ubuntu下apt-get 命令参数

常用的APT命令参数 
apt-cache search package 搜索包 
apt-cache show package 获取包的相关信息,如说明、大小、版本等 
sudo apt-get install package 安装包 
sudo apt-get install package - - reinstall 重新安装包 
sudo apt-get -f install 修复安装"-f = ――fix-missing" 
sudo apt-get remove package 删除包 
sudo apt-get remove package - - purge 删除包,包括删除配置文件等 
sudo apt-get update 更新源 
sudo apt-get upgrade 更新已安装的包 
sudo apt-get dist-upgrade 升级系统 
sudo apt-get dselect-upgrade 使用 dselect 升级 
apt-cache depends package 了解使用依赖 
apt-cache rdepends package 是查看该包被哪些包依赖 
sudo apt-get build-dep package 安装相关的编译环境 
apt-get source package 下载该包的源代码 
sudo apt-get clean && sudo apt-get autoclean 清理无用的包 
sudo apt-get check 检查是否有损坏的依赖 

alpine的软件包管理命令和服务管理命令

Alpine Linux 是基于 musl libc 和 busybox 的面向安全的轻量级 Linux 发行版。Alpine 的体积非常小,Alpine 的 Docker 镜像大小仅 5 MB 左右。Alpine 功能比 buysbox 完善,还提供了软件包管理工具 apk (Alpine Package Keeper)。

更新/安装/卸载 软件包
更新

apk update              # 根据远程镜像源更新本地仓库中的所有软件包索引(通常在更新/安装软件包前先更新索引)
apk upgrade             # 从仓库中安装所有可用的软件包升级(升级本地已安装的软件包及其依赖项)
apk upgrade <package>   # 更新指定的软件包
update 只更新索引, upgrade 才真正更新

安装

apk add <package>               # 安装软件包(并自动安装依赖项)
apk add <package>=<version>     # 安装指定版本软件包
apk --no-cache add <package>    # 安装软件包, 不使用缓存
apk fix <package>               # 在不修改 WORLD 的情况下修复, 重新安装或升级软件包

卸载

apk del <package>       # 删除软件包, 如果其依赖项不再本需要, 则将其一起卸载
# 删除软件包时默认会执行类似 apt autoremove 的清理操作

查询/搜索/缓存 软件包
列出软件包 (apk list)

apk list [<OPTIONS>...] PATTERN...  # 列出给定模式的软件包

# apk list --help 命令参数 (List options):
#     -I, --installed       只显示已安装的软件包
#     -O, --orphaned        只显示孤立的软件包
#     -a, --available       只显示可用的软件包
#     -u, --upgradable      只显示可升级的软件包
#     -o, --origin          按来源列出软件包
#     -d, --depends         按依赖关系列出软件包
#     -P, --providers       按提供者列出软件包

apk -I list                 # 列出已安装的所有软件包
apk -u list                 # 列出可升级的所有软件包
apk list <package>          # 列出指定软件包

查询软件包的详细信息

apk info <package>          # 列出给定软件包或仓库的详细信息
apk info -R <package>       # 列出给定软件包依赖项
apk info --help             # 查询 apk info 命令的帮助/参数信息

apk dot --installed         # 将已安装软件包的依赖项呈现为 graphviz 图形
apk dot <package>           # 将给定装软件包的依赖项呈现为 graphviz 图形

搜索软件包

apk search <string>         # 搜索软件包

缓存管理

apk cache clean         # 删除旧的软件包
apk cache download      # 下载缺少的软件包
apk cache sync          # 删除旧软件包并下载缺少的程序包(上面两个步骤合并为一个)

Alpine Linux服务管理

rc-update // 主要用于不同运行级增加或者删除服务。
rc-status // 主要用于运行级的状态管理。
rc-service // 主用于管理服务的状态
openrc // 主要用于管理不同的运行级。

使用dockerfile,alpine作为基础镜像,部署nginx。

apk 安装nginx
[root@130 ~]# vim Dockerfile 
FROM alpine:latest
RUN echo "https://mirrors.aliyun.com/alpine/v3.11/main/" > /etc/apk/repositories && \
    echo "https://mirrors.aliyun.com/alpine/v3.11/community/" >> /etc/apk/repositories && \
    apk add nginx && mkdir /run/nginx/
EXPOSE 80
ENTRYPOINT [ "nginx", "-g", "daemon off;" ]
[root@130 ~]# docker build -t nginx:v1 . 
Sending build context to Docker daemon  25.09kB
Step 1/4 : FROM alpine:latest
 ---> c059bfaa849c
Step 2/4 : RUN echo "https://mirrors.aliyun.com/alpine/v3.11/main/" > /etc/apk/repositories &&     echo "https://mirrors.aliyun.com/alpine/v3.11/community/" >> /etc/apk/repositories &&     apk add nginx && mkdir /run/nginx/
 ---> Running in e326843a018e
fetch https://mirrors.aliyun.com/alpine/v3.11/main/x86_64/APKINDEX.tar.gz
fetch https://mirrors.aliyun.com/alpine/v3.11/community/x86_64/APKINDEX.tar.gz
(1/2) Installing pcre (8.43-r1)
(2/2) Installing nginx (1.16.1-r8)
Executing nginx-1.16.1-r8.pre-install
Executing busybox-1.34.1-r3.trigger
OK: 7 MiB in 16 packages
Removing intermediate container e326843a018e
 ---> a95619176e8a
Step 3/4 : EXPOSE 80
 ---> Running in 8516b0b601b7
Removing intermediate container 8516b0b601b7
 ---> 3d56fb0d5bbb
Step 4/4 : ENTRYPOINT [ "nginx", "-g", "daemon off;" ]
 ---> Running in ee2d45101fec
Removing intermediate container ee2d45101fec
 ---> 2b9675e81fab
Successfully built 2b9675e81fab
Successfully tagged nginx:v1
[root@130 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
nginx        v1        2b9675e81fab   About a minute ago   8.58MB
alpine       latest    c059bfaa849c   9 months ago         5.59MB
[root@130 ~]# docker run -d -P nginx:v1 
31adc79227729b5287a340e2398e853747925603606771c8abbb7552c734e821
[root@130 ~]# docker ps
CONTAINER ID   IMAGE      COMMAND                  CREATED         STATUS         PORTS                                     NAMES
31adc7922772   nginx:v1   "nginx -g 'daemon of…"   5 seconds ago   Up 3 seconds   0.0.0.0:49153->80/tcp, :::49153->80/tcp   boring_cray
[root@130 ~]# docker exec -it 31adc7922772 /bin/sh
/ # vi /etc/nginx/conf.d/default.conf 
/ # nginx -s reload

###源代码编译安装nginx

[root@130 ~]# vim Dockerfile 
FROM alpine:latest
ADD nginx-1.16.1.tar.gz /home/
ADD pcre-8.44.tar.gz /home/
RUN echo http://mirrors.aliyun.com/alpine/v3.10/main/ > /etc/apk/repositories && \
    echo http://mirrors.aliyun.com/alpine/v3.10/community/ >> /etc/apk/repositories
RUN apk update && apk upgrade && \
    apk add  gcc g++ make && \
    addgroup -S nginx && \
    adduser -DHS -s /sbin/nologin -G nginx nginx && \
    cd /home/nginx-1.16.1 && \
    ./configure --prefix=/usr/local/nginx --with-pcre=/home/pcre-8.44 --without-http_gzip_module && \
    make && make install && \
    ln -s /usr/local/nginx/sbin/nginx /usr/sbin/ && \
    mkdir -p /usr/local/nginx/conf/vhost/
EXPOSE 80
CMD ["/usr/sbin/nginx","-g","daemon off;"]

[root@130 ~]# docker build -t nginx:v2 .
[root@130 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
nginx        v2        a554b7c0f874   3 minutes ago    197MB
nginx        v1        2b9675e81fab   24 minutes ago   8.58MB
alpine       latest    c059bfaa849c   9 months ago     5.59MB
[root@130 ~]# docker history nginx:v2
IMAGE          CREATED         CREATED BY                                      SIZE      COMMENT
a554b7c0f874   3 minutes ago   /bin/sh -c #(nop)  CMD ["/usr/sbin/nginx" "-…   0B        
5d2d8fb0af26   3 minutes ago   /bin/sh -c #(nop)  EXPOSE 80                    0B        
2252911b46e1   3 minutes ago   /bin/sh -c apk update && apk upgrade &&     …   176MB     
a9bd31f1f76e   8 minutes ago   /bin/sh -c echo http://mirrors.aliyun.com/al…   95B       
7711d98f9c1c   8 minutes ago   /bin/sh -c #(nop) ADD file:9699722ea4b1dc7e0…   9.65MB    
a20143df0230   8 minutes ago   /bin/sh -c #(nop) ADD file:3fbd659b0fd55766e…   6.2MB     
c059bfaa849c   9 months ago    /bin/sh -c #(nop)  CMD ["/bin/sh"]              0B        
<missing>      9 months ago    /bin/sh -c #(nop) ADD file:9233f6f2237d79659…   5.59MB    
[root@130 ~]# docker run -d -p 80:80 nginx:v2
33f0862e22d24ef28a8d51f36409e1ba5cfa226bcdb9ec214de828e89d607512
[root@130 ~]# docker ps
CONTAINER ID   IMAGE      COMMAND                  CREATED          STATUS          PORTS                               NAMES
33f0862e22d2   nginx:v2   "/usr/sbin/nginx -g …"   44 seconds ago   Up 43 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   interesting_feynman

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值