dockerfile以alpine为基础镜像构建nginx镜像
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镜像相关推荐
- Dockerfile构建Nginx镜像、镜像优化(多阶段构建,最小化镜像构建)
Dockerfile创建镜像 Dockerfile 有以下指令选项: FROM MAINTAINER RUN CMD EXPOSE ENV ADD COPY ENTRYPOINT VOLUME USE ...
- Dockerfile构建nginx镜像
Dockerfile构建nginx镜像[root@bogon ~]# mkdir /opt/docker-file [root@bogon ~]# cd /opt/docker-file/ [root ...
- 构建nginx镜像,部署到k8s
创建dockerfile(Dockerfile-web),通过dockerfile构建nginx镜像 FROM nginx:stable-alpine COPY nginx.conf /etc/ngi ...
- Docker基于现有镜像构建新镜像
(作者:陈玓玏) 由现有镜像构建新镜像都是通过Dockerfile文档来实现的. 1.新建Dockerfile文档 在/home文件夹下新建一个文件夹,专门用来测试的,/docker/test文件夹, ...
- 75-CentOS-Docker构建nginx镜像
准备一台CentOS7-1908虚拟机虚拟机中没有docker下载源 [root@C7-Docker ~]# wget -O /etc/yum.repos.d/docker-ce.repo https ...
- Docker学习(3)-Docker镜像构建和使用
Docker学习(1)-Docker简介 Docker学习(2)-Docker基础1 Docker 镜像与制作 Docker 镜像内是否包含内核(bootfs)? 首先,从镜像的体积大小来说,一个比较 ...
- 使用Dockerfile构建Nginx,Tomcat,MySQL镜像
实验环境说明 本机IP地址:192.168.10.157 构建mysql镜像时,验证的主机IP:192.168.10.149 构建Nginx镜像 1.下载基础镜像--centos镜像 docker p ...
- 这就是你日日夜夜想要的docker!!!---------Dockerfile构建nginx、Tomcat、MySQL镜像
文章目录 构建nginxDockerfile镜像 构建DockerfileTomcat 构建Dockerfile MySQL镜像 构建nginxDockerfile镜像 这里的nginx软件包使用ng ...
- Dockerfile镜像构建
Dockerfile 文章目录 Dockerfile Docker镜像构建 Docker commmit 基于本地模板导入 Dockerfile 基本概念 文件格式 镜像缓存 dockerfile 语 ...
最新文章
- 杨元庆:兔子要变成狼靠的是体制的激励
- DeepMind科学家:AI对战《星际争霸》胜算几何?
- mf模型 svd++_算法小板报(六)——初探MF(矩阵分解)和FM模型
- 为什么没有MMU的处理器无法安装操作系统?
- ug11许可证文件路径安装在哪_Matlab2012a安装教程
- faster-rcnn系列学习之准备数据
- javase11源码文件_JavaSE 7,8:确定特定文件系统支持的视图
- 2015年创业中遇到的技术问题:141-150
- Spring第七弹—依赖注入之注解方式注入及编码解析@Resource原理
- Vlan9.com论坛 2007-10-30精华技术文档
- elasticsearch入门(二)
- 用一个键盘和鼠标控制两台双显示器计算机的最佳方法是什么?
- python找色_利用python检测色情图片简易实例
- chm转换html,chm无法用浏览器打开,Windows下如何把chm转换为html?
- 利用YOLO实现自己的目标检测
- 关于JavaScript面向对象
- Excel 怎么让行或列倒转过来?
- 利用python中basemap库绘制地图
- java 中showinfo方法,jmockito模拟方法中参数如何指定
- Linux C 语言 Socket 聊天程序(一对一)收发消息采用多线程