1.容器生态系统
一谈到容器,我们都会想到 Docker。
Docker 现在几乎是容器的代名词。确实,是 Docker 将容器技术发扬光大。同时,我们也需要知道围绕 Docker 还有一个生态系统。Docker 是这个生态系统的基石,但完善的生态系统才是保障 Docker 以及容器技术能够真正健康发展的决定因素。
1.1docker是什么:
Docker是通过内核虚拟化技术(namespaces及cgroups cpu、内存、磁盘io等)来提供容器的资源隔离与安全保障等。由于Docker通过操作系统层的虚拟化实现隔离,所以Docker容器在运行时,不需要类似虚拟机(VM)额外的操作系统开销,提高资源利用率。
build once, configure once and run anywhere(译者注:这个就不翻译了,翻译出来味道就没了)
Docker 将集装箱思想运用到软件打包上,为代码提供了一个基于容器的标准化输出系统。Docker 可以将任何应用及其依赖打包成一个轻量级,可移植,自包含的容器。容器可以运行在几乎所有的操作系统上
1.2.docker目标:
2.Docker架构
Docker的核心组件包括
● Docker 客户端:Client
● Docker 服务器:Docker daemon
● Docker 镜像: Image
● Registry
● Docker 容器 :Container
Docker 架构如图:
Docker 采用的是 Client/Server 架构。客户端向服务器发送请求,服务器负责构建,运行和分发容器。客户端和服务器可以运行在同一个host上,客户端也可以通过 socket 或 RESTAPI 与远程的服务器通信。
3.Docker客户端
最常用的Docker客户端是docker命令。通过docker我们可以方便地在 Host上构建和运行容器。
docker支持很多操作(子命令)
除了docker命令行工具,用户也可以通过 REST API 与服务器通信
4.Docker 服务器
Docker daemon 是服务器组件,以Linux后台服务的方式运行,如图
Docker daemon 运行在Docker host 上,负责创建,运行,监控容器,构建,存储镜像。
默认情况下,Docker守护进程会生成一个socket(/var/run/docker.sock)文件来进行本地进程通信,而不会监听任何端口,因此只能在本地使用docker客户端或者使用Docker API进行操作。
如果想在其他主机上操作Docker主机,就需要让Docker守护进程监听一个端口,这样才能实现远程通信。
默认配置下,Docker daemon 只能响应来自本地Host 的客户端请求。如果要允许远程客户端请求,需要在配置文件中打开TCP监听,步骤如下
(1). vim /usr/lib/systemd/system/docker.service
5.Docker镜像
build命令 Usage:docker build [OPTIONS] PATH | URL | - OPTIONS: -t ,--tag list #构建后的镜像名称 -f, --file string #指定Dockerfiile文件位置 示例: 1,docker build . 2,docker build -t nginx:v10 . 3,docker build -t nginx:v10 -f /path/Dockerfile /path
6.Docker 容器
Docker容器就是Docker镜像的运行实例
用户可以通过CLI(Docker)或是API启动,停止,移动或删除容器。可以这么认为,对于应用软件,镜像是软件
生命周期的构建和打包阶段,而容器则是启动和运行阶段
7.Registry
容器是通过 image 创建的,需要有一个仓库来统一存放 image,这个仓库就叫做 Registry
Registry是存放Docker镜像的仓库,Registry分私有和公有两种。
Docker Hub(https://hub.docker.com/)是默认的Registry,由Docker公司维护,上面有数以万计的镜像,用户可以自由下载和使用
出于对速度或安全的考虑,用户也可以创建自己的私有Registry。
8.docker安装
环境:
[root@docker1 ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
[root@docker1 ~]# uname -r
3.10.0-862.2.3.el7.x86_64
(1).安装需要的epel源 ####lxc依赖epel源,如果不安装epel源下载lxc有可能会下载成docker
yum install epel-release -y