Docker是什么
Docker是一个能够把开发的应用程序自动部署到容器的开源引擎,它基于Apache2.0开源授权协议发行。
Docker极其简洁,它所需的全部环境只是一台仅仅安装了兼容版本的Linux内核和二进制文件最小限的宿主机。
Docker的目标:
- 提供一个简单、轻量的建模方式
职责的逻辑分离
- 使用Docker,开发人员只需要关心容器中运行的应用程序,而运维人员只需要关心如何管理容器
快速、高效地开发生命周期
鼓励使用面向服务的架构
- Docker推荐单个容器只运行一个应用程序或进程,这样就形成了一个分布式的应用程序模型。
Docker的组件
- Docker客户端和服务器
Docker镜像
镜像是构建Docker世界的基石。
用户基于镜像来运行自己的容器
。Registry
Docker用Registry来保存用户构建的镜像。
Registry分为两种:- 公共 – 例如Docker Hub的
- 私有 – 可以创建自己的私有的Registry,私有Registry可以收到防火墙的保护。
容器
镜像是Docker生命周期中的构建或打包阶段,而容器则是启动或执行阶段。
Docker能干什么
- 加速本地开发和构建流程,使其更加高效、更加轻量化。
- 能够让独立服务或应用程序在不同的环境中,得到相同的运行结果。
- 用Docker创建隔离的环境来进行测试。
- Docker可以让开发者先在本机上构建一个复杂的程序或架构来进行测试,而不是一开始就在生产环境部署、测试。
- 构建一个多用户的平台即服务(Paas)基础设施。
- 为开发、测试提供一个轻量级的独立沙盒环境,或者将独立的沙盒环境用于技术教学。
- 提供软件即服务(SaaS)应用程序,如Memcached即服务。
- 高性能、超大规模的宿主机部署。
Docker安装
安装前提条件:
- 运行64位CPU架构的计算机,如x86_64和amd64
- Linux内核版本大于3.8
Linux内核必须支持一种适合的存储驱动,如:
- Device Manager
- AUFS
- vfs
- btrfs
- Device Mapper - 默认的存储驱动
Ubuntu下安装
前提条件检查
使用SSH登录Ubuntu,看到如下信息:
满足安装Docker条件的第一和第二点检查是否有Docker的默认存储驱动Device Mapper
如果没有出现device-mapper的信息,需要执行如下命令:sudo modprobe dm_mod来加载dm_mod模块。添加Docker的APT仓库
执行命令:sudo sh -c “echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list”
更新APT源
执行命令:curl -s https://get.docker.io/gpg | sudo apt-key add -
sudo apt-get update前面准备好了环境,现在进行安装
执行命令:sudo apt-get install lxc-docker
- 查看是否安装成功
执行命令:
sudo docker info
可以看到,docker已经安装成功。
查看一下ip地址,可以看到如下信息:
关于docker0:
当docker启动时,它会在宿主机器上创建一个名为docker0的虚拟网络接口。它会从
RFC 1918
定义的私有地址中随机选择一个主机不用的地址和子网掩码,并将它分配给docker0。例如启动docker几分钟后它选择了172.17.42.1,一个16位的子网掩码为主机和它的容器提供了65,534个ip地址。
但docker0并不是正常的网络接口。它只是一个在绑定到这上面的其他网卡间自动转发数据包的虚拟以太网桥。它可以使容器与主机相互通信。
每次docker创建一个容器,它就会创建一对对等接口(peer interface),类似于一个管子的两端,在这边可以收到另一边发送的数据包。Docker会将对等接口中的一个做为eth0接口连接到容器上,并使用类似于vethAQI2QT这样的惟一名称来持有另一个,该名称取决于主机的命名空间。通过将所有veth*接口绑定到docker0桥接网卡上,Docker在主机和所有Docker容器间创建一个共享的虚拟子网。
7. 查看docker守护进程状态
执行命令:
sudo status docker
8. 启动或停止Docker:
执行命令:
sudo start/stop docker
以后,想要升级Docker,只要更新软件源(sudo docker update),然后再次执行sudo apt-get install lxc-docker即可。
Max OS X下安装
在Max OS X下安装,需要使用Boot2Docker虚拟机来模拟环境,Boot2Docker虚拟机运行一个守护进程(`Docker以root权限运行守护进程,来处理普通用户无法完成的操作,如挂载文件系统, docker程序是Docker守护进程的客户端程序,同样也需要以root身份运行。`),并在OS X中提供一个本地的Docker守护进程。Docker的客户端工具`docker`可以作为这些平台的原生程序安装,并连接到在Boot2Docker虚拟机中运行的Docker守护进程。下载然后安装Boot2Docker
启动Boot2Docker:
执行命令:open /Applications/boot2docker.app/
启动docker后,会打开一个终端,如下:
测试连接是否正常:
在第二步打开的终端,执行命令:docker info, 如下:
在进行Web等应用开发时,需要连接容器的ip地址,注意,是要求连接docker容器的地址,而不是宿主机的ip地址,查看docker的地址: