Docker的应用场景:
1. Web 应用的自动化打包和发布。
2. 自动化测试和持续集成、发布。
3. 在服务型环境中部署和调整数据库或其他的后台应用
4. 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境
Docker 的优点:
1. 简化程序
2. 避免选择恐惧症
3. 节省开支
Docker的组成, 包括三个基本概念:
1. 仓库(Repository)
2. 镜像(Image)
3. 容器(Container)
具体详情请访问:https://www.runoob.com/docker/docker-tutorial.html
或者查看官方文档:https://docs.docker.com/install/linux/docker-ce/centos
Docker 的核心组件包括:
- Docker Client
- Docker Daemon
- Docker Image
- Docker Registry
- Docker Containe
Docker 采用的是 Client/Server 架构。客户端向服务器发送请求,服务器负责构建、运行和分发容器
Docker Client
Docker Client ,也称 Docker 客户端。它其实就是 Docker 提供命令行界面(CLI)工具,是许多 Docker 用户与 Docker 进行交>>互.的主要方式。
客户端可以构建,运行和停止应用程序,还可以远程与 Docker_Host 进行交互。
最常用的 Docker 客户端就是 Docker 命令,我们可以通过 Docker 命令很方便地在 Host 上构建和运行 Docker 容器。
Docker Daemon
Docker Daemon 是服务器组件,以 Linux 后台服务的方式运行,是 Docker 最核心的后台进程,我们也把它称为守护进程。
它负责响应来自 Docker Client 的请求,然后将这些请求翻译成系统调用完成容器管理操作。
该进程会在后台启动一个 API Server ,负责接收由 Docker Client 发送的请求,接收到的请求将通过 Docker Daemon 内部的>>一个路由分发调度,由具体的函数来执行请求
我们大致可以将其分为以下三部分:
- Docker Serve
- Engine
- Job
Docker Daemon 运行在 Docker Host 上,负责创建、运行、监控容器,构建、存储镜像
启动 Docker Daemon 时,一般可以使用以下命令来完成:
代码语言:javascript复制[root@localhost]# docker --daemon = truedocker –d
代码语言:javascript复制[root@localhost]# docker –d = true
Docker Image
Docker 镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运>行时准备的一些配置参数(如匿名卷、环境变量、用户等)。
镜像不包含任何动态数据,其内容在构建之后也不会被改变。我们可将 Docker 镜像看成只读模板,通过它可以创建 Docker 容>器。
镜像有多种生成方法:
- 从无到有开始创建镜像
- 下载并使用别人创建好的现成的镜像
- 在现有镜像上创建新的镜像
Docker Registry
运行 docker push、docker pull、docker search 时,实际上是通过 Docker Daemon 与 Docker Registry 通信。
Docker Registry 是存储 Docker Image 的仓库,它在 Docker 生态环境中的位置如下图所示:
Docker Container
Docker 容器就是 Docker 镜像的运行实例,是真正运行项目程序、消耗系统资源、提供服务的地方。
Docker Container 提供了系统硬件环境,我们可以使用 Docker Images 这些制作好的系统盘,再加上我们所编写好的项目代>码,Run 一下就可以提供服务
代码语言:javascript复制如:[root@localhost]# docker run fce289e99eb9
说明:
由于 Docker-CE 只支持 64 位版本的 CentOS 7 ,并且要求内核版本不低于 3.10
Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),用社区版就可以了
1,root账户登录,查看内核版本如下
代码语言:javascript复制[root@localhost ~]# uname -a
代码语言:javascript复制Linux vultr.guest 3.10.0-957.1.3.el7.x86_64 #1 SMP Thu Nov 29 14:49:43 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# uname -r
3.10.0-957.1.3.el7.x86_64
2,把yum包更新到最新
代码语言:javascript复制[root@localhost ~]# yum update
fastestmirror, langpacks
Loading mirror speeds from cached hostfile
base: centos.ustc.edu.cn
extras: mirrors.aliyun.com
updates: centos.ustc.edu.cn
*********.
注意:如果是生产环境,需要考虑yum 更新后的影响;系统比较新的话,可以不更新yum ,直接进入下一步操作
3,安装需要的软件驱动(yum-utils:提供yum-config-manager功能、device-mapper-persistent-data和lvm2是devicemapper的依赖库)
代码语言:javascript复制 [root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
fastestmirror, langpacks
Loading mirror speeds from cached hostfile
base: centos.ustc.edu.cn
extras: mirrors.aliyun.com
updates: centos.ustc.edu.cn
********.
4,设置docker下载源
1)官方的:
代码语言:javascript复制[root@localhost ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
2)阿里云的:
代码语言:javascript复制[root@localhost ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
5,查看所有仓库中所有docker版本,并选择特定版本安装
代码语言:javascript复制[root@localhost ~]# yum list docker-ce --showduplicates | sort -r
Loading mirror speeds from cached hostfile
Loaded plugins: fastestmirro
docker-ce.x86_64 3:19.03.2-3.el7 docker-ce-stable
docker-ce.x86_64 3:19.03.1-3.el7 docker-ce-stable
docker-ce.x86_64 3:19.03.0-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.9-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.8-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.7-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.6-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.5-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.4-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.3-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.2-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.3.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.2.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.03.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 18.03.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.12.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.12.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.09.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.09.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.06.2.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.06.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.06.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.3.ce-1.el7 docker-ce-stable
docker-ce.x86_64 17.03.2.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
Available Packages
6,安装Docker,命令:
(1)yum install docker-ce-<VERSION_STRING>
(2)yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
注意:如果使用第一种方式,不指定cli,就会默认最新版本,与指定的Server版本不相同
本人推选第二种安装方式
代码语言:javascript复制[root@localhost ~]# yum install docker-ce-18.09.9 docker-ce-cli-18.09.9 containerd.io
Loaded plugins: fastestmirro Loading mirror speeds from cached hostfile Resolving Dependencies Running transaction check Package containerd.io.x86_64 0:1.2.6-3.3.el7 will be installed Processing Dependency: container-selinux >= 2:2.74 for package: containerd.io-1.2.6-3.3.el7.x86_64 Package docker-ce.x86_64 3:18.09.9-3.el7 will be installed Processing Dependency: libcgroup for package: 3:docker-ce-18.09.9-3.el7.x86_64 Package docker-ce-cli.x86_64 1:18.09.9-3.el7 will be installed Running transaction check Package container-selinux.noarch 2:2.107-3.el7 will be installed Processing Dependency: policycoreutils-python for package: 2:container-selinux-2.107-3.el7.noarch Package libcgroup.x86_64 0:0.41-21.el7 will be installed Running transaction check Package policycoreutils-python.x86_64 0:2.5-33.el7 will be installed
7,启动Docker,命令:systemctl start docke
代码语言:javascript复制[root@localhost ~]# systemctl start docke
8,加入开机启动
代码语言:javascript复制[root@localhost ~]# systemctl enable docke
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to
/usr/lib/systemd/system/docker.service.
9,验证安装是否成功(有client和service两部分表示docker安装启动成功了)
代码语言:javascript复制[root@localhost ~]# docker version
Client:
Version: 18.09.9
API version: 1.39
Go version: go1.11.13
Git commit: 039a7df9ba
Built: Wed Sep 4 16:51:21 2019
OS/Arch: linux/amd64
Experimental: false
*
Server: Docker Engine - Community
Engine:
Version: 18.09.9
API version: 1.39 (minimum version 1.12)
Go version: go1.11.13
Git commit: 039a7df
Built: Wed Sep 4 16:22:32 2019
OS/Arch: linux/amd64
Experimental: false
10,常用Docker命令
查看当前正在运行的容器:
代码语言:javascript复制[root@localhost ~]# docker ps
查看所有容器的状态:
代码语言:javascript复制[root@localhost ~]# docker ps -a
查看当前docker版本:
代码语言:javascript复制[root@localhost ~]# docker version
启动/停止某个容器 (id或者name):
代码语言:javascript复制[root@localhost ~]# docker start/stop id/name
进入某个(id)容器(使用exit退出后容器也跟着停止运行):
代码语言:javascript复制[root@localhost ~]# docker attach id
启动/停止某个容器 (id或者name):
代码语言:javascript复制[root@localhost ~]# docker start/stop id/name
启动一个伪终端以交互式的方式进入某个(id)容器(使用exit退出后容器不停止运行):
代码语言:javascript复制[root@localhost ~]# docker exec -ti id
查看本地镜像
代码语言:javascript复制[root@localhost ~]# docker images
删除某个容器(id/name)
代码语言:javascript复制[root@localhost ~]# docker rm id/name
删除某个镜像(id/name)
代码语言:javascript复制[root@localhost ~]# docker rmi id/name
通过当前目录下的Dockerfile创建一个名为soar/centos:7.5的镜像
代码语言:javascript复制[root@localhost ~]# docker build -t soar/centos:7.5
以镜像soar/centos:7.5创建名为test的容器,并以后台模式运行,
并做端口映射到宿主机2222端口
P参数重启容器宿主机端口会发生改变
代码语言:javascript复制[root@localhost ~]# docker run -d -p 2222:22 --name test soar/centos:7.5
更多Docker命令请访问:http://www.docker.org.cn/dockerppt/106.html
Centos安装说明请访问:https://docs.docker.com/install/linux/docker-ce/centos/