Docker

  Docker是时下热门的容器技术,Docker是os层虚拟化架构(虚拟出来的操作系统和宿主机操作系统共享一个内核)的一种体现产品。

     容器化技术(我们可以把tomcat,redis,nginx……安装docker容器中),可以方便对软件的环境(开发环境/测试环境/生产环境……)进行搬运,可以极大的减少部署成本。且各个容器之间是相互隔离的,减少软件之间的影响。

Docker 架构

Docker 包括三个基本概念:

  镜像(Image):一个只读模板。

  容器(Container:通过镜像创建容器。容器可以被创建、启动、停止、删除、暂停等。

  仓库(Repository:仓库用来保存镜像。

容器与镜像的关系类似于面向对象编程中的对象与类。

在安装好并启动了Docker之后,我们可以使用在命令行中使用Docker命令操作Docker,比如我们使用如下命令打印Docker的版本信息。

docker verion

其结果如下:

10.png

  从上面的图中,我们看到打出了两个部分的信息:Client和Server。

  这是因为Docker跟大部分服务端软件一样(如MySQL),都是使用C/S的架构模型,也就是通过客户端调用服务器,只是我们现在刚好服务端和客户端都在同一台机器上而已。

  因此,我们可以使用下面的图来表示Docker的架构,DOCKER_HOST是Docker Server,而Clinet便是我们在命令中使用Docker命令。

11.png

Docker Engine

Docker Server为客户端提供了容器、镜像、数据卷、网络管理等功能,其实,这些功能都是由Docker Engine来实现的。

  1. dockerd:服务器守护进程。
  2. Client docker Cli:命令行接口
  3. REST API:除了cli命令行接口,也可以通过REST API调用Docker


下面是Docker Engine的示例图:

12.png

Docker安装

 1.查看是否已安装docker,如安装,卸载旧版本极其相关依赖

yum list installed | grep docker
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2.安装docker

yum install -y docker

3.启动及查看

systemctl start/status/stop docker
docker version

注册中心Registery

         类似于maven仓库,集中存放镜像文件的场所,一个Registry中会有多个Repository

         仓库Repository是对于其中的镜像进行分类管理,一个Repository中会有多个不同tag的Image

         Registry分为公有(public)和私有(private)两种形式

         最大的公有Registry是Docker Hub,存放了数量庞大的镜像供用户下载使用https://hub.docker.com

         国内的公开Registry包括USTC、网易云、DaoCloud、AliCloud等

  配置国内镜像(USTC)

  • 在宿主机器编辑文件: vi /etc/docker/daemon.json.
  • 在该配置文件中加入(没有该文件的话,就建一个:
{
    "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

镜像(Image)相关操作

  Docker本质上是一个运行在Linux操作系统上的应用,而Linux操作系统分为内核和用户空间,无论是CentOS还是Ubuntu,都是在启动内核之后,通过挂载Root文件系统来提供用户空间的,而Docker镜像就是一个Root文件系统。

  Docker镜像是一个特殊的文件系统,提供容器运行时所需的程序、库、资源、配置等文件,另外还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。

  镜像是一个静态的概念,不包含任何动态数据,其内容在构建之后也不会被改变。

下面的命令是一些对镜像的基本操作,如下:

1.查看镜像列表

# 列出所有镜像
docker image ls
#简洁版本
docker images

2.拉取镜像

  我们可以使用命令从一些公用仓库中拉取镜像到本地,下面就列举一些常用的公用仓库拉取镜像的方式!。

  docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

  拉取一个镜像,需要指定Docker Registry的地址和端口号,默认是Docker Hub,还需要指定仓库名和标签,仓库名和标签唯一确定一个镜像,而标签是可能省略,如果省略,则默认使用latest作为标签名,另外,仓库名则由作者名和软件名组成。可以从https://hub.docker.com上查找相关镜像。

3.删除镜像

当本地有些镜像我们不需要时,那我们也可以删除该镜像,以节省存储空间,不过要注意,如果有使用该镜像创建的容器未删除,则不允许删除镜像。

# image_name表示镜像名,image_id表示镜像id
dockere image rm image_name/image_id

#删除镜像的快捷命令:
docker rmi image_name/image_id

 4.导入导出镜像

  可将已有镜像导出,以后可使用自己的镜像,不用到远程(特别是国外)去拉取

#导出镜像
docker save image_name:tag/image_id > path
#导入镜像
docker load < path
#path代表保存或加载的路径

容器(Container)相关操作

  Docker的镜像是用于生成容器的模板,镜像分层的,镜像与容器的关系,就是面向对象编程中类与对象的关系,我们定好每一个类,然后使用类创建对象,对应到Docker的使用上,则是构建好每一个镜像,然后使用镜像创建我们需要的容器。

1.启动和停止容器

1.以交互方式启动容器: docker run -it --name 容器名称 镜像 /bin bash.

docker run -it --name xx xx /bin bash

2.以守护进程方式启动容器: docker run -d --name 容器名称 镜像

docker start container_id

2.停止正在运行的容器

# container_id表示容器的id
docker stop container_id

3.查看所有容器

# 查看所有容器
docker container ls
# 查看所有容器
docker ps

4.删除容器

  不允许删除正在运行的容器,因此如果要删除的话,就必须先停止容器。

# container_id表示容器id,通过docker ps可以看到容器id
$ docker rm container_id

# 删除所有容器
docker rm $(docker ps -q)
# 删除所有退出的容器
docker container prune

5.进入容器

# 进入容器,container_id表示容器的id,command表示Linux命令,如/bin/bash
docker exec -it container_id command

Docker应用

    1.拉取tomcat镜像,启动容器,映射端口

docker pull tomcat
docker images docker run -d --name docker-tomcat -p 9090:8080 tomcat:9

  2.部署application

docker exec -it docker-tomcat /bin/bash
docker cp xx.war docker-tomcat:/webapps

  3.启动容器,访问application

Docker网络管理

Docker swarm

posted @ 2020-04-24 15:13  Tiger-Adan  阅读(442)  评论(0编辑  收藏  举报