- Docker简介
官网:https://docs.docker.com/ Docker与虚拟机的差异:https://www.cnblogs.com/kex1n/p/6933039.html
Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
- Docker 架构
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器;
Docker 包括三个基本概念:-
镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统;
-
容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等;
-
仓库(Repository):仓库可看着一个代码控制中心,用来保存镜像;
-
镜像:类似于虚拟机里的镜像,是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据;镜像实际上由一层一层的文件系统组成,可以基于Dockerfile 构建,Dockerfile 是一个描述文件,里面包含若干条命令,每条命令都会对基础文件系统创建新的层次结构;
-
容器:类似是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序;
-
镜像和容器关系:镜像类似 Java 类,容器类似 Java 类的实例(或类的对象),一个类可以产生无数个实例(或对象),一个镜像可以产生无数个容器;
扫描二维码关注公众号,回复: 9700333 查看本文章 -
镜像和仓库关系:仓库支持的操作类似 git,当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,在另外一台机器上使用这个镜像时,只需要从仓库上 pull 下来即可,也类似 Maven 私人或中央仓库;
Docker 镜像(Images) Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。
Docker 容器(Container) Docker 容器是独立运行的一个或一组应用,是镜像运行时的实体。 Docker 客户端(Client) Docker 客户端通过命令行或者其他工具使用 Docker SDK 与 Docker的守护进程通信。 Docker 主机(Host) 一个物理或虚拟的机器用于执行 Docker 守护进程和容器。 Docker 仓库(Registry) Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过<仓库名>:<标签>的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。 Docker Machine 是一个简化 Docker 安装的命令行工具,通过一个简单的命令行即可在对应平台安装 Docker,比如 VirtualBox、Digital Ocean、Microsoft Azure。
-
- CentOS7 安装 Docker
官网文档:https://docs.docker.com/install/linux/docker-ce/centos/
(1)、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker ;
uname -r
(2)、确保 yum 包更新到最新;
sudo yum update
(3)、如果安装过 Docker 旧版本,则卸载;
sudo yum remove docker docker-common docker-selinux docker-engine
(4)、安装必须的包,yum-util 提供 yum-config-manager功能,另外两个是devicemapper驱动依赖的;
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
(5)、设置仓库;
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo #如下载速度太慢则使用国内阿里云的仓库:sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(6)、更新 yum 缓存;
sudo yum makecache fast
(7)、查询 Docker 版本;
yum list docker-ce --showduplicates | sort -r
(8)、安装 Docker;
#由于该命令后没有带具体的版本号,因此默认的tag为lastest,所以不同时间去执行有可能版本会不一样,生产环境建议带上指定的版本号; sudo yum install docker-ce
(9)、启动并加入开机启动;
sudo systemctl start docker sudo systemctl enable docker #检查docker状态 systemctl status docker
(10)、验证安装是否成功(有client和service两部分表示docker安装启动都成功了);
#查看版本信息 docker version #查看docker安装信息 docker info
(11)、创建第一个容器,我们通过Docker Hub上官方提供的现成的 hello-world 镜像来创建一个容器;
docker run hello-world
注1:本地没有这个 hello-world 镜像,他会自动从 Docker Hub 仓库去下载该镜像,然后在创建容器并运行容器内的 helloworld 程序,这个过程都是自动化完成的,并且启动的这个容器其实就相当于是一个小型 linux 系统,但是启动的非常快,几秒钟就启动并运行了,这也正是之前谈到的和虚拟机相比的优势;
注2:若出现如下问题
Unable to find image 'hello-world:latest' locally docker: Error response from daemon: Get https://registry-1.docker.io/v2/library/hello-world/manifests/latest: Get https://auth.docker.io/token?scope=repository%3Alibrary%2Fhello-world%3Apull&service=registry.docker.io: dial tcp: lookup auth.docker.io: no such host.
解决:
#这是一个请求头超时异常,说白了就是你的docker请求不到外网无法去docker官网下载镜像!!! 记住报错的结尾提示的是 no such host 这个异常是你的dns域名没有解析的原因所以我们对症下药 通过命令去我们linux的dns配置 文件 vi /etc/resolv.conf #新增谷歌的dns域名解析地址: nameserver 8.8.4.4 #再配置一个默认解析地址(如果有请忽略) nameserver localdomain #保存后重启下 docker systemctl restart docker
(12)、查看本地的镜像;
docker images
Docker 快速入门和安装
猜你喜欢
转载自www.cnblogs.com/yimusidian/p/12450420.html
今日推荐
周排行