一、什么是Docker
Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。
下面的图片比较了 Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
二、为什么要使用docker
三、docker基本概念
Docker 包括三个基本概念
- 镜像(Image)
- 容器(Container)
- 仓库(Repository)(包含了一些镜像加速器和Registry地址)
理解了这三个概念,就理解了 Docker 的整个生命周期。简单来说,镜像与容器的关系类似面向对象的类与实例的关系。镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
四、docker的安装(摘自:Centos安装Docker CE)
a、安装docker ce
- 按照官网安装教程进行安装:官方有Mac、Windows、Ubuntu、Debian、Centos等安装教程
- 阿里云Docker CE安装镜像帮助文档:阿里云Docker CE镜像源站
因网络问题,本文是参考 阿里云Docker CE镜像源站 方式安装的Centos版的Docker CE。安装成功后:
[root@localhost local]# sudo service docker start
Redirecting to /bin/systemctl start docker.service
[root@localhost local]# docker version
Client:
Version: 17.09.0-ce
API version: 1.32
Go version: go1.8.3
Git commit: afdb6d4
Built: Tue Sep 26 22:41:23 2017
OS/Arch: linux/amd64
Server:
Version: 17.09.0-ce
API version: 1.32 (minimum version 1.12)
Go version: go1.8.3
Git commit: afdb6d4
Built: Tue Sep 26 22:42:49 2017
OS/Arch: linux/amd64
Experimental: false
[root@localhost Desktop]#
出现版本信息表示安装成功。
b、配置国内镜像加速器
配置阿里加速器:
参考:镜像加速器
登陆阿里云账号,访问地址:https://cr.console.aliyun.com/#/accelerator ,会有一个专有的加速地址:
按提供的方法配置docker加速器,如果已经存在 /etc/docker 文件夹,就不需要执行 sudo mkdir -p /etc/docker 命令:
配置daocloud加速器:(配置方法:daocloud官方)
[root@localhost Desktop]# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f79ca91e.m.daocloud.io
docker version >= 1.12
{
"registry-mirrors": ["http://f79ca91e.m.daocloud.io"]
}
Success.
You need to restart docker to take effect: sudo systemctl restart docker
[root@localhost Desktop]# sudo systemctl restart docker
[root@localhost Desktop]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
bc95e04b23c0: Downloading 10.06MB/22.49MB
f3186e650f4e: Downloading 9.407MB/21.95MB
9ac7d6621708: Download complete
c、检查加速器
命令:docker info ,如下信息表示配置成功
[root@localhost docker]# docker info
Containers: 0
……
……
Registry Mirrors:
https://xxxxxxxx.mirror.aliyuncs.com/Live Restore Enabled: false
默认配置下,如果在 CentOS 使用 Docker CE 看到下面的这些警告信息:
WARNING: bridge-nf-call-iptables is disabled WARNING: bridge-nf-call-ip6tables is disabled
请添加内核配置参数以启用这些功能。
[root@localhost Desktop]# sudo tee -a /etc/sysctl.conf <<-EOF
> net.bridge.bridge-nf-call-ip6tables = 1
> net.bridge.bridge-nf-call-iptables = 1
> EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
[root@localhost Desktop]#
然后重新加载 sysctl.conf
即可
[root@localhost Desktop]# sudo sysctl -p
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
[root@localhost Desktop]#
d、建立 docker 用户组
默认情况下,docker
命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root
用户和 docker
组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root
用户。因此,更好地做法是将需要使用 docker
的用户加入 docker
用户组。
建立 docker
组:
先查看是否存在docker用户组
[root@localhost Desktop]# grep docker /etc/group
不存在就新建docker分组:
[root@localhost Desktop]# sudo groupadd docker
为当前用户 docker
组创建用户(dockuser)并设置密码(dockuser):
[root@localhost Desktop]# useradd -G docker dockuser
[root@localhost Desktop]# passwd dockuser
Changing password for user dockuser.
New password:
BAD PASSWORD: The password contains the user name in some form
Retype new password: