Docker基本使用

一、定义

  1. 官方定义:Docker是一个能够把开发的应用程序自动部署到容器的开源引擎。由 Docker Inc. 公司 前 dotC1oud公司, PaaS市场中的老牌提供商)的团队编写,基于 Apache 2.0开源授权协议发行。
  2. 程序员能理解的定义:Docker是Docker Inc. 公司开源的一个基于Linux技术构建容器的容器引擎,其源代码在GitHub上,基于Go语言开发并遵从Apache 2.0协议;
  3. 普通人能理解的定义:“没有集装箱,就不会有全球化。”而Docker就是IT领域里改变世界的“集装箱”;
  4. 圈里人总结:Docker是一套以容器技术为核心的IT标准化构建体系。它不仅仅是一项技术,更不仅仅是一家公司,Docker必将改变整个IT世界,“Build Ship Run”。

二、优势

  1. 对开发人员来说:Docker提供了简单快速的隔离环境,无需再为配置环境操心,让程序跑到哪都一样;
  2. 对运维人员来说:Docker可以快速构建出一整套无状态分布式基础设施,使得运维工作可以通过程序化的脚本来完成;
  3. 对业务人员来说:从每月或每周才能发布的新版本到只需1小时就能发布完毕,迅速满足用户新需求;
  4. 标准化应用发布:Docker容器包含了运行环境和可执行程序,可以跨平台和主机使用;
  5. 节约时间:快速部署和启动,VM启动一般是分钟级,Docker容器启动是秒级;
  6. 方便构建基于SOA架构或微服务架构的系统,通过服务编排,更好的松耦合;
  7. 节约成本:以前一个虚拟机至少需要几个G的磁盘空间,Docker容器可以减少到MB级;
  8. 方便持续集成:通过与代码进行关联使持续集成非常方便;
  9. 可以作为集群系统的轻量主机或节点:在IaaS平台上,已经出现了CaaS,通过容器替代原来的主机。

三、docker的基本命令

    1.查找已经安装docker
      # yum list installed | grep -i docker
      
      yum方式卸载docker
      # sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

    2.安装依赖
      # sudo yum install -y yum-utils
      
    3.修改Docker镜像下载地址
	  # sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
     
      更新yum命令
      # yum makecache fast
      
    4. 安装docker
      # sudo yum install -y docker-ce docker-ce-cli containerd.io
    

    5.docker启动、设置开机启动
      # systemctl start docker
      # systemctl enable docker
      
      验证是否安装启动成功
      # docker version 
      
    6.获取CentOS镜像
      # docker pull centos

    7.查看所有的镜像
      # docker images  

    8.创建docker 容器(可以根据一个镜像创建多个容器)
      # docker run -tid 镜像ID /bin/bash       //非centos7
      # docker run -tid 镜像ID /usr/sbin/init  //centos7版本。使用/usr/sbin/init解决systemctl报错不能使用的问题

    9.查看容器列表
      # docker ps -a

    10.重命名容器名称
      # docker rename old容器名  new容器名

    11.停止容器
      # docker stop 容器名称

    12.进入容器
      # docker exec -it 容器名称 /bin/bash

      注:如果出现

      OCI runtime exec failed: exec failed: container_linux.go:345: starting container process caused "exec: \"/bin/bash\": stat /bin/bash: no such file or directory": unknown
      这样的错误,是我们docker镜像中的/bin/bash文件并不存在,可能存在的是/bin/sh文件,使用

      # docker exec -it 44fc0f0582d9 /bin/sh

    13.退出容器
      # exit
      
    14.删除容器
     # docker rm 容器名称

    15.删除镜像
      # docker rmi 镜像ID

    16.Docker文件拷贝(容器<=>docker)
      # docker cp 原路径 docker容器名:docker容器路径(系统=》docker)
      # 例如:docker cp MySQL-server-5.6.38-1.el7.x86_64.rpm firstMain:/root/
      # docker cp docker容器名:docker容器路径 原路径(docker=》系统)      
      # 例如:docker cp firstMain:/etc/my.cnf /etc/my.cnf  
      
   17.查看docker容器的IP地址    
     # docker inspect 容器名 | grep IPAddress
posted @ 2017-12-24 20:26  小葱拌豆腐~  阅读(297)  评论(0编辑  收藏  举报