N79第二周作业

1、实现并总结容器跨主机的通信过程

修改docker IP地址:/lib/systemd/system/docker.service 

查询容器的pid :docker inspect --format "{{ .State.Pid }}" af4

查询容器的ifconfig :nsenter -t pid -n ifconfig

宿主机添加静态路由:route add -net 10.10.0.0/16 gw 192.168.42.173(容器网关)  ;

          iptables -A FORWARD -s 192.168.0.0/16 -j ACCEPT

进入容器测试:docker exec -it 3d5 sh

        ping 10.20.0.2

2、总结Dockerfile的常见指令

FROM  :定制的镜像都是基于FROM的镜像完成的;

MAINTAINER = “ ” ,作者信息;

LABEL 'key' = 'value'  镜像属性 可在docker images查询

RUN :用于执行后面的命令行,格式 1、SHELL命令 不能是交互命令 

              2、RUN ['Command', 'param1']

CMD : 容器启动命令,如存在多个CMD命令,仅最后一个生效

  格式       CMD < shell 命令>

        CMD ['<Command>','<param1>','<param2>']

        CMD ['<param1>','<param2>'] 与ENTRYPOINT 配合使用,为其提供参数

                           如 ENTRYPOINT['command','param1']

         CMD ['param2']

COPY : 复制指令,目录文件或目录复制到容器指定路径,不自动解压压缩包;

ADD :添加文件与COPY类似,用于宿主机本地文件、目录、压缩到镜像中,自动解压tar 到目标路               径;

ENV : 用于镜像所需的环境变量 例 ENV <KEY> <Value> 或 ENV <key> = <Value> 多个value 

volume : 在容器上创建一个挂载点,docker run -v <路径>,镜像目录挂载到宿主机上

USER : 运行容器的用户

WORKDIR : 指定工作目录,如果不存在,会自动建立

 EXPOSE : 声明端口,映射到宿主机

3、基于Dockerfile Nginx镜像并验证可以启动为容器

新建Dockerfile文件夹,

新建sources.list  变更ubuntu:22.04 国内源

  deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse   

       deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse 

       deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse

       deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse

下载nginx wget http://nginx.org/download/nginx-1.24.0.tar.gz

Dockerfile文件夹内新建Dockerfile :   

#在ubuntu中构建nginx-1.6.2镜像
FROM ubuntu:20.04

MAINTAINER "WW-20230712"

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

RUN apt update && apt install -y lrzsz gcc libpcre3 libpcre3-dev zlib1g zlib1g-dev openssl libssl-dev make

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

RUN cd /usr/local/src/nginx-1.24.0 && ./configure --prefix=/apps/nginx && make && make install

RUN ln -sv /apps/nginx/sbin/nginx /usr/bin

RUN groupadd -r -g 2022 nginx && useradd -r -m -s /sbin/nologin -u 2022 -g 2022 nginx

ADD nginx.conf /apps/nginx/conf/

EXPOSE 80

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

修改测试界面 echo “wangwei” >> /apps/nginx/html/index.html

构建镜像 docker build -t ubuntu2004 .

        执行      docker run -d -p 8080:80 --name my-nginx ubuntu2004

   测试      curl ip:8080 能看到web界面

  查看端口 ss -ntl

  查看进程 ps -ef | grep nginx

  镜像上传,登陆阿里云 docker login --username=qsykys registry.cn-qingdao.aliyuncs.com

  上传镜像 docker tag af21815a7734 registry.cn-qingdao.aliyuncs.com/wangwei_docker/wang_ubuntu:ubuntu2004

              docker push registry.cn-qingdao.aliyuncs.com/wangwei_docker/wang_ubuntu:ubuntu2004

 

4、部署单机harbor并实现镜像的上传与下载

    首先安装docker 、docker-compose

         下载安装文件 https://github.com/goharbor/harbor/releases/download/v2.8.2/harbor-offline-installer-v2.8.2.tgz

     解压文件 tar zxvf harbor-offline-installer-v2.8.2.tgz

     修改 harbor.yml

       修改服务器域名 hostname: wangwei.io

       port :8081

       harbor_admin_password: 123456

       password: root123456

       data_volume: /data

       PS :注销https 等相关配置

  

      安装 ./install.sh 

   修改 /lib/systemd/system/docker.service 

      ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry=192.168.47.144:80 

   修改 /etc/docker/daemon.json 

      root@ubuntu:/usr/local/harbor# cat /etc/docker/daemon.json

      {
        "registry-mirrors": ["https://3xcd0jqi.mirror.aliyuncs.com"],
        "registry-mirrors": [ "https://fbd7eca467f34398844ab71155accc91.mirror.swr.myhuaweicloud.com" ],
        "insecure-registry": [ "192.168.47.144:80" ] 

          #insecure-registries 重启docker 就失败
      }

     

     systemctl daemon-reload

systemctl restart docker

docker-compose up -d

登陆 docker login 192.168.47.144:80

打标签  docker tag centos:latest 192.168.47.144:80/ubuntuwang/centos:latest

上传镜像 

root@ubuntu:/usr/local/harbor# docker push 192.168.47.144:80/ubuntuwang/centos:latest
The push refers to repository [192.168.47.144:80/ubuntuwang/centos]
2653d992f4ef: Pushed
latest: digest: sha256:dbbacecc49b088458781c16f3775f2a2ec7521079034a7ba499c8b0bb7f86875 size: 529

 

下载镜像 

root@ubuntu:/usr/local/harbor# docker pull 192.168.47.144:80/ubuntuwang/centos:latest
latest: Pulling from ubuntuwang/centos
Digest: sha256:dbbacecc49b088458781c16f3775f2a2ec7521079034a7ba499c8b0bb7f86875
Status: Image is up to date for 192.168.47.144:80/ubuntuwang/centos:latest
192.168.47.144:80/ubuntuwang/centos:latest

5、基于systemd实现容器的CPU及内存的使用限制

   1) 修改daemon.json 

root@wangwei:~# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://3xcd0jqi.mirror.aliyuncs.com"],
"exec-opts":["native.cgroupdriver=systemd"],
"insecure-registry":["192.168.47.144:80"]

}

   2) systemctl daemon-reload

   3) systemctl restart docker

          4) 限制内存 及 cpu 个数

root@ubuntu:/usr/local/harbor# docker run -it -d -m 256m -p 8081:80 nginx:latest
       b24dcd0d4c712618264fd1aa16d0f02ee0504c0b70a262498f605e73b053d951
root@ubuntu:/usr/local/harbor# docker run -it -d --cpus 2 -p 8082:80 nginx:latest
       3114cbbb7c73349c772d1916789acecca70081ddf3a95c62ca537e354e4093e7

    

  

      

      

 

 

           

     

     

 

 

       

 

 

  

 

 

 

 

 

posted @   森田大叔  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示