Docker

作者: 西海岸虎皮猫大人 | 来源:发表于2020-10-20 21:48 被阅读0次

    1 概述

    解决开发到运维的复杂配置问题,解决集群部署问题
    镜像:应用相关的整套环境
    理念:一次封装,到处运行
    docker三要素:镜像 容器 仓库
    docker秒级启动
    容器没有自己的内核,也没有硬件虚拟
    docker、mesos等容器技术使大规模动态调度称为可能
    新浪、美团、蘑菇街...
    镜像的实例即容器,一个镜像可以创建多个容器
    镜像即模板
    可以把容器看做简易版的linux环境
    仓库集中存放镜像
    docker-ce为社区版免费

    环境搭建
    centos6安装docker
    # 要求centos 6.5以上
    # docker-ce版要求centos7以上
    # 安装docker依赖
    yum install -y epel-release
    # 安装docker
    # 该命令由于gfw不可用
    yum install -y docker-io
    yum install https://get.docker.com/rpm/1.7.1/centos-6/RPMS/x86_64/docker-engine-1.7.1-1.el6.x86_64.rpm
    # 配置文件位置
    /etc/sysconfig/docker
    service docker start
    docker version
    
    centos7安装docker
     wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O/etc/yum.repos.d/docker-ce.repo
     yum clean all && yum makecache
    yum -y install docker-ce-18.06.1.ce-3.el7
    # 配置阿里云镜像加速
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://1vrs21kz.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
    # 运行hello world
    docker run hello-world
    
    原理

    docker是cs结构的系统
    docker不虚拟硬件,在cpu 内存利用率有优势

    常用命令
    # 帮助类命令
    docker version
    docker info
    # 类似linux man命令
    docker help
    
    # 镜像命令
    # 列出本地镜像
    docker images
    # 含中间层
    docker images -a
    # 只显示镜像id
    docker images -q
    # 显示摘要信息
    docker images --digests
    # 不截取id
    docker images --no-trunc
    
    # 搜索镜像
    docker search tomcat
    # stars超过30的镜像
    docker search -s 30 tomcat
    # 拉镜像 默认使用latest
    docker pull tomcat
    # 删除镜像
    docker rmi hello-world
    # 提示无法删除,强制删除
    docker rmi -f hello-world
    # 删除多个镜像
    docker rmi -f hello-world nginx
    # 删除所有容器
    docker rmi -f $(docker images -q)
    
    # 容器命令
    # 拉取centos
    docker pull centos
    # i 交互模式 t 分配伪终端
    # --name 可指定容器名称
    docker run -it 0d120b6ccaa8
    
    # 列出容器
    # -a 正在运行的和历史容器
    # -l 上一次运行的容器
    # -n 上n次运行的容器
    docker ps
    # 退出并关闭容器
    exit
    # 退出不关闭容器
    ctrl + p + q
    # 启动关闭的容器
    docker start d61f2293dc34
    # 重启容器
     docker restart e20333d60fba
    # 停止容器
    docker stop e20333d60fba
    # 强制停止容器
    docker kill d61f2293dc34
    # 查看过去运行的两个容器
    docker ps -n 2
    # 删除已停止的容器
    docker rm e20333d60fba
    
    # 后台运行容器
    docker run -d tomcat
    # 容器命令如果不是一直挂起的命令就会自动退出
    
    # 查看容器日志
    docker logs -t -f --tail 3 3da4b26aa8ea
    # 查看容器内进程
    docker top 3da4b26aa8ea
    # 查看容器内部细节,以json形式展示
    docker inspect 3da4b26aa8ea
    # 进入正在运行的容器并以命令行交互
    docker attach 2b0856486ca0
    # 容器执行命令返回宿主机
    docker exec -t 2b0856486ca0 ls -l /tmp
    # exec也可以进入容器终端
    docker exec -t 2b0856486ca0 /bin/bash
    # 从容器内拷贝文件到主机
    docker cp 2b0856486ca0:/tmp/ks-script-2n9owwnh /root
    
    镜像
    联合文件系统

    docker镜像由一层层文件系统组成
    bootfs 包含bootloader和kernel
    bootfs之上是rootfs,即典型linux系统的标准目录和文件

    镜像

    docker镜像分层是为了共享资源
    镜像都是只读的

    # 端口映射
    docker run -it -p 8080:8080 tomcat
    # 随机分配端口
    docker run -it -P tomcat
    # 根据运行中容器提交镜像
    docker commit -a "vincent" -m "tomcat without docs" ac43cad04aec vincent
    /mycat:1.2
    # 删除所有容器
    docker rm -f $(docker ps -q)
    

    相关文章

      网友评论

          本文标题:Docker

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