qdqht00 2020-04-14
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
一个完整的Docker有以下几个部分组成
序号 | 组成部分 |
---|---|
1 | Docker Client客户端 |
2 | Docker Daemon守护进程 |
3 | Docker Image镜像 |
4 | Docker Container容器 |
Docker架构
Docker使用客户端--服务器(c/s)架构模式,使用远程API来管理和创建Docker容器。Docker
容器通过Docker镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类
Docker | 面向对象 |
---|---|
容器 | 对象 |
镜像 | 类 |
Docker采用C/S架构,Docker daemon作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。客户端和服务端即可以运行在一台机器上,也可通过socket或者RESTful API来进行通信
Docker daemon 一般在宿主主机后台上运行,等待接收来自客户端的消息。Docker客户端则为用户提供一系统可执行命令,用户通过使用这些命令实现跟Docker daemon交互
Docker架构图
Docker三在核心要素:镜像(Image)、容器(Container)、仓库(Registry)
镜像(Image)
打包了业务代码及运行环境的包,是静态的文件,不能直接对外提供服务
容器(Container)
镜像的运行时,可以对外提供服务。本质上讲是利用namespace和cgroup等技术在宿主机 创建的独立的虚拟空间
仓库(Registry):
(1)公有仓库,如:Docker Hub,阿里,网易等 (2)私有仓库,企业内部搭建 Docker Registry,Docker官方提供的镜像仓库存储服务 Harbor,是Docker Registry的更高级封装,它提供友好的Web UI界面,角色和用户权 限管理,用户操作审计等功能 (3)镜像访问地址形式:registry.devops.com/demo/hello:latest,若没有前面的url地址,则默认会去寻找Docker Hub中的镜像,若没有tag标签,则使用latest作为标签 (4)公有仓库中,一般存在下面几类镜像 1)操作系统基本镜像(CentOS,ubuntu,suse,alpine等) 2)中间件(nginx,redis,mysql,tomcat等) 3)语言编译环境(python,java,golang等) 4)业务镜像(django-demon等)
Linux内核提供了6种namespace隔离的系统调用,如下所示
namespace | 系统调用参数 | 隔离内容 |
---|---|---|
UTS | CLONE_NEWUTS | 主机名或域名 |
IPC | CLONE_NEWIPC | 信号量、消息队列和共享内存 |
PID | CLONE_NEWPID | 进程编号 |
Network | CLONE_NETWORK | 网络设备、网络端口等 |
Mount | CLONE_NEWNS | 挂载点(文件系统) |
User | CLONE_NEWUSER | 用户组和用户 |
1.配置宿主机网卡转发
##查看是否开启宿主机网卡转发功能 [ ~]# sysctl -a | grep -w net.ipv4.ip_forward net.ipv4.ip_forward = 0 #查询出来的结果为0,说明此宿主机没有开启网卡转发功能 #开启宿主机网卡转发功能 [ ~]# cat > /etc/sysctl.d/docker.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF
2.添加docker源
[ ~]# curl -o /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo [ ~]# curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo [ ~]# yum clean all && yum makecache
3.查看源中可用版本
[ ~]# yum list docker-ce --showduplicates | sort -r
4.安装指定版本或最新版的Docker
#安装指定版本的Docker [ ~]# yum -y install docker-ce-18.09.9 #安装最新版本的Docker [ ~]# yum -y install docker-ce
5.配置源加速
![1586856304696](https://img2020.cnblogs.com/blog/1178971/202004/1178971-20200414181126714-1463780489.png)#创建Docker目录 [ ~]# mkdir -p /etc/docker #配置源加速 [ ~]# cat > /etc/docker/daemon.json << EOF { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "insecure-registries": ["https://hub.mfyxw.com"], #非安全的仓库可以在insecure-registries中添加 "registry-mirrors": ["https://jltw059v.mirror.aliyuncs.com"] } EOF
6.设置开机自启并立即启动服务
[ ~]# systemctl enable --now docker
7.查看docker信息
[ ~]# docker info