IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 极客时间运维进阶训练营第二周作业 -> 正文阅读

[系统运维]极客时间运维进阶训练营第二周作业

  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

容器可以正常访问

?

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 12:39:36  更:2022-10-31 12:44:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 2:56:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计