Site Overlay

Docker的安装与使用

都是学习机逼出来的

由于使用的学习机不明原因,导致学习中使用的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包

发表回复

您的电子邮箱地址不会被公开。

A beliving heart is your magic My heart
欢迎来到Diuut的个人博客,这里是我的一些零零碎碎的知识汇总,希望有能帮到你的内容。 | 蜀ICP备2021011635号-1 | Copyright © 2024 Diuut. All Rights Reserved.