Docker入门(二)
Docker的安装与使用
Docker 有两个主要的版本:Community Edition(CE
)和 Enterprise Edition(EE
)
CE
即社区版(免费,支持周期 7 个月), EE
即企业版,(强调安全,付费使用,支持周期 24 个月)
- 卸载旧版本docker
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
- 安装依赖包
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
- 安装Docker
$ sudo yum install docker
或
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh
- 查看是否安装成功
docker version
or
docker info
- 启动Docker-CE
sudo systemctl enable docker
sudo systemctl start docker
###例子
-
拉取镜像
docker pull library/hello-world 或 docker pull hello-world
这里
library
是image
文件所在的组,hello-world
是image
文件的名字 -
之后可以看到拉取的镜像
docker images
-
可以运行 hello-world 这个 image 文件
docker run hello-world
hello-world运行后就会停止运行,容器自动终止。有些容器不会自动终止,因为提供的是服务,比如Mysql,Redis镜像
我们可以通过网络直接下载一个已经创建好了的应用镜像,并通过 Docker RUN 命令就可以直接使用。当镜像通过 RUN 命令运行成功后,这个运行的镜像就是一个 Docker 容器啦,容器可以理解为一个轻量级的沙箱, Docker 利用容器来运行和隔离应用,容器是可以被启动、停止、删除的,这并不会影响 Docker 镜像。
容器启动过程如下:
- Docker 客户端执行 docker run 命令
- Docker daemon 发现本地没有 hello-world 镜像
- daemon 从 Docker Hub 下载镜像
- 下载完成,镜像 hello-world 被保存到本地
- Docker daemon 启动容器
Docker的核心组件
- Docker Daemon
- Docker Client
- Docker Images
- Docker Registry
- Docker Container
Docker Daemon(守护进程)
Docker Daemon(守护进程),也称为Docker引擎,是Docker的后台服务,它是Docker架构中的核心组件。它负责响应来自 Docker Client 的请求,然后将这些请求翻译成系统调用完成容器管理操作。该进程会在后台启动一个 API Server ,负责接收由 Docker Client 发送的请求,接收到的请求将通过Docker daemon 内部的一个路由分发调度,由具体的函数来执行请求。
大致来说Docker Daemon可分为以下几部分
- Docker Server
- Engine
- Job
Docker Daemon 可以认为是通过 Docker Server 模块接受 Docker Client 的请求,并在 Engine 中处理请求,然后根据请求类型,创建出指定的 Job 并运行。 Docker Daemon 运行在 Docker host 上,负责创建、运行、监控容器,构建、存储镜像。
启动 Docker Daemon
docker --daemon = true
docker –d
docker –d = true
命令通过docker
的 main()
函数来解析以上命令的相应 flag
参数,并最终完成 Docker Daemon
的启动
这里的话只能通过本地的host才能请求,如果需要远程客户端请求则需要有些修改如下
- 编辑配置文件 /etc/systemd/system/multi-user.target.wants/docker.service ,在环境变量 ExecStart后面添加 -H tcp://0.0.0.0,允许来自任意 IP 的客户端连接
- 重启并通信
systemctl daemon-reload
或
systemctl restart docker.service
docker -H 服务器IP地址 info
Docker Client
Docker客户端是用户与Docker守护进程交互的主要方式,它通过命令行接口发送命令给Docker守护进程。用户可以在本地或远程使用Docker客户端
Docker Image
Docker镜像是一个只读的模板,包含了运行容器所需的指令。镜像用于创建Docker容器,通常一个镜像包含了运行一个应用所需的所有内容——代码、运行时、库、环境变量和配置文件。镜像不包含任何动态数据,其内容在构建之后也不会被改变
我们可以将镜像的内容和创建步骤描述在一个文本文件中,这个文件被称作 Dockerfile ,通过执行 docker build
Docker Registry
Docker registry 是存储 docker image 的仓库.运行docker push、docker pull、docker search时,实际上是通过 docker daemon 与 docker registry 通信
Docker Container
Docker 容器就是 Docker 镜像的运行实例,是真正运行项目程序、消耗系统资源、提供服务的地方。 Docker Container 提供了系统硬件环境,我们可以使用 Docker Images 这些制作好的系统盘,再加上我们所编写好的项目代码, run 一下就可以提供服务啦。