dockerfile
ubuntu的软件包管理命令和服务管理命令
ubuntu的软件包管理命令
1.安装软件包
apt install package
2.移除软件包
apt remove package
3.移除软件包及配置文件
apt purge package
4.刷新存储库索引
apt update
5.升级所有可升级的软件包
apt upgrade
6.自动删除不需要的包
apt autoremove
7.在升级软件包时自动处理依赖关系
apt full-upgrade
8.搜索应用程序
apt search package
9.显示安装细节
apt show
Ubuntu软件包管理
Debian为软件包定义的包名称叫 deb ,类似于 rpm 包。对于 deb 包的管理方式有 dpkg 、apt 两种方式
dpkg:package manager for Debin ,是基于 Debian 系统的包管理器。可以安装、删除,但无法解决依赖项 apt:advanced Packaging Tool ,功能强大的软件管理工具,类似于 `dnf/yum
dpkg包管理
1.安装软件包
dpkg -i package.deb
2.使用dkpg删除软件包
不建议、不自动卸载依赖它的包
root@ubuntu:~# dpkg -r package.deb
删除包(包括配置文件)
root@ubuntu:~# dpkg -P package.deb
3.使用dpkg查看软件包 #列出当前已经按照的包,类似于rpm -qa
dpkg -l
#列出该包所包含的文件,类似于rpm -ql #dpkg -L package
#查看文件所属那个包,类似于rpm -qf root@ubuntu:~# whereis ping root@ubuntu:~# dpkg -S /bin/ping
ubuntu服务管理命令
添加一个服务 sudo update-rc.d 服务名 defaults
删除一个服务 sudo update-rc.d -f 服务名 remove
服务启动和停止 /etc/init.d/服务名 start|restart|stop
查看服务状态 sudo service 服务名 status
开启服务 sudo service 服务名 start
关闭服务 sudo service 服务名 stop
重启服务 sudo service 服务名 restart
查看服务列表代码 service --status-all
启动开机时的服务代码 sudo update-rc.d -f myservice default
停止开机时的服务代码 sudo update-rc.d -f myservice remove
alpine的软件包管理命令和服务管理命令
更新
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 命令格式: apk […] COMMAND […], 其中每个子命令的 [OPTIONS…] 参数信息可以使用 --help 查询,如: apk add --help
卸载
apk del <package> # 删除软件包, 如果其依赖项不再本需要, 则将其一起卸载
# 删除软件包时默认会执行类似 apt autoremove 的清理操作
3.查询/搜索/缓存 软件包
列出软件包 (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 # 删除旧软件包并下载缺少的程序包(上面两个步骤合并为一个)
使用缓存需要先开启缓存: https://wiki.alpinelinux.org/wiki/Local_APK_cache
4.下载/离线安装 apk 软件包
使用 apk fetch 命令下载软件包到本地 (.apk 文件):
apk fetch [<OPTIONS>...] PACKAGES... # 从配置的软件包仓库中下载软件包到本地
# apk fetch --help 命令参数 (Fetch options):
# -L, --link 如果可能的话, 创建硬链接
# -o, --output DIR 下载到指定文件夹(默认为当前文件夹)
# -R, --recursive 下载软件包及其依赖项
# -s, --stdout 将 .apk 文件转储到标准输出
# --simulate 模拟请求的操作,不做任何更改
下载软件包及其依赖项并离线安装示例:
$ apk fetch -R <package> # 下载软件包及其依赖项
$
$ ls # 下载的软件包是 .apk 格式
xxxx.apk. xxxx.apk ...
$
$ apk add xxxx.apk xxxx.apk ... # 离线安装 apk 软件包及其依赖项
alpine没有使用fedora的systemctl来进行服务管理,使用的是RC系列命令
rc-update
rc-update主要用于不同运行级增加或者删除服务。
# rc-update --help
Usage: rc-update [options] add <service> [<runlevel>...]
or: rc-update [options] del <service> [<runlevel>...]
or: rc-update [options] [show [<runlevel>...]]
Options: [ asuChqVv ]
-a, --all Process all runlevels
-s, --stack Stack a runlevel instead of a service
-u, --update Force an update of the dependency tree
-h, --help Display this help output
-C, --nocolor Disable color output
-V, --version Display software version
-v, --verbose Run verbosely
-q, --quiet Run quietly (repeat to suppress errors)
rc-status
rc-status 主要用于运行级的状态管理。
# rc-status --help
Run quietly (repeat to suppress errors)
rc-service
rc-service主用于管理服务的状态
openrc
openrc主要用于管理不同的运行级。
# openrc --help
Usage: openrc [options] [<runlevel>]
Options: [ a:no:s:SChqVv ]
-n, --no-stop do not stop any services
-o, --override <arg> override the next runlevel to change into
when leaving single user or boot runlevels
-s, --service <arg> runs the service specified with the rest
of the arguments
-S, --sys output the RC system type, if any
-h, --help Display this help output
-C, --nocolor Disable color output
-V, --version Display software version
-v, --verbose Run verbosely
-q, --quiet Run quietly (repeat to suppress errors)
**常用的RC系列命令**
1.增加服务到系统启动时运行,下例为docker
rc-update add docker boot
2.重启网络服务
rc-service networking restart
3.列出所有服务
rc-status -a
五:关机重启
$ reboot #重启系统
$ poweroff #关机
使用dockerfile,alpine作为基础镜像,部署nginx。
使用alpine部署nginx
[root@localhost ~]# vim Dockerfile FROM alpine 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@localhost ~]# docker build -t nginx:wyn0116 . Sending build context to Docker daemon 657.6MB Step 1/4 : FROM alpine latest: Pulling from library/alpine 213ec9aee27d: Pull complete Digest: sha256:bc41182d7ef5ffc53a40b044e725193bc10142a1243f395ee852a8d9730fc2ad Status: Downloaded newer image for alpine:latest —> 9c6f07244728 …
Successfully built 61da59e10ded Successfully tagged nginx:wyn0116 [root@localhost ~]# docker run -d -P nginx:wyn0116 918140a84453ac93dea91e7339c8129b4805ec4a2feefc43233833dab1e4ff5b [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 918140a84453 nginx:wyn0116 “/usr/sbin/nginx -g …” 7 seconds ago Up 6 seconds 0.0.0.0:49153->80/tcp, :::49153->80/tcp modest_bartik [root@localhost ~]# docker exec -it 918140a84453 /bin/sh / # vim /bin/sh: vim: not found / # vi /etc/nginx/conf.d/default.conf / # nginx -s reload
使用浏览器访问验证
基于alpine构建nginx镜像
1、apk 安装nginx
[root@localhost ~]# ls
Centos-7.repo anaconda-ks.cfg nginx-1.16.1.tar.gz
Dockerfile epel-7.repo pcre-8.44.tar.gz
2、源代码编译安装nginx
[root@localhost ~]# 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@localhost ~]# docker build -t nginx:100 .
Sending build context to Docker daemon 3.156MB
Step 1/7 : FROM alpine:latest
---> 9c6f07244728
Step 2/7 : ADD nginx-1.16.1.tar.gz /home/
---> 697a2d0fbccf
Step 3/7 : ADD pcre-8.44.tar.gz /home/
......
Successfully built 86ffff2e2a67
Successfully tagged nginx:100
[root@localhost ~]# docker run -d -p 80:80 nginx:100
b1a10dd6f3692b5038d3a92dedd80182ebcba37ea6987fcb2f5807e1b8ffa85c
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b1a10dd6f369 nginx:100 "nginx -g 'daemon of…" 8 seconds ago Up 6 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp gifted_shirley
使用浏览器访问验证
|