dockerfile
整理ubuntu的软件包管理命令和服务管理命令
aptget命令
aptget是debian,ubuntu发行版的包管理工具,与红帽中的yum工具非常类似,适用于deb
包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件
或操作系统。aptget在安装包的时候是据/etc/apt/sources.list文件中指定的源来寻找的安装
包,你可以根据自己的需要对这个文件进行修改。
aptget命令一般需要root权限执行,所以一般跟着sudo命令。
sudo aptget install package 安装包
sudo aptget install package reinstall 重新安装包
sudo aptget f install 修复安装”f = ——fixmissing”
sudo aptget remove package 删除包
sudo aptget remove package purge 删除包,包括删除配置文件等
sudo aptget autoremove package 删除包及其依赖的软件包
sudo aptget update 更新源
sudo aptget upgrade 更新已安装的包
sudo aptget distupgrade 升级系统
sudo aptget dselectupgrade 使用 dselect 升级
sudo aptget builddep package 安装相关的编译环境
sudo aptget source package 下载该包的源代码
sudo aptget clean && sudo aptget autoclean 清理无用的包
sudo aptget check 检查是否有损坏的依赖
aptget包含的常用的一些工具:
工具 | 说明 |
---|---|
install | 其后加上软件包名,用于安装一个软件包 |
update | 从软件源镜像服务器上下载/更新用于更新本地软件源的软件包列表 |
upgrade | 升级本地可更新的全部软件包,但存在依赖问题时将不会升级,通常会在更新之前执行一次update |
distupgrade | 解决依赖关系并升级(存在一定危险性) |
remove | 移除已安装的软件包,包括与被移除软件包有依赖关系的软件包,但不包含软件包的配置文件 |
autoremove | 移除之前被其他软件包依赖,但现在不再被使用的软件包 |
purge | 与remove相同,但会完全移除软件包,包含其配置文件 |
clean | 移除下载到本地的已经安装的软件包,默认保存在在/var/cache/apt/archives/ |
autoclean | 移除已安装的软件的旧版本软件包 |
aptget常用的参数: | |
参数 | 说明 |
:----: | :----: |
-y | 自动回应是否安装软件包的选项,在一些自动化安装脚本中使用这个参数将十分有用 |
-s | 模拟安装 |
-q | 静默安装方式,指定多个q或者q=#,#表示数字,用于设定静默级别,这在你不想要在安装软件包时屏幕输出过多时很有用 |
-f | 修复损坏的依赖关系 |
-d | 只下载不安装 |
–reinstall | 重新安装已经安装但可能存在问题的软件包 |
–installsuggests | 同时安装APT给出的建议安装的软件包 |
aptcache命令: | |
aptcache主要用于搜索包。 | |
sudo aptcache search package 搜索包 | |
sudo aptcache show package 获取包的相关信息,如说明、大小、版本等 | |
sudo aptcache showpkg package 显示软件包信息,包括包的依赖关系,包的提供者, | |
sudo aptcache pkgnames 打印软件包列表中所有包的名字 | |
sudo aptcache dumpavail 打印软件包列表中所有包的简介信息 | |
sudo aptcache depends package 了解使用依赖 | |
sudo aptcache rdepends package 是查看该包被哪些包依赖 | |
服务管理 | |
历史版本中的 Linux 对服务的操作是通过 service 来完成的; | |
目前 Linux 新的发行版已经内置了systemctl 来操作服务。 | |
service | |
可通过sercice SCRIPT COMMAND命令管理服务,SCRIPT 为/etc/init.d/中存放的可执行脚本文件: | |
service SCRIPT start:启动服务 | |
service SCRIPT stop:停止服务 | |
service SCRIPT restart:重启服务 | |
service SCRIPT status:查看状态服务 | |
此外还可以用service –statusall显示出所有系统服务列表,其中”+”代表服务正在运行,而”“代表服务处于关闭状态,”?”代表根本没 | |
有状态。 | |
用户可以添加自定义服务,将相应脚本放置于/etc/init.d/文件夹下 | |
systemctl | |
systemctl status:显示系统状态 | |
systemctl start 服务:立即激活服务 | |
systemctl stop 服务:立即停止服务 | |
systemctl restart 服务:重启服务 | |
systemctl enable 服务:开机自动激活服务 | |
systemctl disable 服务:取消开机自动激活服务 | |
systemctl daemonreload:重新载入 systemd,扫描新的或有变动的服务 |
整理alpine的软件包管理命令和服务管理命令
apk包管理命令
apk –help可以查看完整的包管理命令
apk info 列出所有已安装的软件包
a:显示完整的软件包信息
e:检测软件包的安装
L:列出软件包的内容
R:列出指定包的依赖
s:显示软件包大小
d:显示软件包的描述
–whoowns:显示指定文件属于的包
apk del:删除一个软件
apk apk update 更新最新本地镜像源
apk upgrade 升级软件
apk search 搜索可用软件包,搜索之前最好先更新镜像源
bash4.3# apk search #查找所以可用软件包
bash4.3# apk search v #查找所以可用软件包及其描述内容
bash4.3# apk search v ‘acf*’ #通过软件包名称查找软件包
bash4.3# apk search v d ‘docker’ #通过描述文件查找特定的软件包
apk add 从仓库中安装最新软件包,并自动安装必须的依赖包,也可以从第三方仓库添加软件包
bash4.3# apk add curl busyboxextras #软件以空格分开这里,这里列举我们用的最多的curl和telnet
bash4.3# apk add –nocache curl
bash4.3# apk add mongodb –updatecache –repository http://mirrors.ustc.edu.cn/alpine/v3.6/main/ –allowuntrusted #从指定镜像
源拉取
安装指定版本软件包
bash4.3# apk add mongodb=4.0.5r0
bash4.3# apk add ‘mongodb<4.0.5’
bash4.3# apk add ‘mongodb>4.0.5’
升级指定软件包
bash4.3# apk add –upgrade busybox #升级指定软件包
部署nginx
拉取alpine镜像
[root@localhost ~]# docker pull alpine:latest
latest: Pulling from library/alpine
59bf1c3509f3: Pull complete
Digest: sha256:21a3deaa0d32a8057914f36584b5288d2e5ecc984380bc0118285c70fa8c9300
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine latest c059bfaa849c 9 months ago 5.59MB
2.编写dockerfile
[root@localhost ~]# vim Dockerfile
[root@localhost ~]# cat Dockerfile
FROM alpine
RUN echo "https://mirrors.aliyun.com/alpine/v3.11/main/" > /etc/apk/repos
itories && \
echo "https://mirrors.aliyun.com/alpine/v3.11/community/" >> /etc/ap
k/repositories && \
apk add nginx && mkdir /run/nginx/
EXPOSE 80
ENTRYPOINT [ "/usr/sbin/nginx", "-g", "daemon off;" ]
[root@localhost ~]#
3.构建镜像,镜像名称为nginx:v1
[root@localhost ~]# docker build -t nginx:v1 .
Successfully built 787adacfe752
Successfully tagged nginx:v1
运行容器,映射端口
[root@localhost ~]# docker run -d --name liuaojie -p 80:80 nginx:v1
bb9f76538bde0b3bc1e7f1de49b9978b41349577b2b7e54d1e450133f6517a24
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bb9f76538bde nginx:v1 "/usr/sbin/nginx -g …" 7 seconds ago Up 6 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp liuaojie
[root@localhost ~]#
进入容器
[root@localhost ~]# docker exec -it bb9f76538bde /bin/sh
/ # vi /etc/nginx/conf.d/default.conf
/ # cat /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
/ # exit
![请添加图片描述](https://img-blog.csdnimg.cn/12fd205f89314f6cb69b23bc9ccf9ebc.jpeg)
源代码编译安装nginx
1.将nginx1.16.1.tar.gz,pcre8.44.tar.gz拖进虚拟机
[root@localhost ~]# yum -y install lrzsz
[root@localhost ~]# rz -E
rz waiting to receive.
[root@localhost ~]# rz -E
rz waiting to receive.
[root@localhost ~]# ll
total 3064
-rw-------. 1 root root 1093 Jul 21 00:02 anaconda-ks.cfg
-rw-r--r--. 1 root root 288 Aug 31 17:34 Dockerfile
-rw-r--r--. 1 root root 1032630 Aug 31 09:57 nginx-1.16.1.tar.gz
-rw-r--r--. 1 root root 2090750 Aug 31 09:57 pcre-8.44.tar.gz
[root@localhost ~]#
2.编写Dockerfile
[root@localhost ~]# vim Dockerfile
[root@localhost ~]# cat 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;"]
3.构建镜像,镜像名称为nginx:v2
[root@localhost ~]# docker build -t nginx:v2 .
Successfully built 8b58005e19e2
Successfully tagged nginx:v2
4.运行容器
[root@localhost ~]# docker run -d -p 80:80 nginx:v2
853d9df720897d0a218fe7dbf4f82579c51c0fe90c7eb3e449308757a1f8e43c
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bb9f76538bde nginx:v1 "/usr/sbin/nginx -g …" 35 minutes ago Up 35 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp liuaojie
[root@localhost ~]#