第一本docker书笔记
第一本docker书笔记
笔记是从xmind中导出,看xmind格式会更方便,免费资源地址
1. 简介
1.1 Docker简介
-
Docker是一个能够把开发的应用程序自动部署到容器的开源引擎。
-
1.1.1 提供一个简单、轻量的建模方式
-
1.1.2 职责的逻辑分离
- 开发人员只需要关心容器中运行的应用程序,而运维人员只需要关心如何管理容器
- 加强开发人员写代码环境与程序要部署的生产环境的一致性。
-
1.1.3 快速高效的开发生命周期
-
1.1.4 鼓励使用面向服务的组件
- 推荐单个容器只运行一个应用程序或进程。
1.2 Docker组件
-
1.2.1 Docker客户端和服务器
-
1.2.2 Docker镜像
-
镜像是Docker世界的基石,用户基于镜像来运行自己的容器。镜像体积很小,非常便携,易于分享、存储和更新。
-
镜像是Docker生命周期中的构建部分,它是基于联合文件系统的一种层次的结构,由一些列指令一步一步构建出来。
-
公共镜像
- Docker公司运营的公共镜像叫Docker Hub,用户可以注册、分享并保存自己的镜像。
- 也可以保存用户私有的镜像,组织或团队内部可见
-
私有镜像
-
-
1.2.3 Registry
- 保存用户构建的镜像。
- 架设私有Registry,保存在防火墙后面。
-
1.2.4 容器
- 容器是基于镜像启动,容器中可以运行一个或多个进程。
- 容器是Docker启动或者执行阶段。
- 容器就是一个镜像格式、一系列标准的操作,一个执行环境。
- Docker借鉴了标准集装箱的概念,Docker运输软件。每个容器都包含一个软件镜像,并且可以对软件镜像进行一些操作。
1.3 我们能用Docker做什么
- 加速本地开发和构建流程,使其更加高效、更加轻量化。本地开发人员可以构建、运行并分享Docker容器。
- 能够让独立服务或者应用程序在不同的环境中,得到相同的结果。
- 用Docker创建隔离的环境来进行测试。
- 提供软件即服务的应用程序。
- 高性能、超大规模的宿主机部署。
1.4 Docker与配置管理
- Docker和配置管理工具可能都需要部署。
1.5 Docker的技术组件
- Docker可以运行与任何安装现代Linux内核的x64主机上。
- 一个原生的Linux容器格式,libcontainer或者lxc
- Linux内核的命名空间(namespace),用于隔离文件系统、进程和网络。
- 文件系统隔离:每个容器都有自己的root文件系统
- 进程隔离:每个容器都运行在自己的进程环境中。
- 网络隔离:容器间的虚拟网络接口和IP地址都是分开的。
- 资源隔离和分组:使用cgroups将cpu和内存之类的资源独立分配给每个容器。
- 写时复制:文件系统是通过写时复制创建的,这就意味着文件系统是分层的、快速的,而且占用的磁盘空间更小。
- 日志:容器产生的STDOUT、STDERR和STDIN这些IO流都会被收集并记入日志,用来进行日志分析和故障排错。
- 交互式shell:用户可以创建一个伪tty终端,将其连接到STDIN,为容器提供一个交互式shell。
1.6 本书的内容
- 安装Docker、尝试使用Docker容器、构建Docker镜像、管理并共享Docker镜像、运行、管理更复杂的Docker容器、将Docker容器的部署纳入测试流程、构建多容器的应用程序和环境、介绍使用Figer进行Docker编配的基础,探索Docker的API。
1.7 Docker资源
- Hub、官方网站、博客、文档、入门指南、GitHub源代码、Forge、StackOverFlow问答主页。
2. 安装Docker
2.1 安装Docker的先决条件
- 64位CPU架构的计算机、Linux3.8或更高版本内核、内核必须支持一种合适的存储驱动、内核必须支持并开启cgroup和命名空间功能。
2.2 在unbutu中安装Docker
- uname -a 检查内核版本和cpu架构
- DeviceMapper提供了一种将块设备映射到高级虚拟设备的方法,它支持自动精简配置,可以在一个文件系统中存储多台虚拟设备(Docker镜像中的层)。
2.9 Docker守护进程
3. Docker入门
3.1 确保Docker已经就绪
- docker info
3.2 运行我们的第一个容器
-
docker --help
-
docker run创建和启动容器
- docker run -i -t ubuntu /bin/bash
- -i - 保证容器中的STDIN是开启的,标准输入
- -t - 为要创建的Docker容器分配一个伪tty终端
- 首先docker会检查本地是否存在ubuntu镜像,如果本地还没有该镜像的话,那么docker会连接官方维护的Docker Hub Registry,查看是否有镜像。如果有,下载保存到本地。随后,Docker在文件系统内部用这个镜像创建了一个新容器。该容器拥有自己的网络、IP地址,以及一个用来和宿主机进行通信的桥接网络接口。最后,我们告诉新容器需要运行/bin/bash命令启动容器内的shell。
3.3 使用第一个容器
-
hostname、cat /etc/hosts、ip a
- exit退出
-
docker ps -a 列出所有容器
-
docker ps列出运行中的容器
- docker ps -l
-
3.4 容器命名
-
–name
- 唯一、docker rm移除同名容器
3.5 重新启动已经停止的容器
- docker start/restart ID/name
3.6 附着到容器上
-
docker attach ID/name
- exit容器也会停止
3.7 创建守护容器
- -d - 容器后台运行
3.8 容器内部都在干些什么
-
docker logs ID/name
-
docker logs -ft ID/name
-
docker logs --tail 10 ID/name
- docker logs --tail 0 -f ID/name
-
-
3.9 查看容器内的进程
- docker top ID/name