一、docker入门
1、安装docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
2、拉取Ubuntu镜像
sudo docker pull ubuntu:14.04.3
docker pull 拉取的默认远端官方仓库:https://hub.docker.com
docker pull 拉取的远程镜像放在本地 /var/lib/docker/ 目录下
3、查看本地镜像
sudo docker images
4、运行容器
sudo docker run -itd --name ubuntu ubuntu:14.04.3
-d 参数默认不进入容器,想要进入容器需要使用docker exec
docker的两个参数 -i -t ,运行交互式容器
-i 允许对容器内的标准输入STDIN进行交互;
-t 在新容器内指定一个伪终端或终端;
5、通过exec命令进入ubuntu容器
sudo docker exec -it ubuntu /bin/bash
6、查看当前docker容器的运行状态
sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d07f5db43e66 ubuntu:14.04.3 "/bin/bash" 2 hours ago Up 51 seconds ubuntu
7、终止当前容器的运行
$ sudo docker stop d07f5db43e66
d07f5db43e66
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
二、docker深入理解
Dockerfile Image Container 的关系:
- Dockerfile: 用于描述镜像的生成规则。 Dockerfile中的每一条命令,都在Docker镜像中以一个独立镜像层的形式存在。
- Image: 由Dockerfile生成, 呈现层级结构, 每层镜像包含:镜像文件以及镜像json元数据信息。
- Container: Container 是Image 的动态运行结果,概括而言,就是在Docker镜像之上,运行进程。
Docker的设计并不推荐容器内运行多个进程,它希望是一个进程一个容器,走微服务方向。
Docker内的多进程管理工具是supervisor和monit。在Docker中,进程管理的基础就是Linux内核中的PID命名空间技术。
基于Docker环境的应用程序开发工作流程:
Docker三剑客:Compose、Machine和Swarm
Docker Machine
如果您的主系统是Linux机器,并且希望运行docker命令,您只需要下载并安装docker Engine。但是,如果你想在一个网络上,云端甚至本地提供多个Docker主机,您需要Docker Machine。
Docker machine是Docker官方三剑客项目()之一,负责使用docker容器的第一步:在多平台上快速安装和维护docker运行环境。它支持多种平台,让用户可以在很短时间内在本地或云环境中搭建一套docker主机集群。
Docker Machine的用途:
1)在Mac或Windows上安装并运行Docker
2)配置和管理多个远程Docker主机
3)为Docker Swarm提供支持
Docker Swarm
Docker Swarm 是 Docker 官方三剑客项目之一,提供 Docker 容器集群服务,是 Docker 官方对容器云生态进行支持的核心方案。使用它,用户可以将多个 Docker 主机封装为单个大型的虚拟 Docker 主机,快速打造一套容器云平台。
安装要求:
每个节点都需要安装 Docker,并且能够与 Swarm 的其他节点通信。
在网络方面,需要在路由器和防火墙中开放如下端口。
- 2377/tcp:用于客户端与 Swarm 进行安全通信。
- 7946/tcp 与 7946/udp:用于控制面 gossip 分发。
- 4789/udp:用于基于 VXLAN 的覆盖网络。
搭建 Swarm 的过程有时也被称为初始化 Swarm,大体流程包括初始化第一个管理节点 -> 加入额外的管理节点 -> 加入工作节点 -> 完成。
1、初始化第一个管理节点
sudo docker swarm init
通过 docker swarm join-token
命令用来获取添加新的工作节点和管理节点到 Swarm 的命令和 Token。
$ docker swarm join-token worker
To add a manager to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-0uahebax...c87tu8dx2c \
10.0.0.1:2377
$ docker swarm join-token manager
To add a manager to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-0uahebax...ue4hv6ps3p \
10.0.0.1:2377
2、加入额外的管理节点
docker swarm join \
--token SWMTKN-1-0uahebax...ue4hv6ps3p \
10.0.0.1:2377
3、加入工作节点
docker swarm join \
--token SWMTKN-1-0uahebax...c87tu8dx2c \
10.0.0.1:2377
4、完成
在任意一个管理节点上执行
docker node ls
命令来列出 Swarm 节点。