docker-01

作者: 你好_请关照 | 来源:发表于2019-12-11 23:18 被阅读0次

    docker-01

    官网地址:hub.docker.com

    1.什么是容器

    容器是隔离的环境中运行的一个进程,如果进程结束,容器就会停止,容器的隔离环境,拥有自己的ip地址,系统文件,主机名,进程管理

    程序: 代码,软件,命令

    进程:正在运行的程序

    2:容器和虚拟化的区别

    虚拟机: 硬件cpu支持(vt虚拟化),模拟计算硬件,走正常的开机启动

    bios开机自检--根据bios启动项--读取硬盘第一个扇区grub,uefi, centos7, 加载内核,启动系统第一个进程/sbin/init systemd

    容器: 不需要硬件cpu的支持,共用宿主机内核,启动容器的第一个进程,作用于linux 内核上的一个技术

    容器优势: 启动快,性能高,损耗少,轻量级,

    3:docker-ce的安装

    主机名 内存 ip
    docker01 2G 10.0.0.11
    docker02 2G 10.0.0.12
    #安装docker-ce
    # step 1: 安装必要的一些系统工具
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    # Step 2: 添加软件源信息
    sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    # Step 3: 更新并安装Docker-CE
    sudo yum makecache fast
    sudo yum -y install docker-ce
    # Step 4: 开启Docker服务
    sudo service docker start
    
    # 注意:
    # 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
    # vim /etc/yum.repos.d/docker-ee.repo
    #   将[docker-ce-test]下方的enabled=0修改为enabled=1
    #
    # 安装指定版本的Docker-CE:
    # Step 1: 查找Docker-CE的版本:
    # yum list docker-ce.x86_64 --showduplicates | sort -r
    #   Loading mirror speeds from cached hostfile
    #   Loaded plugins: branch, fastestmirror, langpacks
    #   docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable
    #   docker-ce.x86_64            17.03.1.ce-1.el7.centos            @docker-ce-stable
    #   docker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable
    #   Available Packages
    # Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
    # sudo yum -y install docker-ce-[VERSION]
    
    #验证
    [root@docker01 yum.repos.d]# docker version 
    Client: Docker Engine - Community
     Version:           19.03.5
     API version:       1.40
     Go version:        go1.12.12
     Git commit:        633a0ea
     Built:             Wed Nov 13 07:25:41 2019
     OS/Arch:           linux/amd64
     Experimental:      false
    

    4:docker主要内容

    docker是一个cs架构, docker主要内容:镜像 容器 仓库 网络 存储 监控

    docker是一个软件的打包技术.

    docker  run -d  -p 80:80  nginx:latest docker镜像名称
    run 创建并启动一个容器
    -d  放后台启动
    -p  端口映射
    nginx:latest docker镜像名称
    

    5:docker镜像常用命令

    docker search  搜索镜像, 优先选官方,stars数量多
    docker pull    拉取镜像(下载镜像)
    docker push    推送镜像(上传镜像)
    docker load    导入镜像
       例子: docker load  -i  docker_nginx.tar.gz
    docker save    导出镜像
       例子:docker save centos:7 -o docker_centos7.tar.gz
    docker images   查看镜像列表
    docker rmi      删除镜像
    docker tag      给镜像打标签
    docker inspect  查看镜像属性
    docker history  查看构建的历史
    docker 
    

    6:docker容器的常用命令

    docker  run 创建并启动容器
         例子:docker run  -d -it -p 80:80  nginx:latest
         
         如果不加 -ti bash 命令执行了自动会退出,加-ti 后docker命令会为容器分配一个伪终端,并接管其stdin/stdout支持交互操作,这时候bash命令不会自动退出
    
    docker create  创建容器 --name
    docker start   启动容器
    docker stop   停止容器
    docker restart 重启容器
    docker kill   强制停止容器
    docker ps     查看容器列表  -a 查看所有容器
    docker rm     删除容器
        批量删除所有容器 docker rm -f `docker ps -a -q`
    docker  exec   进入正在运行的容器
           例子: docker exec  -it  容器id/容器名字   /bin/bash(/bin/sh)
    

    容器的初始命令,必须夯住(前台一直运行),否则容器就会退出.

    nginx -g 'daemon off;'
    

    7:docker端口映射

    docker run
    -p  宿主机端口:容器端口
    -p  宿主机ip1:宿主机端口:容器端口
    -p  宿主机ip1::容器端口   随机端口映射
    -p  宿主机ip1::容器端口/udp   使用udp协议做随机端口映射
    -p 80:80  -p 3306:3306
    -p 1111-1119:1111-1119  端口范围映射
    

    8:docker数据卷

    docker run
    -v  宿主机目录:容器目录
    -v  容器目录  #创建一个卷,来持久化容器的目录下的数据
    --volumes-from  跟某一个容器挂载所有相同的卷
    

    9:手动制作docker镜像

    制作一个基于centos系统的nginx镜像(单服务)
    思路:还记得上面说的吗?必须使容器的初始命令必须夯住(在前台运行),想办法让启动的服务在前台运行。nginx -g 'daemon off;' 就是让nginx程序在前台运行

    1:启动一个纯净的centos:6.9容器,安装nginx
    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
    curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
    yum install nginx -y
    2:把安装好服务的容器,提交为镜像
    docker container commit eb109f194821 centos6.9_nginx:v1
    
    3:测试镜像的功能
    docker run -d  -p 82:80 centos6.9_nginx:v1 nginx -g 'daemon off;'
    

    制作一个基于centos6系统的kod网盘的镜像(多服务)

    思路:还记得上面说的吗?必须使容器的初始命令必须夯住(在前台运行),那在多服务里也是如此,想办法让最后执行启动的一个服务启动命令在前台夯住,或者使用一个能够持续夯住的命令来实现,比如 tail -f 、top 等

    1:启动一个centos6.9_nginx:v1,再安装php
    yum install php-fpm php-gd php-mbstring -y
    vi /etc/php-fpm.d/www.conf
    service php-fpm start
    cd /etc/nginx/conf.d/
    vi default.conf 
    mkdir /html
    cd /html
    wget http://192.168.19.200/191127/kodexplorer4.40.zip
    curl -o kodexplorer4.40.zip http://192.168.19.200/191127/kodexplorer4.40.zip
    yum install unzip -y
    unzip kodexplorer4.40.zip 
    chown -R nginx:nginx .
    
    vi /init.sh
    #!/bin/bash
    
    service php-fpm start
    nginx -g 'daemon off;'
    
    2:把安装好服务的容器,提交为镜像
    docker commit 47208e3e3796 kod:v2
    3:测试镜像的功能
    docker run -d -p 83:80 kod:v2 /bin/bash /init.sh
    

    制作一个基于centos7系统的nginx+sshd双服务镜像

    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    yum install nginx -y
    yum install openssh-server -y
    yum install initscripts -y
    /usr/sbin/sshd-keygen
    echo '123456'|passwd --stdin root
    /usr/sbin/sshd -D
    vi /init.sh
    

    相关文章

      网友评论

          本文标题:docker-01

          本文链接:https://www.haomeiwen.com/subject/hnxzgctx.html