docker私有仓库搭建,卷和网络拓扑

把容器作为镜像的步骤 1.创建容器 docker run -it docker.io/centos:latest 2.修改配置 配置yum源 3.安装软件包 安装日常使用软件包 4.把容器做成镜像 docker commit c2dd02ea96ed docker.io/myos:latest 5.验证 Dockerfile语法结构 FROM:基础镜像 MAINTAINER:镜像创建者信息 EXPOSE:开放端口 ENV:设置变量 ADD:复制文件到镜像 RUN:制作镜像时执行的命令,可以有多个 WORKDIR:定义容器默认工作目录 CMD:容器启动时执行的命令,仅可以有一条CMD

Dockerfile执行创建容器: ]#mkdir f1 ]#cd f1 ]#touch Dockerfile ]#vim Dockerfile FROM docker.io/centos:latest RUN rm -rf /etc/yum.repos.d/* ADD local.repo /etc/yum.repos.d/local.repo RUN yum install -y bash-completion net-tools vim iproute psmisc ]#docker build -t myos:http . dockerfile中cd命令无法使用 可以使用WORKDIR替代 案例: RUN touch f1 WORKDIR /tmp #相当于cd /tmp RUN touch f2 案例: 1.创建一个apache的服务镜像 2.设置默认的工作目录为/var/www/html 3.设置默认首页hello world到index.html ]#mkdir f2 ]#cd f2 ]#touch Dockerfile ]#vim Dockerfile FROM docker.io/myos:latest RUN yum -y install httpd WORKDIR /var/www/html RUN echo “hello world " > index.html ENV EnvironmentFile=/etc/sysconfig/httpd EXPOSE 80 CMD [”/usr/sbin/httpd","-DFOREGROUND"] ]#docker build -t myos:http . 创建docker镜像仓库 1.创建私有仓库 服务端:192.168.1.30 1)安装软件包 yum install docker-distribution 2)启动私有仓库,并设置开机自启 systemctl start docker-distribution systemctl enable docker-distribution 3)查询5000端口 ss -nutlp | grep 5000 4)验证服务 curl 192.168.1.30:5000/v2/

客户端:192.168.1.31,192.168.1.32
 2.让docker使用私有仓库
  1)修改配置文件 /etc/sysconfig/docker
   ]#vim /etc/sysconfig/docker
      ADD_REGISTRY=--add-registry 192.168.1.30:5000#docker仓库地址
       INSECURE_REGISTRY=--insecure-registry 192.168.1.30:5000
                                        #允许非加密方式访问仓库
   2)重启docker服务
    ]#System restart docker
 3.上传镜像到私有仓库
    1)为镜像创建标签:
      docker tag  镜像:标签 IP:5000/镜像:latest
     ]#docker tag docker.io/centos 192.168.1.30:5000/centos:latest
    2)上传镜像的标签内包含地址和端口号
     ]# docker push 192.168.1.30:5000/centos:latest
 4.自定义私有仓库
    1)查看私有镜像仓库中的镜像名称
     curl http://仓库IP:5000/v2/_catalog
     curl http://192.168.1.30:5000/v2/_catalog
    2)查看某一仓库的标签
     curl http://仓库IP:5000/v2/<repo>/tags/list
     curl http://192.168.1.30:5000/v2/centos/tags/list
    3)私有仓库数据存储目录
      /var/lib/registry
    4)客户端运行私有仓库镜像
     ]# docker run -itd 192.168.1.30:5000/nginx

卷的概念: 1)docker容器不保持任何数据 2)重要的数据使用外部卷存储 3)容器可以挂在真实机目录或共享存储为卷 主机卷的映射 将真实机目录挂在到容器中提供持久化存储 1)目录不存在就自动创建 2)目录存在就直接覆盖掉 ]#docker run -v /data:/data -it docker.io/centos /bin/bash ]#vim index.html hello world ]#docker run -v /root:/usr/local/nginx/html -it docker.io/nginx /bin/bash 通过共享存储给docker主机使用 案例:

Docker网络拓扑 1.查看默认docker创建的网络模型 ]# docker network list 2.新建docker网络模型 ]#docker network create --subnet=10.10.10.0/24 3.启动容器使用刚才创建的自定义网桥 ]# docker run --network=docker1 -itd myos:http ]# docker run --network=docker1 -itd docker.io/centos 4.查看自定义网桥底层信息 ]#docker network inspect docker1 5)可以查看到IP地址,并可以和外界网络ping通 客户端访问容器内的资源 1)使用-p 参数把容器端口和宿主机端口绑定 2)-p 宿主机端口:容器端口 案例:把docker1变成httpd ]#docker run -itd -p 80:80 docker.io/myos:httpd 案例:把docker1变成nginx ]#docker run -itd -p 80:80 docker.io/nginx:latest

经验分享 程序员 微信小程序 职场和发展