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
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号