dockerfile

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包的管理方式有 dpkgapt两种方式

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

使用浏览器访问验证
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值