Dockerfile实例

一、整理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命令

开启服务

#service 服务名 start
service nginx start

关闭服务

#service 服务名 stop
service nginx stop

重启服务

#service 服务名 restart
service nginx restart

查看服务状态

#service 服务名 status
service nginx status
二、整理alpine的软件包管理命令和服务管理命令

Alpine Linux 包管理

apline安装源管理

inux默认的都是外国的服务器,我们访问比较慢,所以就有了镜像服务器放在国内

$ sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
$ sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
# 还原官方使用
sed -i 's/mirrors.aliyun.com/dl-cdn.alpinelinux.org/g' /etc/apk/repositories

更改完 /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/下。

$ apk update

2、add:安装PACKAGES并自动解决依赖关系

add命令从仓库中安装软件包,自动管理依赖。

$ 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

安装指定版本软件包

$ apk add asterisk=1.6.0.21-r0
$ apk add 'asterisk
$ apk add 'asterisk>1.6.1'

3、del:卸载并删除PACKAGES

$ apk del openssh openntp vim

4、upgrade:升级当前已安装的软件包 upgrade命令升级系统已安装的所以软件包(一般包括内核),当然也可指定仅升级部分软件包(通过-u或–upgrade选择指定)。

$ apk update #更新最新本地镜像源
$ apk upgrade #升级软件
$ apk add --upgrade busybox #指定升级部分软件包

5、search:搜索软件包

search命令搜索可用软件包,-v参数输出描述内容,支出通配符,-d或—description参数指定通过软件包描述查询。

$ apk search #查找所以可用软件包
$ apk search -v #查找所以可用软件包及其描述内容
$ apk search -v 'acf*' #通过软件包名称查找软件包
$ apk search -v -d 'docker' #通过描述文件查找特定的软件包

6、info命令用于显示软件包的信息。

$ 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

# 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

在这里插入图片描述

# 源代码编译安装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

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值