Docker之简介与安装

1.  Docker组成

    1.  Docker client  客户端

        Docker使用C/S的软件架构,Client端包含了容器管理所需要的命令行工具,通常会与服务端部署在同一台机器上。在日常操作中,我们可以通过命令行的方式,与服务端进行交互。

除了客户端以外,Docker也提供了REST API的方式与服务端进行交互,这通常是在程序代码中使用。       

    2.  Docker Daemon  服务端

        Docker Daemon可以看做Docker的服务端,它是整个Docker架构的核心组件。Docker Daemon在Linux系统中使用后台服务的方式运行,负责对容器、镜像、网络等对象进行管理。

    3.  Docker Image  镜像

        Docker的镜像即有着这样的用途,我们可以将镜像看作是容器的只读模板,当要使用容器时,需提前定制好所需的镜像,然后通过镜像生成容器。        

    4.  Docker Containers  容器

        容器是由镜像创建而成,可被看作镜像的运行实例。单个镜像可支持创建多个容器。

    5.  Docker Registory  仓库

        Registry做为存放镜像的仓库角色,它可以被部署在企业内部做为私有仓库,也可以部署在互联网做为公共仓库开放使用。    

      

2.  Docker组件和Docker架构组件

    1.  Docker组件

    1.  镜像(Image)

    2.  容器(Container)

    3.  仓库(Repository)

2.  Docker架构组件

    1.  Dockerd

    2.  Containerd

    3.  runc  

3.  Docker三大理念

    1.  构建

    2.  运输

    3.  运行

4.  Docker与OpenStack/KVM比较

类别 Docker OpenStack/KVM
部署难度 非常简单 组件多 部署复杂
启动速度 秒级 分钟级
执行性能 和物理系统几乎一致 VM会占用一些资源
镜像体积 镜像是MB级别 虚拟机镜像GB级别
管理效率 管理简单 组件相互依赖,管理复杂
隔离性 隔离性高 彻底隔离
可管理性 单进程,不建议启动SSH 完整的系统管理
网络连接 比较弱 借助Neutron可以灵活组件各类网络架构

5.  Docker应用场景

    1.  面向产品:产品交付

    2.  面向开发:简化环境配置

    3.  面向测试:多版本测试

    4.  面向运维:环境一致性

    5.  面向架构:自动化扩容(微服务)

6.  容器核心技术

    1.  Namespace

        Namespace又称为命名空间,它是Linux提供的一种内核级别环境隔离的方法,主要用于对系统资源的访问隔离。命名空间可以看作是系统中的安全沙盒,在其中的进程彼此独立。例如在A命名空间中有个pid为1的进程,而在B命名空间中也可以有一个pid为1的进程,它们之间互不影响。        

                           

    2.  Cgroup        

        全称为Control Group(控制组),它是Linux内核提供的一个特性,可用于限制和隔离进程对于资源的使用,包括CPU、内存、磁盘 I/O和网络带宽。通过Cgroup技术,容器可以实现对于不同进程的资源分配。

        Cgroup对于不同资源的管理通过各个子系统实现,子系统负责将特定类型的系统资源分配给特定的进程。       

                       

7.  Docker的快速入门

    1.  版本

        社区版  CE

        企业版  EE

    2.  支持平台

        linux

        mac

        windows

    3.  centos安装docker

        yum install docker -y  安装的是老版本

        yum remove docker*  卸载旧版本

        yum update -y 更新一下版本

        yum install -y yum-utils   device-mapper-persistent-data   lvm2  安装依赖包

        yum-config-manager     --add-repo     https://download.docker.com/linux/centos/docker-ce.repo  添加docker的repo源

        yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io  指定版本安装,不指定的话,就是最新版本

        yum list docker-ce --showduplicates | sort -r  查看支持的版本         

        systemctl start docker.service  启动docker服务

    4.  卸载docker

        yum reomve docker-ce

        rm -rf /var/lib/docker

    5.  查看docker版本

        docker version

    6.  查看docker的信息

        docker info

    7.  使用普通用户执行Docker

        1.  CentOS 版本 7.4,Docker 版本 docker-1.13 及以下

ll /var/run/docker.sock
srw-rw----. 1 root root 0 May 25 14:43 /var/run/docker.sock

# 添加 docker 用户组
groupadd docker

# 把需要执行的 docker 用户添加进该组,这里是 ibaboss
gpasswd -a ibaboss docker

# 重启 docker
systemctl restart docker

su - ibaboss

# 运行成功
docker ps -a   

        2.  CentOS 版本 7.4,Docker 版本 docker-ce 17 及以上

ll /var/run/docker.sock

srw-rw----. 1 root docker 0 May 25 14:12 /var/run/docker.sock

# 添加执行 docker 命令的用户,这里为 ibaboss
useradd ibaboss

# 把 ibaboss 用户加入 docker 组
usermod -G docker ibaboss  

su - ibaboss

docker ps -a                        

17.  jenkins+docker结合

19.  Docker图形化管理工具

    1.  使用portainer管理工具

21.  使用root登录容器

    docker exec -it  --user root 01d9314035e9 /bin/bash

23.  容器与宿主使用同一个hosts文件

    docker run -itd --name=tomcat-{{tomcat_name}} -p {{node_port}}:{{container_port}} -v  /home/java/app/{{tomcat_name}}/webapps:/usr/local/apache-tomcat-8.5.43/webapps -v /home/java/app/{{tomcat_name}}/logs:/usr/local/apache-tomcat-8.5.43/logs -v /usr/local/javalogs:/usr/local/javalogs -v /usr/local/git:/usr/local/git  $(cat /etc/hosts|awk -F ' ' '{if(NR>2){print "--add-host "$2":"$1}}') tomcat:v6 

    $(cat /etc/hosts|awk -F ' ' '{if(NR>2){print "--add-host "$2":"$1}}')  表示/etc/hosts里面的前两行不要  

24.  容器内安装vi编辑器

    apt-get update

    apt-get install vim 

 

posted @ 2018-05-05 12:40  奋斗史  阅读(363)  评论(0)    收藏  举报