zoukankan      html  css  js  c++  java
  • docker镜像管理和容器管理以及制作本地仓库

    1. 镜像管理
        1.1 获取镜像
        docker search centos
        docker pull centos:6.9
        docker pull centos:7.5.1804
        docker pull nginx
        1.2 查询镜像
        docker images
        docker images -q 
        docker inspect ID/name:tag
        1.3 删除镜像
        docker rmi  ID 
        docker rmi `docker images -q`
        docker rmi $(docker images -q)
        
        1.4 导入导出镜像
        [root@docker ~]# docker image save nginx >/opt/nginx.tar.gz
        [root@docker ~]# docker image load -i /opt/nginx.tar.gz
        
        
        1.5 启动容器并获取镜像
        [root@docker ~]# docker  run -d -p 80:80 httpd
        [root@docker ~]# docker ps -a
        [root@docker ~]# docker images
        
        
        1.6 docker一步一步学习制作镜像
            语法:
            第一个镜像创建:
            docker ps -a 
            docker commit xxxxxx oldguo/wordpress:v1
            docker images 
        
    
    制作镜像: centos7.5+vim+net-tools+iproute+sshd
    
    1.启动新容器
    docker run -it --name "centos7.5" 76d6bc25b8a5
    
    2.优化yum源
    mv /etc/yum.repos.d/*.repo /tmp
    echo -e "[ftp]
    name=ftp
    baseurl=ftp://10.0.0.100/pub/centos7
    gpgcheck=0">/etc/yum.repos.d/ftp.repo
    
    3. 安装必须软件包
    
    yum install -y vim net-tools  iproute   openssh-*   -y
    
    
    4.启动SSHD
    
     mkdir /var/run/sshd
     echo 'UseDNS no' >> /etc/ssh/sshd_config
     sed -i -e '/pam_loginuid.so/d' /etc/pam.d/sshd
     echo 'root:123456' | chpasswd
     /usr/bin/ssh-keygen -A
     /usr/sbin/sshd -D 
     
     
     注意: 以上操作做完之后,会一直不退出,需要用以下命令退回到宿主机,并不关闭容器
     ctrl p  q
    
    5.制作镜像
    docker commit centos7.5 oldguo/centos7_sshd:v2
    
    
    
    ## Centos7.5
    [root@docker sshd]# vim  dockerfile 
    FROM centos:7.5.1804
    RUN mv /etc/yum.repos.d/*.repo /tmp
    RUN echo -e "[ftp]
    name=ftp
    baseurl=ftp://10.0.0.100/pub/centos7
    gpgcheck=0">/etc/yum.repos.d/ftp.repo
    RUN yum install -y openssh-server
    RUN yum install -y openssh-clients
    RUN yum install net-tools* -y
    RUN yum install iproute-* -y
    RUN mkdir /var/run/sshd
    RUN echo 'UseDNS no' >> /etc/ssh/sshd_config
    RUN sed -i -e '/pam_loginuid.so/d' /etc/pam.d/sshd
    RUN echo 'root:123456' | chpasswd
    RUN /usr/bin/ssh-keygen -A
    EXPOSE 22
    CMD ["/usr/sbin/sshd", "-D"]
    
    docker build -t "oldguo/centos7_sshd:v3" /opt/dockerfile
    
    
    ===========================================
    2. 容器基本管理        
        2.0 容器的类型
            工具类:vim
                 docker run -it --name="test_vim"  3fe2fe0dab2e /bin/bash
            服务类:nginx 
                docker run -d -p 8080:80 --name="discuz" nginx:1.14
    
        2.1 容器的多类启动方式
         (1)交互式启动
         [root@docker ~]# docker run -it --name "testcentos" centos:6.9 /bin/bash
         主要是针对于工具类的容器,一旦exit容器,容器就自动关闭
         (2)守护式启动
          1.交互式启动容器+Ctrl+p+q
          [root@docker ~]# docker run  -it --name "testnginx" nginx /bin/bash
          加ctrl+p+q
            [root@docker ~]# docker attach testnginx
          2.死循环
         docker run  --name testnginx1  -d nginx /bin/sh -c "while true ;do echo hello world; sleep 1;done"
          3.服务前台运行
           sshd -D  
           nginx -g ""
      
           hang 夯住
          
        2.2 容器的常用管理命令
        docker ps -a  -q -l
        
        docker rm 容器ID|容器名称
        批量删除已关闭
        docker rm -v $(docker ps -aq -f status=exited)
        批量强制删除所有
        docker rm -f `docker ps -a –q`
        
        docker top nginx
        docker inspect nginx
        docker attach 容器ID|容器名称(工具类)配合ctrl+p+q
        docker exec  -i -t  容器ID|容器名称 /bin/bash(服务类),一般是做服务类容器调试用
        [root@docker ~]# docker exec -it  centos6.9   /bin/bash
    
    
        docker stop
        docker kill
    
        docker  start -i
        docker  restart 容器ID|容器名称
    
        
        
    3. 数据卷的使用(持久化)
    
    
        
    
    4.制作私有仓库
    
    4.1 配置私有仓库
    
    docker run -d -p 5000:5000 --restart=always --name registry -v /opt/Registry:/var/lib/registry  registry
    
    
    vim /etc/docker/daemon.json
    
    {
       "registry-mirrors": ["https://68rmyzg7.mirror.aliyuncs.com"],
       "insecure-registries": ["10.0.0.100:5000"]
    }
    
    
    systemctl  restart docker
        
        
        
    4.2 使用本地镜像:
    4.2.1 制作本地镜像并push到
    
    [root@docker ~]# docker tag nginx 10.0.0.100:5000/oldguo/nginx:v1
    [root@docker ~]# docker images
    [root@docker ~]# docker push 10.0.0.100:5000/oldguo/nginx:v1
    
    4.2.2 异地进行pull镜像
    [root@docker ~]# docker pull  10.0.0.100:5000/oldguo/nginx:v1    
        
        
    
    
    故障转移:(高可用)
    
    1.主备系统   
          
          
  • 相关阅读:
    谈谈 在 .Net 生态里为什么没有 Hadoop 系列 ?
    谈谈在 .Net 平台上的 软件生态 和 软件生产力
    我发起了一个 用 物理服务器 和 .Net 平台 构建云平台 的 .Net 开源项目
    推荐一个 基于 WebSocket 和 Redis 的 即时通信 开源项目
    漫谈 12306 架构
    在提交代码的时候分支上出现detached head
    地铁线路查询算法
    .NET 动态脚本语言
    Socket连接池
    比较JqGrid与XtraGrid
  • 原文地址:https://www.cnblogs.com/xuqidong/p/11785941.html
Copyright © 2011-2022 走看看