极客时间第二周作业

极客时间第二周作业

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

	镜像分层构建
    - 系统base镜像
    - nginx基础镜像
    - nginx业务镜像构建
    - 测试环境测试
    - 业务生产环境运行并测试  
系统base镜像
FROM ubuntu:22.04

LABEL version="1.0"

ADD sources.list /etc/apt/sources.list

RUN apt update -y && apt -y upgrade
nginx基础镜像
FROM ubuntu:22.04

LABEL version="1.0"


RUN apt install -y iproute2 ntpdate tcpdump telnet traceroute nfs-kernel-server nfs-common lrzsz tree openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev ntpdate tcpdump telnet traceroute gcc openssh-server lrzsz tree openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev ntpdate tcpdump telnet traceroute iotop unzip zip make

ADD nginx-1.22.1.tar.gz /usr/local/src/

RUN mkdir /app

RUN cd /usr/local/src/nginx-1.22.1 && ./configure --prefix=/apps/nginx && make && make install && ln -sv /apps/nginx/sbin/nginx /usr/bin
nginx业务镜像
FROM nginx:1.0

LABEL version="1.0"

RUN groupadd -g 2088 nginx && useradd -g nginx -s /usr/sbin/nologin -u 2088 nginx && chown -R nginx.nginx /apps

ADD nginx.conf /apps/nginx/conf

ADD frontend.tar.gz /apps/nginx/html

EXPOSE 80 443

CMD ["nginx","-g","daemon off;"]

docker run -it -d --name web1 -p 80:80 nginx:V1
访问nginx网页
在这里插入图片描述

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

	1、拉取docker压测镜像
		docker pull lorel/docker-stress-ng
	2、物理或内存限制参数
		-m 限制容器可以使用的最大内存量
		--kernel-memory 容器可以使用的最大内核内存量,最小为4m
		--oom-kill-disable 禁止oom kill容器
		--memory-reservation #允许指定小于--memory的软限制
		docker run -it --rm lorel/docker-stress-ng --help #测试容器帮助信息

在这里插入图片描述

实验对照组(启用一组docker容器,分别占用内存256m,并对内存资源进行限制,观察内存占用情况)
1、不限制内存,2个进程 1个128M
	docker run -it --rm --name test1 lorel/docker-stress-ng --vm 2 --vm-bytes 128M
	--rm 容器退出时自动清理文件系统
2、限制内存64M。其余条件一致
	docker run -it --rm --name test1 -m 64M lorel/docker-stress-ng --vm 2 --vm-bytes 128M

第一组容器未启动前
在这里插入图片描述
启动容器后
在这里插入图片描述
第二组容器启动前
在这里插入图片描述
启动后
在这里插入图片描述

内存大小软限制
定义一组容器,分别限制内存大小和内存软限制,观察是否生效
1、内存最大使用限制在64m
2、内存软限制在48M
3、启用了两个工作进程,一个分别占用内存64m
docker run -it --rm --name test -m 64M --memory-reservation 48M lorel/docker-stress-ng  --vm 2 --vm-bytes 64M

容器未运行前
在这里插入图片描述
容器运行后,内存增加约50M
在这里插入图片描述

cpu限制验证
容器的总cpu值是在宿主机每一个cpu分配了一定比例进行的
定义一组容器,限制cpu进行比较,查看服务器资源消耗量
docker run --cpus 指定分配的cpu数量
					--cpuset-cpus 2,3 将容器运行该到指定的cpu上
					--cpu-shares  cpu共享值 多个容器时按比例分配cpu资源
实验环境4c2g
docker run -it --rm --name test-c1 lorel/docker-stress-ng --cpu 2 --vm 2
限制分配容器最多2c
docker run -it --rm --name cpu1 --cpus 2 lorel/docker-stress-ng --cpu 2 --vm 2
分配使用的cpu位置
docker run -it --rm --name cpu1 --cpus 2 --cpuset-cpus 2,3 lorel/docker-stress-ng --cpu 2 --vm 2
多个容器使用共享值按比例分配cpu资源
docker run -it --rm --name cpu1 --cpus 2 --cpu-shares 1000 lorel/docker-stress-ng --cpu 2 --vm 2
docker run -it --rm --name cpu2 --cpus 2 --cpu-shares 500 lorel/docker-stress-ng --cpu 2 --vm 2

容器限制前
在这里插入图片描述
限制资源后
在这里插入图片描述
分配2,3cpu给容器使用
在这里插入图片描述
cpu shares
在这里插入图片描述

  • 查看容器cggroup限制 /sys/fs/cgroup/ 查看容器systemd

部署 http 协议的 harbor 镜像仓库

harbor github开源地址
https://github.com/goharbor/harbor  
下载并解压github安装包
wget https://github.com/goharbor/harbor/releases/download/v2.6.1/harbor-offline-installer-v2.6.1.tgz
编辑配置文件
修改host地址 ,屏蔽ssl 等
./prepare
./install
默认访问80端口

在这里插入图片描述

docker使用harbor
	修改docker默认配置文件 仓库位置
	vim /etc/docker/daemon.json
	"insecure-registries": ["192.168.188.128"],
	重启docker 
	systemctl restart docker
	登录仓库
	docker login http://192.168.188.128
	推送已有镜像到docker仓库
	docker tag ubuntu:22.04 192.168.188.128/base/ubuntu:22.04
	docker push ubuntu:22.04 192.168.188.128/base/ubuntu:22.04
	本地删除镜像重新pull验证
	docker pull ubuntu:22.04 192.168.188.128/base/ubuntu:22.04  

在这里插入图片描述

安装containerd

ubuntu 
1、安装依赖包 apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
2、导入docker公钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
3、添加清华docker镜像源
echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker- ce/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
4、更新仓库
apt -y update
5、验证containerd版本
apt-cache madison containerd
6、安装指定版本containerd
apt -y install containerd=1.6.4-0ubuntu1
7、默认配置参数
 containerd config default
8、调整默认配置
 containerd config default > /etc/containerd/config.toml
9、修改配置文件以下参数
61 sandbox_image = "registry.aliyuncs.com/google_containers/pause: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://9916w1ow.mirror.aliyuncs.com"]
10、重启并添加默认启动
systemctl restart containerd && systemctl enable contain
11、更新runc
wget https://github.com/opencontainers/runc/releases/download/v1.1.4/runc.amd64
cp runc.amd64 /usr/bin/runc
chmod a+x /usr/bin/runc
runc -v

验证版本
在这里插入图片描述
在这里插入图片描述

客户端
ctr  默认命名空间default
ctr images pull docker.io/library/nginx:1.20.2
指定命名空间
ctr -n k8s.io images ls
ctr images ls  
运行容器 
ctr run -t --net-host docker.io/library/nginx:1.20.2 test-container

在这里插入图片描述

基于 nerdctl 拉取镜像和创建容器 A

nerdctl 兼容ctr和docker的客户端
安装nerdctl
wget https://github.com/containerd/nerdctl/releases/download/v0.23.0/nerdctl-0.23.0-linux-amd64.tar.gz
解压到/usr/bin
cni
wget https://github.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-amd64-v1.1.1.tgz
创建容器并指定端口
nerdctl run -d -p 80:80 --name=nginx-web1 --restart=always nginx:1.22.0-alpine
nerdctl run -d -p 8080:8080 --name=tomcat-web1 --restart=always tomcat:7.0.88-alpine
nerdctl ps -a

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值