极客时间运维进阶训练营第二周作业
基于 dockerfile,实现分层构建 nginx 业务镜像
通过 docker build 来构建。准备环境:
写 Dockerfile:
Certificate verification failed: The certificate is NOT trusted. The certificate issuer is unknown. Could not handshake: Error in the certificate verification.问题的解决:
RUN touch /etc/apt/apt.conf.d/99verify-peer.conf && echo >>/etc/apt/apt.conf.d/99verify-peer.conf "Acquire { https::Verify-Peer false }"
禁用掉 Verify-Peer 即可。
groupadd 和 useradd 为了增加用户,运行 nginx。
使用docker-entrypoint.sh作为 entrypoint 更好。shell 进程就是容器里的 1 号进程了。注意 1 号进程里需要用 while 循环,确保其不会退出。该进程退出了,容器就退出了。
其他配置文件,如nginx.conf见 github。
基于 docker 实现对容器的 CPU 和内存的资源限制
在 docker run 的参数里指定即可。
CPU 参数:
--cpu-period 配置 CFS 调度程序周期。
--cpu-quota 设置对容器的 CPU 限制值。如果 period 是 100k,quota 是 150k,表示可用 1.5 个 CPU。新版用--cpus 配置,直接写--cpus="1.5"即可。表示 cpu 的绝对值。
--cpuset-cpus 指定 CPU 号。比如--cpuset-cpus 0,3-5,可以在 CPU0,3,4,5 上运行。
--cpuset-mem 使用哪个 CPU 的内存,只对 NUMA 架构有效。
--cpu-shares 配置 CFS 中调度的相对最大比例权重。值越高,分到更多的时间片。表示 cpu 的相对值,比如一个容器 A 是 1000,另一个容器 B 是 2000,那么容器 B 可用 CPU 是 A 的两倍。
内存参数:
硬限制:-m 512m,实际使用的内存不能超过这个限制。
软限制:--memory-reservation 384m,基本不用。只能比硬限制小。不确保 container 不会超过这个限制。
swap 分区(一般服务器上不开):--memory-swap="612m"。实际交换分区大小需要减去硬限制的大小,比如 612m-512m=100m。配置为 0,就是没有交换分区了。如果配置-1,可以用宿主机的交换分区最大值。
--oom-kill-disable:禁止 oom 发生在指定容器上,不推荐。
部署 http 协议的 harbor 镜像仓库
cr.console.aliyun.com 登录。
镜像工具里的镜像加速器可以用于加速访问。
配置登录密码:
左侧菜单的"容器镜像服务"-"个人实例"-"设置 Registry 登录密码"。
创建仓库:
点击"创建镜像仓库",填写需要的信息,仓库选本地即可。
把本地镜像打包成新的 tag,push 到 harbor:
docker tag a9c3102fb5e0 registry.cn-hangzhou.aliyuncs.com/cloud_learn/geektime:20221025_2020-nginx1.23.2v1
打完 tag 后,IMAGE ID 还是和原来的一样的。再 push 上去。
docker push registry.cn-hangzhou.aliyuncs.com/cloud_learn/geektime:20221025_2020-nginx1.23.2v1
基于 docker-compose 实现对 nginx+tomcat web 服务的单机编排
下次课再补上。
github 地址在:https://github.com/docker/compose
容器管理分为 3 层。分别是 project,service 和 container。
docker compose 的配置文件是 yml 或 yaml。
docker-compose up -d 可以在后台按 yml 配置启动一个容器。
评论