网页设计与制作是什么意思,沈阳网站优化培训,wordpress编辑器大家用什么,福州seo网络推广目录 一、每种资源的预安装#xff08;基础#xff09;
安装 nginx安装 redis
二、dockerfile文件制作#xff08;基础#xff09;
打包 redis 镜像 创建镜像制作空间制作dockerfile 打包 nginx 镜像
三、创建组合镜像#xff08;方式一#xff09;
生成centos容器并… 目录 一、每种资源的预安装基础
安装 nginx安装 redis
二、dockerfile文件制作基础
打包 redis 镜像 创建镜像制作空间制作dockerfile 打包 nginx 镜像
三、创建组合镜像方式一
生成centos容器并运行开启端口转发通过yum源下载相应依赖 替换repo文件内容重新生成缓存下载相关依赖添加自启动nginx配置 在容器中安装多样程序创建新的镜像
四、创建组合镜像方式二
dockerfile文件内容startng.sh文件内容
五、对做好的镜像运维
导出镜像 将容器保存为新的镜像将docker保存生成tar文件导出将新的镜像文件进行压缩 导入镜像 解压缩文件载入镜像运行容器
总结
预打包单个程序-v 命令特比方便尝试理解运行原理会有新的发现docker打包方式不止两种 一、每种资源的预安装
在系统环境安装程序。为打包docker准备数据文件
1. 安装 nginx
1. 下载安装包
wget http://nginx.org/download/nginx-1.21.5.tar.gz
2. 解压缩到指定目录下
tar zxvf nginx-1.21.5.tar.gz -C /usr/local/src
3. cd nginx-1.21.5
4. 安装必要依赖
yum install -y install pcre-devel openssl openssl-devel
5. 编译nginx. 执行命令后此时/opt/server/nginx目录还没有创建.
./configure --prefix/opt/server/nginx --with-http_ssl_module --with-http_stub_status_module --with-stream
6. 安装Nginx. 自动创建/opt/server/nginx目录
make make install2. 安装 redis
跟随 文章 进行redis安装安装时有可能需首先安装如下依赖环境需要 首先安装依赖系统 centos 7程序将使用标准C库libc的内存分配函数如 malloc, free, realloc 等来管理内存。这通常用于确保与特定系统或库的兼容性yum install gcc-c -y
make MALLOClibc二、dockerfile文件制作 Ⅰ、打包 redis 镜像 ★ 使用docker build 构建 镜像前要启动docker服务 linux环境 启动docker服务 systemctl start docker.service ★ 以下命令介绍摘自文章 |
FROM #基础镜像 一切从这里开始构建
MAINTAINER #镜像是谁写的,姓名邮箱
RUN #镜像构建的时候需要运行的命运
ADD #步骤,tomcat镜像,这个tomcat压缩包!
WORKDIR #镜像的工作目录
VOLUME #挂载的目录
EXPOST #暴露端口配置
CMD #指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT #指定这个容器启动时要运行的命令,可以追加命令
ONBUILD #当构建一个被继承DockerFile 这个时候就会运行ONVUILD 的指令,触发指令
COPY #类型ADD ,将我们文件拷贝到镜像中
ENV #构建的时候设置环境变量!1. 编写Dockerfile文件及命令解释(借鉴redis打包docker镜像 https://www.cnblogs.com/xiao98…)
创建镜像制作空间mkdir -p /opt/dockerfile/redis
cd /opt/dockerfile/redis制作dockerfile FROM安装5.0.14版本redis, docker会自动寻找redis版本为5.0.14的redis镜像进行安装COPY复制宿主机当前目录下的redis.conf文件 至 容器中/usr/local/etc/redis/redis.conf文件CMD运行容器, 执行redis-server /usr/local/etc/redis/redis.conf命令启动redis注意RUN命令在镜像创建的时候执行利用当前系统环境通过命令将依赖打包入镜像完成安装。注意CMD命令在容器启动后运行如容器启动后运行程序等。 FROM redis:5.0.14
COPY redis.conf /usr/local/etc/redis/redis.conf
CMD [redis-server, /usr/local/etc/redis/redis.conf]2. 编写redis.conf文件也可使用原redis.conf文件(官方文件, 内容较多, 这里编写的为精简后的内容)
dirredis数据文件存储路径, 如持久化文件pidfile进程文件存储路径logfile日志文件存储路径requirepass客户端连接redis登陆时所需密码maxmemory 2048m这设置了Redis服务器的最大内存限制为2048MB。当达到这个限制时Redis将开始根据maxmemory-policy策略删除一些键来释放空间。maxmemory-policy allkeys-lru这是关于内存管理的策略。当达到maxmemory限制时这个策略会选择并删除最少使用的键。。。。剩余可百度或使用文心一言自行查阅内容解释文心一言dir /data
pidfile /data/redis.pid
logfile /data/redis.log
repl-disable-tcp-nodelay yes
no-appendfsync-on-rewrite yes
maxmemory 2048m
maxmemory-policy allkeys-lru
requirepass 123456
3. 制作镜像
redis_pro:5.0.14 这个名称会在启动容器时用到 |docker build -t redis_pro:5.0.14 .4. 编写启动容器脚本文件run.sh并执行sh run.sh
runs.sh文件内容 –restart:always 当容器退出时总是尝试重启容器–name给这个容器起一个名字名为redis_prodredis_prod:5.0.14给镜像取一个名字-v /data/redis:/data -v 命令对容器内数据进行持久化。1如果容器内的 /data 目录有数据那么这些数据实际上是存储在宿主机的 /data/redis 目录中。2如果在容器内对 /data 目录进行了修改例如写入了数据那么这些更改也会反映到宿主机的 /data/redis 目录中。 docker run -d -it --name redis_prod --restartalways -p 6379:6379 -v /data/redis:/data redis_prod:5.0.145. 查看镜像运行情况
docker ps -a Ⅱ、打包 nginx 镜像 6. 操作步骤与打包redis相同
mkdir -p /opt/dockerfile/nginx
cd /opt/dockerfile/nginxdockerfile
FROM nginx:1.21.5
COPY /opt/server/nginx/conf/nginx.conf /etc/nginx.conf
CMD [nginx,-c,/etc/nginx.conf]run.sh
docker run -d -it --name nginx-t1 -p 8081:80 -v /tmp/nginx:/var/log/nginx/ nginx:1.21.5三、创建组合镜像方式一
★ 原理通过在centos镜像容器中安装相关程序。再对此容器做镜像导出。
1. 生成centos容器并运行。
做dockerfileFROM centos:latest通过build命令创建镜像docker build -t centos .运行docker run -d -it --name centos centos2. 开启端口转发宿主机中配置使运行的docker容器需要能够访问外网
配置宿主机ipv4转发echo net.ipv4.ip_forward 1 /etc/sysctl.conf ###复制到终端上以root用户身份执行。
sysctl -p ###使更改立即生效3. 通过yum源下载相应依赖docker容器中按步骤走才能使用yum
替换repo文件内容使得yum源可用。cd /etc/yum.repos.d/
sed -i s/mirrorlist/#mirrorlist/g /etc/yum.repos.d/CentOS-*
sed -i s|#baseurlhttp://mirror.centos.org|baseurlhttp://vault.centos.org|g /etc/yum.repos.d/CentOS-*重新生成缓存yum makecache下载相关依赖yum update -y # 下载更新最新软件包
yum install -y nginx # 如添加vim工具等(这里以nginx安装为例)添加自启动nginx配置 编写startng.sh#!/bin/bash
nginx
/bin/bash4. 在容器中安装多样程序。
最后使用commit, 如 第五步骤 对程序进行导出即可。 在运行的docker容器中安装nginx, redis, postgresql, mongodb, java springboot即可。
5. 创建新的镜像
导出后编辑dockerfile对commit打包的镜像创建新的镜像。
dockerfile如导出镜像名称为 mycentosFROM mycentos
ENTRYPOINT [sh, /startng.sh]docker build -t mycentosng .
docker run -d -it --name mycentosng -p 8080:80 mycentosng
docker ps -a # 查看容器是否启动成功四、创建组合镜像方式二
★ 原理使用dockerfile 对镜像创建步骤进行编辑 dockerfile文件内容 组合了方式一中的内容。制作的镜像运行启动后会自动运行nginx sed 部分更换yum源 FROM centos:latest
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN cd /etc/yum.repos.d/ \
sed -i s/mirrorlist/#mirrorlist/g /etc/yum.repos.d/CentOS-* \
sed -i s|#baseurlhttp://mirror.centos.org|baseurlhttp://vault.centos.org|g /etc/yum.repos.d/CentOS-*
RUN yum makecache
RUN yum update -y
RUN yum install -y pcre-devel openssl openssl-devel
RUN yum install -y nginx
COPY startng.sh /root/startng.sh
RUN chmod x /root/startng.sh
ENTRYPOINT [/root/startng.sh]
EXPOSE 80dockerfile中starting.sh文件内容 #!/bin/bash
nginx -c /etc/nginx/nginx.conf
/bin/bash五、对做好的镜像运维
对组合镜像运行的容器制作快照(docker commit操作)
1. 导出镜像
将容器保存为新的镜像docker commit centos-t1save wantimage将docker保存生成tar文件导出 方便运维时迁移部署使用docker save -o wantimage.tar wantimage将新的镜像文件进行压缩gzip wantimage.tar.gz2. 导入镜像
解压缩文件gunzip wantimage.tar.gz 载入镜像-i 指定输入文件的路径。在这里输入文件是 wangeimage.tardocker load -i wangeimage.tar运行容器。最后使用run.sh脚本创建并运行容器docker run -d -it --name wantimage [可指定其他参数] wangeimage总结
1. 预打包单个程序。再进行组合打包时成功率会提高。如将nginx, redis, java, postgresql...进行组合安装时先单独对 redis, java, postgresql 进行单独镜像的打包
2. -v 命令特比方便。 run.sh文件中使用的 -v 命令可以在不进入docker容器内即可查看到容器内部的文件内容。如nginx日志的打印。 curl http://localhost:8081/
tail -10f /tmp/nginx/access.log3. 尝试理解运行原理会有新的发现。
更加深入的学习docker会有许多原理需要学习。在学习期间会有一些莫名的问题只有懂得更多才能明白发生这些问题的原因。如下内容是通过大模型搜索的。搜索时我的问题是 什么docker容器只允许一个前台进程对更深入理解有所帮助Docker容器是基于Linux的cgroup和namespace技术实现的它在宿主机上本质是个隔离的进程。容器在启动时
必须要有一个前台进程一直运行因为容器并不是虚拟机。一个docker容器同时只能管理一个进程如果容器中有
多个进程同时运行那么这些进程之间无法实现隔离因此Docker容器仅在它的1号进程PID为1运行时会保持运行。
此外docker容器默认会把容器内部第一个进程也就是pid1的程序作为docker容器是否正在运行的依据。
如果docker容器中pid1的进程挂了那么docker容器便会直接退出也就是说Docker容器中必须有一个前台进程
否则认为容器已经挂掉。
以上内容仅供参考可以咨询计算机领域专业人士获取准确信息。4. docker打包方式不止两种。
docker的组合打包方式不止两种dockerfile, commit。还有其他方式有兴趣可以上网搜索。还有使用编程进行打包的方式据说对技术要求较高这里篇幅不易过长后期有机会的话再做补充吧。