都是学习机逼出来的
由于使用的学习机不明原因,导致学习中使用的elasitcSearch故障频出莫名崩溃,且无法修复,故此,选择使用linux下的elasitcSearch+kibana进行学习,然后又由于linux版本下修改配置修改环境各种妖魔鬼怪,导致一路上艰难险阻,在网上又发现了一个新技术,docker,自己的理解简而言之就是一个linux环境下的软件虚拟机,可以直接pull仓库中的镜像,对于想要使用的软件服务,pull镜像以后就可以在容器中进行直接运行,不仅快,而且无需过多配置,对于复杂环境而言有着得天独厚的优势。
Docker
中包括三个基本的概念:
Image
(镜像)Container
(容器)Repository
(仓库)
Image (镜像)
那么镜像到底是什么呢?
Docker
镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
镜像(Image)
就是一堆只读层(read-only layer)
的统一视角,也许这个定义有些难以理解,下面的这张图能够帮助读者理解镜像的定义。
Container (容器)
容器 (container)
的定义和镜像 (image)
几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。
由于容器的定义并没有提及是否要运行容器,所以实际上,容器 = 镜像 + 读写层。
Repository (仓库)
Docker
仓库是集中存放镜像文件的场所。镜像构建完成后,可以很容易的在当前宿主上运行,但是, 如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry
(仓库注册服务器)就是这样的服务。有时候会把仓库 (Repository)
和仓库注册服务器 (Registry)
混为一谈,并不严格区分。Docker
仓库的概念跟 Git
类似,注册服务器可以理解为 GitHub
这样的托管服务。实际上,一个 Docker Registry
中可以包含多个仓库 (Repository)
,每个仓库可以包含多个标签 (Tag)
,每个标签对应着一个镜像。所以说,镜像仓库是 Docker
用来集中存放镜像文件的地方类似于我们之前常用的代码仓库。
通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本 。我们可以通过<仓库名>:<标签>
的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest
作为默认标签.。
仓库又可以分为两种形式:
public
(公有仓库)private
(私有仓库)
Docker Registry
公有仓库是开放给用户使用、允许用户管理镜像的 Registry
服务。一般这类公开服务允许用户免费上传、下载公开的镜像,并可能提供收费服务供用户管理私有镜像。
除了使用公开服务外,用户还可以在本地搭建私有 Docker Registry
。Docker
官方提供了 Docker Registry
镜像,可以直接使用做为私有 Registry
服务。当用户创建了自己的镜像之后就可以使用 push
命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull
下来就可以了。
以上是docker的三个主要元素的基本概念。
安装环境
1 核 2 GB 1 Mbps 腾讯云
CentOS 7.6
安装步骤
安装依赖包
sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2
使用官方一键脚本安装Docker
curl -fsSL get.docker.com -o get-docker.sh sh get-docker.sh
安装完成后进行版本检测
docker version or docker info
常用命令
systemctl start docker //启动 sudo systemctl daemon-reload //守护进程重启 systemctl restart docker //重启docker服务 sudo service docker restart //重启docker服务 service docker stop //关闭docker systemctl stop docker //关闭docker docker ps -a //查看所有容器 docker rm 容器ID或容器名 //移除容器(需停止) docker rmi 镜像ID或镜像名 //删除指定镜像,如果删除不成功可以删除NAME+版本号 docker stop 容器ID或容器名 //正常关闭容器,如不行,则强制关闭 docker kill 容器ID或容器名 //直接关闭,强制关闭 docker stop $(docker ps -a -q) //停止所有容器 docker start 容器ID或容器名 //启动停止的容器 docker restart 容器ID或容器名 //不管容器是否启动,直接重启容器 docker rm $(docker ps -a -q) //删除所有停止运行的容器 docker search 镜像名称 //官方仓库中进行搜索镜像 docker pull 镜像名称或镜像地址+:版本 //下载镜像至本地 docker exec -it 容器NAME /bin/bash //进入容器内部 docker cp 需要拷贝的文件或目录 文件目录:文件名称 //文件拷贝进容器 docker cp 文件目录:文件名称 需要拷贝的文件或目录 //从容器中拷贝出文件 docker run -di --NAME -v /usr/local/myhtml:/usrlocal/myhtml 镜像ID或镜像名 //目录挂载 docker inspect 容器ID或容器名 //查看容器信息 docker inspect --format='{{.NetworkSettings.IDAddress}}' 容器ID或容器名 //提取所需要的容器信息 docker commit 容器ID或容器名 镜像名 //将保存为镜像 docker save -o tar包名 镜像名或镜像ID //将镜像保存为tar包