概述
Docker 是一个开放源代码软件,是一个开放平台,用于开发应用、交付应用、运行应用。
Docker允许用户将基础设施中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。
Docker容器与虚拟机类似,但二者在原理上不同。容器是将操作系统层虚拟化,虚拟机则是虚拟化硬件,因此容器更具有便携性、高效地利用服务器。 容器更多的用于表示 软件的一个标准化单元。由于容器的标准化,因此它可以无视基础设施的差异,部署到任何一个地方。另外,Docker也为容器提供更强的业界的隔离兼容。
架构
架构图中组件:
1、Docker daemon(后台进程)
Docker daemon是一个运行在宿主机(DOCKER_HOST)的后台进程,可通过Docker客户端与之通信
2、Client(Docker客户端)
Docker客户端是Docker的用户界面,可以接受用户命令和配置标识,与Docker daemon通信
3、 Images(Docker镜像)
Docker镜像是一个只读模板,它包含创建Docker容器的说明,和系统安装光盘有点像,同理使用Docker镜像运行其中的程序
4、Container(容器)
容器是镜像的可运行实例
镜像和容器的关系有点类似于面向对象中,类和对象的关系
可通过Docker API或者CLI命令来启停、移动、删除容器
5、Registry
Docker Registry是一个集中存储与分发镜像的服务
可借助Docker Registry来避免镜像的手动拷贝
一个Docker Registry可包含多个Docker仓库 ->
每个仓库可包含多个镜像标签 ->
每个标签对应一个Docker镜像
Docker Registry可分为公有Docker Registry和私有Docker Registry
最常用的Docker Registry莫过于官方的Docker Hub,也是默认的Docker Registry
安装
安装环境为:CentOS7
设置yum源
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --enable docker-ce-edge
yum-config-manager --enable docker-ce-test
配置Docker 镜像源
mkdir /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"graph":"/home/docker",
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://reg-mirror.qiniu.com",
"https://hub-mirror.c.163.com"]
}
EOF
配置国内加速地址,可以提升下载速度
Docker中国区官方镜像:https://registry.docker-cn.com
网易:http://hub-mirror.c.163.com
ustc :https://docker.mirrors.ustc.edu.cn
中国科技大学:https://docker.mirrors.ustc.edu.cn
阿里:形式类似于 https://xxxxx.mirror.aliyuncs.com
需要登录阿里云账号 -> 容器镜像服务 -> 镜像服务 -> 复制加速器地址
安装启动Docker
yum install docker-ce
# 安装Docker
service docker start
# 启动Docker服务
Portainer管理Docker
介绍
- Portainer 是一款轻量级的图形化管理工具,通过它我们可以轻松管理不同的 docker 环境。Portainer 部署和使用都非常的简单,它由一个可以运行在任何 docker 引擎上的容器组成。
- Portainer 功能十分全面,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm 集群和服务等集中管理和操作、登录用户管理和控制等功能。基本能满足中小型单位对容器管理的全部需求。
安装启动
docker pull portainer/portainer
#拉取镜像
docker volume create portainer_data
#创建Volume,保持数据持久化
docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
#启动Portainer
docker命令说明:
docker run
:新建并启动容器
-d
:静默启动
-p 9000:9000
:指定暴露端口为9000
--name portainer
:指定容器名称,可自定义
--restart always
:指定容器退出后的重启策略为始终重启
-v /var/run/docker.sock:/var/run/docker.sock
:获取Docker套接字,
-v portainer_data:/data
:数据卷是用来持久化数据的,生命周期独立于容器,Docker 不会在容器被删除后自动删除数据卷
portainer/portainer
:指定镜像
关于docker.sock
简单地说,/var/run/docker.sock文件是Docker守护进程(Docker daemon)默认监听的Unix域套接字(Unix domain socket),容器中的进程可以通过它与Docker守护进程进行通信。
例如:Portainer通过绑定的/var/run/docker.sock文件与Docker守护进程通信,执行各种管理操作。
使用Portainer可以轻松创建容器。实际上,HTTP请求是通过docker.sock发送给Docker守护进程的。可以通过curl创建容器来说明这一点。使用HTTP接口运行容器需要两个步骤,先创建容器,然后启动容器。
注意: 绑定Docker套接字之后,容器的权限会很高,可以控制Docker守护进程。因此,这一点必须谨慎使用,只能用于足够信任的容器。
使用
首次使用需要创建密码,进入主页面后,如下图:
在页面上就可以直接进行容器的创建、启动、停止、删除等操作
同时,也可以对Volume、NetWorks进行新增、删除操作
参考
关于/var/run/docker.sock
Docker从入门到实践