一、整理ubuntu的软件包管理命令和服务管理命令
Ubuntu软件包管理
Debian软件包的包名叫 deb ,类似于rpm包; deb 包的管理方式有 dpkg 、apt 两种方式deb包。对于软件管理有dpkg apt两种:
- dpkg : package manager for Debin ,可以实现安装、删除,但无法解决依赖项;
- apt : advanced Packaging Tool ,功能强大的软件管理工具,类似于 dnf/yum ;
dpkg命令 – 管理软件安装包
语法格式:dpkg [参数] 软件包
常用参数:
-i | 安装软件包 |
---|---|
-r | 删除软件包 |
-l | 显示已安装软件包列表 |
-L | 显示于软件包关联的文件 |
-c | 显示软件包内文件列表 |
apt-get命令 – 管理服务软件
语法格式:apt-get [参数] 软件名
常用参数:
update | 重新获取软件包列表 |
---|---|
upgrade | 更新软件 |
install | 安装软件 |
remove | 卸载软件 |
autoremove | 自动卸载不使用的软件 |
source | 下载源代码 |
build-dep | 编译依赖关系 |
dist-upgrade | 更新系统 |
purge | 删除配置文件 |
clean | 清理垃圾文件 |
check | 检查是否损坏 |
ubuntu启动、关闭、重启服务service命令
开启服务
代码语言:javascript复制#service 服务名 start
service nginx start
关闭服务
代码语言:javascript复制#service 服务名 stop
service nginx stop
重启服务
代码语言:javascript复制#service 服务名 restart
service nginx restart
查看服务状态
代码语言:javascript复制#service 服务名 status
service nginx status
二、整理alpine的软件包管理命令和服务管理命令
Alpine Linux 包管理
apline安装源管理
inux默认的都是外国的服务器,我们访问比较慢,所以就有了镜像服务器放在国内
- 中科大:http://mirrors.ustc.edu.cn/alpine/
- 清华大学:https://mirror.tuna.tsinghua.edu.cn/alpine/
更改完 /etc/apk/repositories 文件后请运行 apk update
更新索引以生效
apk upgrade --no-cache
alpine 常用包管理命令
Alpine使用apk进行包管理,通过apk –help命令查看完整的包管理命令,下面列举常用命令:
1、update:从远程镜像源中更新本地镜像源索引
update命令会从各个镜像源列表下载APKINDEX.tar.gz并存储到本地缓存,一般在/var/cache/apk/(Alpine在该目录下)、 /var/lib/apk/ 、/etc/apk/cache/下。
代码语言:javascript复制$ apk update
2、add:安装PACKAGES并自动解决依赖关系
add命令从仓库中安装软件包,自动管理依赖。
代码语言:javascript复制$ apk add openssh openntp vim
$ apk add --no-cache mysql-client
$ apk add docker --update-cache --repository http://mirrors.ustc.edu.cn/alpine/v3.4/main/ --allow-untrusted
安装指定版本软件包
代码语言:javascript复制$ apk add asterisk=1.6.0.21-r0
$ apk add 'asterisk
$ apk add 'asterisk>1.6.1'
3、del:卸载并删除PACKAGES
代码语言:javascript复制$ apk del openssh openntp vim
4、upgrade:升级当前已安装的软件包 upgrade命令升级系统已安装的所以软件包(一般包括内核),当然也可指定仅升级部分软件包(通过-u或–upgrade选择指定)。
代码语言:javascript复制$ apk update #更新最新本地镜像源
$ apk upgrade #升级软件
$ apk add --upgrade busybox #指定升级部分软件包
5、search:搜索软件包
search命令搜索可用软件包,-v参数输出描述内容,支出通配符,-d或—description参数指定通过软件包描述查询。
代码语言:javascript复制$ apk search #查找所以可用软件包
$ apk search -v #查找所以可用软件包及其描述内容
$ apk search -v 'acf*' #通过软件包名称查找软件包
$ apk search -v -d 'docker' #通过描述文件查找特定的软件包
6、info命令用于显示软件包的信息。
代码语言:javascript复制$ apk info #列出所有已安装的软件包
$ apk info -a zlib #显示完整的软件包信息
$ apk info --who-owns /sbin/lbu #显示指定文件属于的包
Alpine Linux服务管理
alpine没有使用 systemctl 来进行服务管理,使用的是 rc
系列命令
精简版的 alpine 是没有 rc 系列命令的,可用
apk add --no-cache openrc
安装
- rc-update 主要用于不同运行级增加或者删除服务
- rc-status 主要用于运行级的状态管理
- rc-service 主用于管理服务的状态
- openrc 主要用于管理不同的运行级
三、使用dockerfile,alpine作为基础镜像,部署nginx。
1、apk 安装nginx 2、源代码编译安装nginx
代码语言:javascript复制# apk 安装nginx
[root@zhao ~]#mkdir nginx
[root@zhao ~]#cd nginx
[root@zhao ~/nginx]#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@zhao ~/nginx]#docker build -t nginx-a:v1 .
[root@zhao ~/nginx]#docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx-a v1 680497aefd6d About a minute ago 8.54MB
alpine latest 9c6f07244728 3 weeks ago 5.54MB
centos latest 5d0da3dc9764 11 months ago 231MB
[root@zhao ~/nginx]#docker run -d -P nginx-a:v1
7ef50af037649cecaff747c018a6e63e0b0941eee8df94546044c8b7510b46d1
[root@zhao ~/nginx]#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7ef50af03764 nginx-a:v1 "nginx -g 'daemon of…" 4 seconds ago Up 3 seconds 0.0.0.0:49153->80/tcp, :::49153->80/tcp practical_brown
[root@zhao ~/nginx]#docker exec -it 7ef50af03764 /bin/sh
/ # vi /etc/nginx/conf.d/default.conf
# This is a default site configuration which will simply return 404, preventing
# chance access to any other virtualhost.
server {
listen 80 default_server;
listen [::]:80 default_server;
# Everything is a 404
location / {
index index.html;
}
# You may need this to prevent return 404 recursion.
location = /404.html {
internal;
}
}
/ # nginx -s reload
代码语言:javascript复制# 源代码编译安装nginx
[root@zhao ~/nginx-alpine]#tree
.
├── Dockerfile
└── software
└── nginx-1.19.7.tar.gz
1 directory, 2 files
[root@zhao ~/nginx-alpine]#vim Dockerfile
FROM alpine:latest
ENV version 1.19.7
ENV PATH /usr/local/nginx/sbin:$PATH
ADD software/nginx-${version}.tar.gz /usr/src
EXPOSE 80
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories &&
adduser -S -H -s /sbin/nologin nginx &&
apk add --no-cache -U pcre-dev openssl openssl-dev gd-dev g zlib-dev make &&
mkdir -p /var/log/nginx &&
chown -R nginx /var/log/nginx &&
cd /usr/src/nginx-${version} &&
./configure
--prefix=/usr/local/nginx
--user=nginx
--group=nginx
--with-debug
--with-http_ssl_module
--with-http_realip_module
--with-http_image_filter_module
--with-http_gunzip_module
--with-http_gzip_static_module
--with-http_stub_status_module
--http-log-path=/var/log/nginx/access.log
--error-log-path=/var/log/nginx/error.log &&
make && make install &&
sed -i '/nobody/s/#//g' /usr/local/nginx/conf/nginx.conf &&
rm -rf /var/cache/* /usr/src/*
WORKDIR /usr/local/nginx
CMD ["-g","daemon off;"]
ENTRYPOINT ["/usr/local/nginx/sbin/nginx"]
[root@zhao ~/nginx-alpine]#docker build -t nginx-s:v1 .
Successfully built 942391d0e251
Successfully tagged nginx-s:v1
[root@zhao ~/nginx-alpine]#docker run -d --name nginxv1 -p 80:80 nginx-s:v1
7db71468b11cdf3bcd6c116453f40284ba5b3817a21fcbfd8f821b335a743745
[root@zhao ~/nginx-alpine]#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7db71468b11c nginx-s:v1 "/usr/local/nginx/sb…" 4 seconds ago Up 3 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 443/tcp nginxv1