1. 基于 dockerfile,实现分层构建的 nginx 业务镜像
  2. 基于 docker 实现对容器的 CPU 和内存的资源限制
  3. 部署 http 协议的 harbor 镜像仓库
  4. 扩展作业∶
    • 掌握 containerd 的安装 A
    • 基于 nerdctl 拉取镜像和创建容器 A

1.基于 dockerfile,实现分层构建的 nginx 业务镜像

创建业务镜像目录
mkdir /data/web -p
cd /data/web将镜像源替换成国内阿里镜像源,保存到dockerfile相同目录
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse下载nginx镜像
wget https://nginx.org/download/nginx-1.22.1.tar.gz制作dockerfile
FROM ubuntu:22.04  #基础镜像
ADD sources.list /etc/apt/sources.list #替换阿里镜像源
RUN apt-get update && apt-get install -y iproute2 ntpdate tcpdump telnet traceroute nfs-kernel-server nfs-common tree libssl-dev libpcre3 libpcre3-dev openssh-server iotop lrzsz openssl zlib1g-dev zlib1g-dev unzip zip make gcc #安装系统常用软件包
ADD nginx-1.22.1.tar.gz /usr/local/src/ #拷贝并解压nginx源码包
RUN cd /usr/local/src/nginx-1.22.1 && ./configure --prefix=/apps/nginx && make && make install && ln -sv /apps/nginx/sbin/nginx /usr/bin #编译预、编译、安装
RUN groupadd -g 2210 nginx && useradd -g nginx -s /usr/sbin/nologin -u 2210 nginx && chown -R nginx.nginx /apps/nginx #创建组用户并授权
EXPOSE 80
WORKDIR /apps/nginx/html/ #切换容器工作目录
RUN mv index.html index.html.bak #替换默认首页文件
ADD index.html /apps/nginx/html/
CMD ["nginx","-g","daemon off;"] #容器启动命令,关闭nginx后台启动制作过程中报错
Temporary failure resolving 'security.ubuntu.com'在daemon.json配置文件中添加DNS地址,重启docker
{"graph": "/var/lib/docker","storage-driver": "overlay2","insecure-registries": ["harbor.magedu.com","harbor.myserver.com","172.31.7.105"],"registry-mirrors": ["https://9916w1ow.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"live-restore": false,"log-opts": {"max-file": "5","max-size": "100m"},"dns": ["8.8.8.8","114.114.114.114"]
}创建构建镜像脚本
vim build-command.sh
#!/bin/bash
TAG=$1
docker build -t ${TAG}构建nginx业务镜像
bash build-command.sh sean/nginx:v1使用构建好的镜像启动容器
docker run -itd --name=web01 -p 80:80 sean/nginx:v1

访问宿主机IP地址确认结果

基于 docker 实现对容器的 CPU 和内存的资源限制

容器资源限制下载压测工具

docker pull lorel/docker-stress-ng

不加任何限制的资源使用情况

docker run -it --rm --name sean-c1 lorel/docker-stress-ng --vm 2 --vm-bytes 256M

通过docker stats 查看容器资源使用情况

通过-m 参数限制内存256M

docker run -it --rm -m 256m --name sean-c2 lorel/docker-stress-ng --vm 2 --vm-bytes 256M

观察内存不会超过限制的容量

限制CPU

docker run -it --rm --name sean-c1 lorel/docker-stress-ng --cpu 4 --vm 4

未做限制的情况下。使用慢4核CPU

通过--cpus 限制CPU使用核数

docker run -it --rm --name sean-c2 --cpus 2 lorel/docker-stress-ng --cpu 4 --vm 4

部署 http 协议的 harbor 镜像仓库

安装docker
tar -xvf docker-20.10.19-binary-install.tar.gz
sh docker-install.sh安装harbor
mkdir /apps
cd /apps
tar -xvf harbor-offline-installer-v2.6.1.tgz
cd /harbor
cp harbor.yml.tmpl harbor.yml修改配置文件,添加hostname,用户密码注释掉https配置
vim harbor.yml
'''
hostname: harbor.sean.com
harbor_admin_password: 12345678
'''执行安装脚本
bash install.sh配置harbor仓库,docker主机,宿主机域名解析
vim /etc/hosts
宿主机修改C:\Windows\System32\drivers\etc\hosts
"10.0.0.100 harbor.sean.com"配置仓库信任
vim /etc/docker/daemon.json
"insecure-registries": ["harbor.sean.com","harbor.myserver.com","172.31.7.105"]

在宿主机访问域名登录

创建项目,访问级别设置公开

在docker主机登录harbor仓库

修改镜像标签

docker tag sean/nginx:v1 harbor.sean.com/myimages/nginx:v1

上传镜像

docker push harbor.sean.com/myimages/nginx:v1

harbor中可以看到该镜像已上传

其他主机可以正常下载该镜像

安装Containerd

安装相关软件
apt update
apt -y install apt-transport-https ca-certificates curl software-properties-common安装证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -添加安装源
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"查看支持安装的版本
apt-cache madison containerd-io更新并安装Containerd
apt update
apt install contianerd.io=1.6.8-1安装后确认版本信息
root@ubuntu2004:~# containerd --version
containerd containerd.io 1.6.8 9cd3357b7fd7218e4aec3eae239db1f68a5a6ec6修改containerd配置文件文件
containerd config defalut > /etc/containerd/config.toml
6 sandbox_image = "registry.aliyuncs.com/google_containers/pasue:3.7"
153[plugins."io.containerd.grpc.v1.cri".registry.mirrors.]
154[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
155      endpoint=["https://73aepdip.mirror.aliyuncs.com"]重启containerd服务
systemctl restart containerd && systemctl enable containerd

nerdctl拉取镜像、创建容器

下载nerdctl安装包
wget https://github.com/containerd/nerdctl/releases/download/v0.23.0/nerdctl-0.23.0-linux-amd64.tar.g解压到/usr/bin目录
tar xvf nerdctl-0.23.0-linux-amd64.tar.gz -C /usr/bin/安装CNI
wget https://github.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-amd64-v1.1.1.tgz
tar xvf cni-plugins-linux-amd64-v1.1.1.tgz -C /opt/cni/bin/启动容器
nerdctl run -d -p 80:80 --name=nginx01 nginx:latest

容器可以正常访问

极客时间运维进阶训练营第二周作业相关推荐

  1. 极客时间马哥教育-云原生训练营第二周作业-20221023

    目录 一.本课知识点和技能点 二.(实践)基于 dockerfile,如何实现分层构建的 nginx 业务镜像 1.一个最简单的 Dockerfile 实例 1)首先构建dockerfile 2)使用 ...

  2. 蓝桥杯训练营第二周作业

    19201419曾宇杰 1. 带分数 问题描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714. 还可以表示为:100 = 82 + 3546 / 197. 注意特征:带分 ...

  3. 马哥2016全新Linux+Python高端运维班第八周作业

    一.请描述网桥.集线器.二层交换机.三层交换机.路由器的功能.使用场景与区别. 网桥(Bridge) 网桥是第2层的设备,它设计用来创建两个或多个LAN分段.其中,每一个分段都是一个独立的冲突域.网桥 ...

  4. 马哥2016全新Linux+Python高端运维班第七周作业

    1.创建一个10G分区,并格式为ext4文件系统: # fdisk device 子命令:管理功能 p: print, 显示已有分区: n: new, 创建 d: delete, 删除 w: writ ...

  5. python123第六周作业,马哥2016全新Linux+Python高端运维班第六周作业

    1.复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#: [root@localhost tmp]# cp / ...

  6. python第七周答案_马哥2016全新Linux+Python高端运维班第七周作业

    1.创建一个10G分区,并格式为ext4文件系统: [root@localhost ~]# fdisk /dev/sdb 欢迎使用 fdisk (util-linux 2.23.2). 更改将停留在内 ...

  7. python123第五周作业答案_马哥2016全新Linux+Python高端运维班第五周作业

    本周作业内容: 1.显示当前系统上root.fedora或user1用户的默认shell:# 没有fedora.user1用户,添加fadora,user1模拟环境 [root@localhost ~ ...

  8. 极客时间-算法训练营1.2 实战题目解析:移动零

    一 序 本文属于极客时间-算法训练营 学习笔记系列. 二 刷题步骤 第一遍 五分钟:读题 + 思考 直接看解法:多看几种,比较解法优劣 背诵.默写好的解法 第二遍 马上自己写 --> Leetc ...

  9. 极客时间 自我提升第二天 数据结构与算法之美 应该掌握 / 趣谈网络原理 / 深入浅出计算机组成原理 思维导图

    菜鸟今天又来完成所说的诺言,也希望大家督促,在今天的学习中,菜鸟有了新的认知,我会将上一篇中理解不完善的一些地方进行补充,学习本就是不断打破自己的认知,如果思考都不做,何来的知识的积累 文章目录 数据 ...

最新文章

  1. _Neofetch – 通过终端显示Linux系统信息
  2. 一些汇编中的 trick
  3. 案例分析:机场运作系统
  4. Android给自定义按键添加广播和通过广播给当前焦点输入框赋值
  5. 山西省能源产业发展动向及投资风险分析报告2021版
  6. 【蒲公英技术征文】如何在 ESP-12F/ESP8266 上实现 webserver
  7. java double溢出_java – 可以加倍或BigDecimal溢出?
  8. 【API进阶之路】逆袭!用关键词抽取API搞定用户需求洞察
  9. dubbo 自定义路由_高性能可扩展分布式RPC框架Dubbo内核原理揭秘
  10. 插入u盘被计算机限制怎么回事,电脑不读u盘怎么处理,显示本次操作由于计算机的限制而被取消 请您与系统管理员联系,怎门回事?...
  11. vs的运行库 MT MTd MD MDd区别
  12. tp-link与台式计算机连接教程,台式电脑连接到无线路由器上网教程
  13. 实用网址(永久更新中)
  14. 项目计划应该怎么样做?看这一篇就够了!
  15. 怎样测试手机性能软件,如何检测手机性能的软件
  16. 如何在 R 中执行 Wald 测试
  17. 如何用MATLAB把一个三维矩阵里的数据中的一页画成三维图并加密网格
  18. 如何用C#实现电子面单批量打印功能
  19. 超全Android中高级面试复习大纲,挥泪整理面经
  20. 计算机终端通讯380023,华为发布首款5G手机Mate20X,通讯服务商标注册属于第几类?...

热门文章

  1. 测试点 - 发朋友圈
  2. 微信小程序顶部导航栏颜色修改
  3. 科学解释超级计算机,人工智能、现代科学证明:宇宙是虚拟的,真实世界是超级计算机...
  4. 计算机内存和u盘存储原理,解剖U盘存储结构原理
  5. java以某个字符串断句_结合 ictclass4j 和 KTDictSeg 写自己的分词器----断句(1)
  6. Axure 进阶 | 制作携程网酒店“入住日期”与“退房日期”控件
  7. 通过银联跨行转账、转接的交易手续费用——2358原则
  8. 《MySQL是怎么样运行的》读书笔记一 数据页+索引
  9. 项目中用jbarcode生成条形码,并进行特定的格式打印标签纸(完成步骤):(得力,斑马打印机都能使
  10. 文件监控脚本 -- Linux bash