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