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

文章目录

  • dockerfile以alpine为基础镜像构建nginx镜像
    • 1:alpine
    • 2:alpine软件包管理命令 apk
      • add
      • update
      • del
      • list
      • search
      • info
    • 3:alpine服务管理命令
    • 4:ubuntu
    • 5: ubuntu软件包管理命令
    • 6:apt命令
    • 7:dpkg 命令
    • 8:ubentu服务管理命令
    • 9:使用dockerfile,alpine作为基础镜像,部署nginx。
      • 9.1、apk 安装nginx
      • 9.2、源代码编译安装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 404location / {index index.html; //修改此行为此内容}# You may need this to prevent return 404 recursion.location = /404.html {internal;}
}
/ #

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镜像相关推荐

  1. Dockerfile构建Nginx镜像、镜像优化(多阶段构建,最小化镜像构建)

    Dockerfile创建镜像 Dockerfile 有以下指令选项: FROM MAINTAINER RUN CMD EXPOSE ENV ADD COPY ENTRYPOINT VOLUME USE ...

  2. Dockerfile构建nginx镜像

    Dockerfile构建nginx镜像[root@bogon ~]# mkdir /opt/docker-file [root@bogon ~]# cd /opt/docker-file/ [root ...

  3. 构建nginx镜像,部署到k8s

    创建dockerfile(Dockerfile-web),通过dockerfile构建nginx镜像 FROM nginx:stable-alpine COPY nginx.conf /etc/ngi ...

  4. Docker基于现有镜像构建新镜像

    (作者:陈玓玏) 由现有镜像构建新镜像都是通过Dockerfile文档来实现的. 1.新建Dockerfile文档 在/home文件夹下新建一个文件夹,专门用来测试的,/docker/test文件夹, ...

  5. 75-CentOS-Docker构建nginx镜像

    准备一台CentOS7-1908虚拟机虚拟机中没有docker下载源 [root@C7-Docker ~]# wget -O /etc/yum.repos.d/docker-ce.repo https ...

  6. Docker学习(3)-Docker镜像构建和使用

    Docker学习(1)-Docker简介 Docker学习(2)-Docker基础1 Docker 镜像与制作 Docker 镜像内是否包含内核(bootfs)? 首先,从镜像的体积大小来说,一个比较 ...

  7. 使用Dockerfile构建Nginx,Tomcat,MySQL镜像

    实验环境说明 本机IP地址:192.168.10.157 构建mysql镜像时,验证的主机IP:192.168.10.149 构建Nginx镜像 1.下载基础镜像--centos镜像 docker p ...

  8. 这就是你日日夜夜想要的docker!!!---------Dockerfile构建nginx、Tomcat、MySQL镜像

    文章目录 构建nginxDockerfile镜像 构建DockerfileTomcat 构建Dockerfile MySQL镜像 构建nginxDockerfile镜像 这里的nginx软件包使用ng ...

  9. Dockerfile镜像构建

    Dockerfile 文章目录 Dockerfile Docker镜像构建 Docker commmit 基于本地模板导入 Dockerfile 基本概念 文件格式 镜像缓存 dockerfile 语 ...

最新文章

  1. 杨元庆:兔子要变成狼靠的是体制的激励
  2. DeepMind科学家:AI对战《星际争霸》胜算几何?
  3. mf模型 svd++_算法小板报(六)——初探MF(矩阵分解)和FM模型
  4. 为什么没有MMU的处理器无法安装操作系统?
  5. ug11许可证文件路径安装在哪_Matlab2012a安装教程
  6. faster-rcnn系列学习之准备数据
  7. javase11源码文件_JavaSE 7,8:确定特定文件系统支持的视图
  8. 2015年创业中遇到的技术问题:141-150
  9. Spring第七弹—依赖注入之注解方式注入及编码解析@Resource原理
  10. Vlan9.com论坛 2007-10-30精华技术文档
  11. elasticsearch入门(二)
  12. 用一个键盘和鼠标控制两台双显示器计算机的最佳方法是什么?
  13. python找色_利用python检测色情图片简易实例
  14. chm转换html,chm无法用浏览器打开,Windows下如何把chm转换为html?
  15. 利用YOLO实现自己的目标检测
  16. 关于JavaScript面向对象
  17. Excel 怎么让行或列倒转过来?
  18. 利用python中basemap库绘制地图
  19. java 中showinfo方法,jmockito模拟方法中参数如何指定
  20. Linux C 语言 Socket 聊天程序(一对一)收发消息采用多线程

热门文章

  1. BurpSuite-Target使用
  2. STM32智能门锁学习二,RFID刷卡解锁
  3. 信息系统项目管理师必背核心考点(二十一)可交付成果
  4. @SuppressWarnings注解用法详解
  5. AtCoder Beginner Contest 177 A~D 题解
  6. 骑行318、 2016.7.15
  7. Burp Suite设置浏览器代理
  8. 2015年全部企业校园招聘情况+薪资水平!
  9. 问道怎么找回以前的服务器,问道服务器盘点“北京古都”传奇之地
  10. PC端浏览器自动填充账号密码输入框问题该如何解决?