前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Dockerfile实例

Dockerfile实例

作者头像
Alone-林
发布2023-03-17 11:06:32
4260
发布2023-03-17 11:06:32
举报
文章被收录于专栏:Linux云运维Linux云运维

一、整理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默认的都是外国的服务器,我们访问比较慢,所以就有了镜像服务器放在国内

更改完 /etc/apk/repositories 文件后请运行 apk update 更新索引以生效

代码语言:javascript
复制
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
在这里插入图片描述
在这里插入图片描述
本文参与?腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体同步曝光计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、整理ubuntu的软件包管理命令和服务管理命令
    • 二、整理alpine的软件包管理命令和服务管理命令
      • 三、使用dockerfile,alpine作为基础镜像,部署nginx。
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
      http://www.vxiaotou.com