dockerfile以alpine为基础镜像构建nginx镜像

这篇具有很好参考价值的文章主要介绍了dockerfile以alpine为基础镜像构建nginx镜像。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

dockerfile以alpine为基础镜像构建nginx镜像

1:alpine

Alpine Linux 是一个社区开发的面向安全应用的轻量级Linux发行版。 Alpine 的意思是“高山的”,它采用了musl libc和busybox以减小系统的体积和运行时资源消耗,同时还提供了自己的包管理工具apk。
由于其小巧、安全、简单以及功能完备的特点,被广泛应用于众多Docker容器中。

2:alpine软件包管理命令 apk

add

apk add nginx               // 安装软件包(并自动安装依赖项)
apk add php=1.6.5     // 安装指定版本软件包

apk --no-cache add nginx    // 安装软件包, 不使用缓存

apk fix nginx               // 在不修改 WORLD 的情况下修复, 重新安装或升级软件包

update

apk update // 更新仓库
apk upgrade //更新已安装的所有软件包
apk upgeade <name>  //更新指定的软件包

del

apk del <name> //删除软件,如果它的依赖包不在被使用则会一并删除

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>          // 列出指定软件包

search

apk search <name> //搜索软件包

info

apk info <name> // 查询指定的软件包的详细信息
apk info -R <name>  // 查询指定的软件包的依赖信息

3:alpine服务管理命令

alpine系统没有使用systemctl管理服务,而是使用的rc系列命令

rc-update # 主要用于不同运行级增加或者删除服务。
rc-status # 主要用于运行级的状态管理。
rc-service # 主用于管理服务的状态
openrc # 主要用于管理不同的运行级。

用法


rc-status <service> start/stop/restart //对服务进行开启/停止/重启类似centos7的service
rc-update add [service ]   //将服务设置为开机自启

4:ubuntu

Ubuntu是世界上最流行的Linux系统之一,比Ubuntu更大的是自由软件,而比自由软件更大的则是自由软件的社区。Ubuntu社区为其使用者提供了多种学习、交流、切磋和讨论方式,如论坛、星球、维基及IRC即时通信等。通过Ubuntu庞大的社区组织,Ubuntu用户可以获得很多帮助和支持,使得Ubuntu使用起来更加得心应手

5: ubuntu软件包管理命令

ubuntu使用.DEB的软件包早期 Ubuntu 使用 apt-get 命令来管理软件包,在 Ubuntu 16.04 发布时,引入了新的包管理命令 apt。为什么要引入 apt 命令呢?
因为早期 Linux 包管理命令都被分散在了 apt-get、apt-cache、apt-config 这三条命令当中。那么 apt 命令的引入就是为了解决命令过于分散的问题。简单来说就是:apt = apt-get、apt-cache、apt-config 中最常用命令选项的集合。
在系统中,我们还可以使用 dpkg 程序来安装单个的 deb 文件,APT 命令作为底层 dpkg 的前端,有时也会直接调用它。

6:apt命令

apt install <name>    //安装软件包
apt remove <name>    //移除软件包
apt purge <name>    //移除软件包及配置文件
apt update          //刷新存储库索引
apt upgrade         //升级所有可升级的软件包
apt autoremove      //自动删除不需要的包
apt full-upgrade    //在升级软件包时自动处理依赖关系
apt search <name>   //搜索软件包
apt show            //显示安装过程

7:dpkg 命令

dpkg -i  name.deb       //安装本地软件包,不解决依赖关系
dpkg -l  package         //查找已经安装软件包 package 的信息,精简
dpkg -l                 //列出当前已经按照的包
dpkg -r package         //删除软件包,但不会删除依赖包
dpkg -P package.deb     //删除包(包括配置文件)
dpkg --get-selections pattern  //查找软件包名称包含 pattern 的软件包,在后面用 grep install/deinstall 来选择是否已经被 remove 的包(曾经安装过了的)
dpkg -L package         //列出该包所包含的文件
dpkg -I package.deb //查找已经下载但末安装的 package.deb 软件包的信息
dpkg -S                //查看文件所属那个包
dpkg -c package.deb //查找已经下载但末安装的 package.deb 软件包包含哪些文件

8:ubentu服务管理命令

在ubentu中可以使用

systemctl servername start/stop/restart

命令来管理服务的开启停止和关闭
也可以使用

service servername start/stop/resstaert

管理

9:使用dockerfile,alpine作为基础镜像,部署nginx。

9.1、apk 安装nginx

[root@server1 dd]# vim Dockerfile //编写dockerfile文件
[root@server1 dd]# cat Dockerfile
FROM alpine:latest
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@server1 dd]# docker build -t nginx:alpine .  //制作镜像
Sending build context to Docker daemon  2.048kB
Step 1/4 : FROM alpine:latest
 ---> c059bfaa849c
Step 2/4 : 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/
 ---> Running in f59c6fbfc070
fetch https://mirrors.aliyun.com/alpine/v3.11/main/x86_64/APKINDEX.tar.gz
fetch https://mirrors.aliyun.com/alpine/v3.11/community/x86_64/APKINDEX.tar.gz
(1/2) Installing pcre (8.43-r1)
(2/2) Installing nginx (1.16.1-r8)
Executing nginx-1.16.1-r8.pre-install
Executing busybox-1.34.1-r3.trigger
OK: 7 MiB in 16 packages
Removing intermediate container f59c6fbfc070
 ---> a5b30c0f1485
Step 3/4 : EXPOSE 80
 ---> Running in a7e6baf6100a
Removing intermediate container a7e6baf6100a
 ---> cd84a802da61
Step 4/4 : ENTRYPOINT [ "nginx", "-g", "daemon off;" ]
 ---> Running in 3d76d0d3b1d9
Removing intermediate container 3d76d0d3b1d9
 ---> e016af83f75b
Successfully built e016af83f75b
Successfully tagged nginx:alpine    

[root@server1 dd]# docker run -dit --name ttt -p 88:80 nginx:alpine  //创建容器
c95dddab3fb9dc4d01f7f310dc6c3570ef6f6814ea4e13449b58aa2490e13d00
[root@server1 dd]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                               NAMES
c95dddab3fb9   nginx:alpine   "nginx -g 'daemon of…"   4 seconds ago   Up 3 seconds   0.0.0.0:88->80/tcp, :::88->80/tcp   ttt
[root@server1 dd]# docker exec -it  ttt /bin/sh  //进入容器修改配置文件使nginx能够正常访问
    modules/        nginx.conf      scgi_params     uwsgi_params
/ # 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;
        }
}
/ #

dockerfile以alpine为基础镜像构建nginx镜像

9.2、源代码编译安装nginx

[root@server1 ~]# mkdir dd
[root@server1 ~]# cd dd
[root@server1 dd]# ls  
nginx-1.16.1.tar.gz  pcre-8.44.tar.gz
[root@server1 dd]# vim Dockerfile  //编写dockerfile
[root@server1 dd]# cat Dockerfile
FROM alpine:latest //指定基础镜像
ADD nginx-1.16.1.tar.gz /home/   //将本地的nginx的源码包copy并解压到镜像中
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/ && \
    rm -rf /home/nginx-1.16.1 && \
    rm -rf /home/pcre-8.44 && \
    apk del gcc && \
    apk del g++ && \
    rm -rf /apk/repositories && \
    mkdir -p /usr/local/nginx/conf/vhost/
EXPOSE 80
CMD ["/usr/sbin/nginx","-g","daemon off;"]
[root@server1 dd]# docker build -t nginx:alpine .   //制作镜像 
Sending build context to Docker daemon  3.127MB
Step 1/7 : FROM alpine:latest
 ---> c059bfaa849c
Step 2/7 : ADD nginx-1.16.1.tar.gz /home/
 ---> 5d0a00b2af46
....................
Removing intermediate container 951ba0eb420d
 ---> d6a25abc0141
Step 7/7 : CMD ["/usr/sbin/nginx","-g","daemon off;"]
 ---> Running in 28e1c65364f7
Removing intermediate container 28e1c65364f7
 ---> f4e71f504e65
Successfully built f4e71f504e65
Successfully tagged nginx:alpine
[root@server1 dd]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        alpine    f4e71f504e65   6 seconds ago   28.8MB
alpine       latest    c059bfaa849c   9 months ago    5.59MB
centos       7         eeb6ee3f44bd   11 months ago   204MB
[root@server1 dd]# docker run -d --name vcvc -p 88:80 nginx:alpine
cb5f734cf422dc77e18de321ab9a9b602e49b52583f6a768050483e7d835efdb

浏览器访问测试
dockerfile以alpine为基础镜像构建nginx镜像文章来源地址https://www.toymoban.com/news/detail-421551.html

到了这里,关于dockerfile以alpine为基础镜像构建nginx镜像的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于dockerfile构建sshd、httpd、nginx、tomcat、mysql、lnmp、redis镜像

    一、镜像概述 Docker 镜像是Docker容器技术中的核心,也是应用打包构建发布的标准格式。一个完整的镜像可以支撑多个容器的运行,在Docker的整个使用过程中,进入一个已经定型的容器之后,就可以在容器中进行操作,最常见的操作就是在容器中安装应用服务。 如果想要把已

    2024年02月14日
    浏览(49)
  • Docker基础入门:容器数据卷与Dockerfile构建镜像(发布)

    💖The Begin💖点点关注,收藏不迷路💖 1、完成数据持久化和共享数据,docker容器中的数据,同步到本地。 2、重要数据back_up 特点: 实时生效、数据卷可在容器之间共享和重用数据、数据卷中的更改不会包含在镜像更新中、数据卷的生命周期会一直延续到没有容器使用它为止

    2024年02月10日
    浏览(55)
  • Docker基础(镜像的结构,Dockerfile语法介绍,基于Ubuntu镜像来构建一个Java应用)

    要想自己构建镜像,必须先了解镜像的结构。 镜像之所以能让我们快速跨操作系统部署应用而忽略其运行环境、配置,就是因为镜像中包含了程序运行需要的系统函数库、环境、配置、依赖。 因此,自定义镜像本质就是依次准备好程序运行的基础环境、依赖、应用本身、运

    2024年02月20日
    浏览(49)
  • docker使用alpine构建jdk21镜像

            项目使用的是springboot3.0,进行docker打包的时候需要jdk17以上,索性我就使用jdk21了,但是进行docker打包的时候,没有找到jdk21的镜像包,所以就想自己打包一个。         1.最初想要基于centOS去封装一个镜像,但是觉得这个包体会比较大,然后了解到了alpine这个基

    2024年01月16日
    浏览(38)
  • docker Alpine镜像介绍(基础镜像)

    https://hub.docker.com/_/alpine https://github.com/alpinejs/alpine Alpine镜像 是一个基于Alpine Linux发行版构建的Docker镜像。Alpine Linux是一个轻量级的Linux发行版,它的目标是提供一个安全、简单、高效的操作系统。Alpine Linux采用了musl libc和BusyBox来最小化系统的大小,并且使用了自己的包管理

    2024年02月13日
    浏览(46)
  • 基于 Alpine 环境源码构建 alibaba-tengine(阿里巴巴)的 Docker 镜像

    Alpine Linux 是一款极其轻量级的 Linux 发行版,基于 busybox ,多被当做 Docker 镜像的底包(基础镜像),在使用容器时或多或少都会接触到此系统,本篇文章我们以该镜像构建 tengine-alpine 镜像。 说明:此处以 alpine 3.18.3 tengine 3.0.0 为实验进行容器镜像构建。 小巧: 基于 Musl li

    2024年02月11日
    浏览(51)
  • Docker学习(二十三)构建 nginx 基础镜像

    在使用容器化部署项目的过程中,我们经常会需要用到 nginx 镜像来作为前端服务的基础镜像,或者作为后端服务的转发和负载均衡。今天我们就一起来看一下如何使用 Dockerfile 构建 nginx 基础镜像。 这里主要介绍三种构建方式: 通过 yum 安装方式构建: 无需手动编译安装,可

    2024年02月08日
    浏览(54)
  • docker制作m3u8web播放器镜像基于nginx-alpine镜像

    ZY Player Web项目:https://github.com/Hunlongyu/ZY-Player-Web 这是一个开源的m3u8 web播放器。我们基于这个项目进行打包 打包使用的Dockerfile 打包和运行

    2024年01月19日
    浏览(59)
  • Dockerfile镜像构建

    配置daemon.json文件 提高资源利用率,节约部署IT成本. 提高部署效率,基于kubernetes实现快速部署交付,秒级启动. 实现横向扩容,灰度部署,回滚等. 可根据业务负载进行弹性扩展. 容器将环境和代码打包在镜像内,保证了测试与生产环境一致性. docker pull 拉取基础镜像(centos,ubuntu,alpin

    2024年01月21日
    浏览(50)
  • Dockerfile构建镜像

    dockerfile是 自定义镜像 的一套规则 dockerfile由多条指令构成,Dockerfile中的每一条指令都会对应于Docker镜像中的每一层 dockerfile的原理就是镜像分层。 Dockerfile 中的 每个指令都会创建一个新的镜像层 (是一个临时的容器,执行完后将不再存在,再往后进行重新的创建与操作)

    2024年02月17日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包