目录
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
官网:https://www.docker.com/
相关资料:
1、Docker入门教程Docker 教程 | 菜鸟教程
2、Docker_百度百科 Docker_百度百科
3、史上最全Docker资料集粹 http://special.csdncms.youkuaiyun.com/BeDocker/
4、Docker - 话题精华 - 知乎 Docker - 知乎
5、docker 简明教程 | 简果网 docker 简明教程 | 简果网
6、如何使用Dockerfile构建镜像 Docker 镜像使用 | 菜鸟教程
7、Dockerfile reference - Docker https://docs.docker.com/engine/reference/builder/
Docker与虚拟机比较
作为一种轻量级的虚拟化方式,Docker在运行应用上跟传统的虚拟机方式相比具有显著优势:
- Docker容器很快,启动和停止可以在秒级实现,这相比传统的虚拟机方式要快得多。
- Docker容器对系统资源需求很少,一台主机上可以同时运行数千个Docker容器。
- Docker通过类似Git的操作来方便用户获取、分发和更新应用镜像,指令简明,学习成本较低。
- Docker通过Dockerfile配置文件来支持灵活的自动化创建和部署机制,提高工作效率。
(本段摘自《Docker技术入门与实战》)
虚拟机实现了硬件上的虚拟,而Docker则实现了操作系统级别的虚拟。
安装
Docker 要求 Ubuntu 系统的内核版本高于 3.10 ,通过 uname -r 命令查看你当前的内核版本:
[root@bogon ~]# uname -r
3.10.0-327.22.2.el7.x86_64
Docker支持以下的CentOS版本:
- CentOS 7 (64-bit)
- CentOS 6.5 (64-bit) 或更高的版本
Docker 支持以下的 Ubuntu 版本:
- Ubuntu Precise 12.04 (LTS)
- Ubuntu Trusty 14.04 (LTS)
- Ubuntu Wily 15.10
- 其他更新的版本……
Linux安装
curl -fsSL https://get.docker.com/ | sh
# daocloud.io 国内镜像
curl -sSL https://get.daocloud.io/docker | sh
该安装包适用于 Ubuntu,Debian,Centos 等大部分主流 Linux 发行版。
当以普通用户身份去使用docker images
时,如果出现以下错误:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.26/images/json: dial unix /var/run/docker.sock: connect: permission denied
是因为权限问题:
sudo groupadd docker
sudo gpasswd -a ${USER} docker
sudo service docker restart
newgrp - docker
CentOS7支持使用yum安装:
yum update
yum install docker
查看文档:
https://docs.docker.com/engine/installation/linux/centos/
DaoCloud Enterprise 5.0
查看版本:
docker version
显示:
Client:
Version: 1.11.2
API version: 1.23
Go version: go1.5.4
Git commit: b9f10c9
Built: Wed Jun 1 21:23:11 2016
OS/Arch: linux/amd64
Server:
Version: 1.11.2
API version: 1.23
Go version: go1.5.4
Git commit: b9f10c9
Built: Wed Jun 1 21:23:11 2016
OS/Arch: linux/amd64
启动docker服务:
service docker start
# 或者
systemctl start docker
centos7使用systemctl 替代service 管理服务。systemctl 常见用法:
# 格式
systemctl 动作 服务名.service
# 常见命令
systemctl start docker #启动
systemctl restart docker #重启
systemctl stop docker #停止
systemctl status docker #查看状态
systemctl enable docker #自启动
systemctl disable docker #禁止自启动
.service可以省略。
(详见:RHEL7中systemctl的用法 RHEL 7 中 systemctl 的用法(替代service 和 chkconfig)_redhat systemctl替代-优快云博客)
为了后面的需要,我们这里下载个ubuntu的镜像:
docker search ubuntu
docker pull ubuntu
# 查看所有可用镜像
docker images -a
这就下载了最新的ubuntu系统镜像到本地,接下来我们可以从该镜像创建多个容器。具体命令含义下面会有说明。
Docker里比较重要的概念有注册服务器、仓库、镜像、容器。
仓库: 注册服务器是存放仓库的地方,其上往往存放着多个仓库。每个仓库集中存放某一类镜像,往往包括多个镜像文件,通过不同的标签(tag)来进行区分。例如存放Ubuntu操作系统镜像的仓库,称为Ubuntu仓库,其中可能包括14.04、12.04等不同版本的镜像。
镜像: Docker镜像(Image)类似于虚拟机镜像,可以将它理解为一个面向Docker引擎的只读模板,包含了文件系统。例如:一个镜像可以只包含一个完整的Ubuntu操作系统环境,可以把它称为一个Ubuntu镜像。
容器: 容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,而这些容器都是相互隔离、互不可见的。可以从一个镜像创建无数个容器。平时我们主要操作的就是容器。我们也可以把容器打包成镜像以方便再次使用。镜像自身是只读的。容器从镜像启动的时候,Docker会在镜像的最上层创建一个可写层,镜像本身将保持不变。
客户端和守护进程
这部分将介绍docker的结构以及docker服务的管理。
Docker 的 C/S 模式
docker是C/S架构,使用client与Server通信。
支持三种连接方式:
unix:///var/run/docker.sock
tcp://host:port
fd://socketfd
Docker 守护进程的配置和操作
使用ps -ef | grep docker
查看docker进程。
管理docker服务:
service docker start
service docker stop
service docker restart
如使用service docker start
实际上是执行了/bin/systemctl start docker.service
命令。
建议重启使用:
systemctl daemon-reload
systemctl restart docker.service
docker守护进程的配置和操作模式:
docker -d [OPTIONS]
-d 以后台方式运行容器。
下面是容器创建时的一些配置,按需添加。初学者可以简单看看,以后需要再来查找。
运行相关:
-D, --debug=false
-e,--exec-driver="native"
-p,--pidfile="/var/run/docker.pid"
服务器相关:
-G,--group="docker"
-H,--host=[]
--tls=false
RemoteAPI相关:
--api-enable-cors=false
存储相关:
-S,--storage-driver=""
--selinux-enabled=false
--storage-opt=[]
网络设置相关:
-b,--bridge="" 设置自定义网桥
--bip=""
--dns=[]
--ip=0.0.0.0
启动配置文件
Ubuntu: /etc/default/docker
CentOS: /etc/sysconfig/docker
如果没有配置文件,可以直接编辑:
vim /lib/systemd/system/docker.service
里面的ExecStart就是启动配置,默认是:
ExecStart=/usr/bin/docker -H fd://
我们可以加几个配置:
ExecStart=/usr/bin/docker -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.soc