Docker
Docker是时下热门的容器技术,Docker是os层虚拟化架构(虚拟出来的操作系统和宿主机操作系统共享一个内核)的一种体现产品。
容器化技术(我们可以把tomcat,redis,nginx……安装docker容器中),可以方便对软件的环境(开发环境/测试环境/生产环境……)进行搬运,可以极大的减少部署成本。且各个容器之间是相互隔离的,减少软件之间的影响。
Docker架构
Docker 包括三个基本概念:
镜像(Image):一个只读模板。
容器(Container):通过镜像创建容器。容器可以被创建、启动、停止、删除、暂停等。
仓库(Repository):仓库用来保存镜像。
容器与镜像的关系类似于面向对象编程中的对象与类。
在安装好并启动了Docker之后,我们可以使用在命令行中使用Docker命令操作Docker,比如我们使用如下命令打印Docker的版本信息。
docker verion
其结果如下:
从上面的图中,我们看到打出了两个部分的信息:Client和Server。
这是因为Docker跟大部分服务端软件一样(如MySQL),都是使用C/S的架构模型,也就是通过客户端调用服务器,只是我们现在刚好服务端和客户端都在同一台机器上而已。
因此,我们可以使用下面的图来表示Docker的架构,DOCKER_HOST是Docker Server,而Clinet便是我们在命令中使用Docker命令。
Docker Engine
Docker Server为客户端提供了容器、镜像、数据卷、网络管理等功能,其实,这些功能都是由Docker Engine来实现的。
- dockerd:服务器守护进程。
- Client docker Cli:命令行接口
- REST API:除了cli命令行接口,也可以通过REST API调用Docker
下面是Docker Engine的示例图:
Docker安装
1.查看是否已安装docker,如安装,卸载旧版本极其相关依赖
1 yum list installed | grep dockeryum remove docker \<br> docker-client \<br>docker-client-latest \<br>docker-common \<br> docker-latest\<br>docker-latest-logrotate \<br>docker-logrotate \<br>docker-engine
2.安装docker
1 yum install -y docker
3.启动及查看
1 systemctl start/status/stop docker 2 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.
- 在该配置文件中加入(没有该文件的话,就建一个:
1 { 2 "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] 3 }
镜像(Image)相关操作
Docker本质上是一个运行在Linux操作系统上的应用,而Linux操作系统分为内核和用户空间,无论是CentOS还是Ubuntu,都是在启动内核之后,通过挂载Root文件系统来提供用户空间的,而Docker镜像就是一个Root文件系统。
Docker镜像是一个特殊的文件系统,提供容器运行时所需的程序、库、资源、配置等文件,另外还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。
镜像是一个静态的概念,不包含任何动态数据,其内容在构建之后也不会被改变。
下面的命令是一些对镜像的基本操作,如下:
1.查看镜像列表
1 # 列出所有镜像 2 docker image ls 3 #简洁版本 4 docker images
2.拉取镜像
我们可以使用命令从一些公用仓库中拉取镜像到本地,下面就列举一些常用的公用仓库拉取镜像的方式!。
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
拉取一个镜像,需要指定Docker Registry的地址和端口号,默认是Docker Hub,还需要指定仓库名和标签,仓库名和标签唯一确定一个镜像,而标签是可能省略,如果省略,则默认使用latest作为标签名,另外,仓库名则由作者名和软件名组成。可以从https://hub.docker.com上查找相关镜像。
3.删除镜像
当本地有些镜像我们不需要时,那我们也可以删除该镜像,以节省存储空间,不过要注意,如果有使用该镜像创建的容器未删除,则不允许删除镜像。
1 # image_name表示镜像名,image_id表示镜像id 2 dockere image rm image_name/image_id 3 4 #删除镜像的快捷命令: 5 docker rmi image_name/image_id
4.导入导出镜像
可将已有镜像导出,以后可使用自己的镜像,不用到远程(特别是国外)去拉取
1 #导出镜像 2 docker save image_name:tag/image_id > path 3 #导入镜像 4 docker load < path 5 #path代表保存或加载的路径
容器(Container)相关操作
Docker的镜像是用于生成容器的模板,镜像分层的,镜像与容器的关系,就是面向对象编程中类与对象的关系,我们定好每一个类,然后使用类创建对象,对应到Docker的使用上,则是构建好每一个镜像,然后使用镜像创建我们需要的容器。
1.启动和停止容器
1.以交互方式启动容器: docker run -it --name 容器名称 镜像 /bin bash.
1 docker run -it --name xx xx /bin bash
2.以守护进程方式启动容器: docker run -d --name 容器名称 镜像
1 docker start container_id
2.停止正在运行的容器
1 # container_id表示容器的id 2 docker stop container_id
3.查看所有容器
1 # 查看所有容器 2 docker container ls 3 # 查看所有容器 4 docker ps
4.删除容器
不允许删除正在运行的容器,因此如果要删除的话,就必须先停止容器。
1 # container_id表示容器id,通过docker ps可以看到容器id 2 $ docker rm container_id 3 4 # 删除所有容器 5 docker rm $(docker ps -q) 6 # 删除所有退出的容器 7 docker container prune
5.进入容器
1 # 进入容器,container_id表示容器的id,command表示Linux命令,如/bin/bash 2 docker exec -it container_id command
Docker应用
1.拉取tomcat镜像,启动容器,映射端口
1 docker pull tomcat<br>docker images 2 docker run -d --name docker-tomcat -p 9090:8080 tomcat:9
2.部署application
1 docker exec -it docker-tomcat /bin/bash 2 docker cp xx.war docker-tomcat:/webapps
3.启动容器,访问application
标签:容器,image,基础,介绍,id,镜像,Docker,docker From: https://www.cnblogs.com/xiaoli-qz/p/17580023.html