初识docker 拥有docker
1.docker的介绍
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
以上内容摘自百度百科,所以刚开始接触的时候就算读了也是一头雾水。换个简单易懂的说法,docker其实就是一个linux版本的虚拟机,我们可以将应用发布到docker容器中,推送到仓库,并在任何机器下载docker容器,保证环境一致性,至于其他的概念,我想还是对docker有了初步接触之后,再去体会吧。
1.1docker的几个关键概念
docker是由 镜像(Image)、容器(Container)、仓库(Repository) 三大核心组件构成的。从下图中不难看出,docker客户端在docker仓库中下载镜像,并通过镜像创建容器。
镜像(Image)
镜像可分为公有和私有,在Docker Hub上有很多厂家提供的公有镜像,可以直接下载使用;私有镜像只允许有权限的用户下载,保证了镜像的私有性。
容器(Container)
容器是根据镜像创建的本地虚拟机,我们可以在本地容器内进行应用部署、软件安装等操作,并最终将此容器生成为镜像。
仓库(Repository)
镜像仓库是镜像的远程存储站点,docker默认的仓库在国外,所以国内的很多大牛企业提供了国内镜像,而我们要实现的很多操作需要频繁提交和部署,这需要我们部署私有仓库,这个在之后的文章中会给大家讲解私服的部署过程。
2.docker的安装
首先我们安装一个ubuntu系统的虚拟机,版本我选的是18.04,VMware我想大家都不陌生,如果没接触过,请自行脑补。
2.1获得root权限
如果是云服务器(比如阿里云、华为云),你可以直接获得root权限,如果是虚拟机,那需要我们先获得root权限。
执行命令 ,设置root的密码。
sudo passwd root
执行命令,切换到root角色。
su root
2.2编辑源文件
编辑/etc/apt/sources.list文件,加入阿里云的镜像地址。
执行命令,打开vi编译器。
vi /etc/apt/sources.list
加入一下内容:
deb http://mirrors.aliyun.com/ubuntu/ trusty main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main multiverse restricted universe
保存并退出,如图:
2.3安装必要的系统工具
apt-get update
apt-get -y install apt-transport-https ca-certificates curl software-properties-common
2.4 安装docker
- Ubuntu版本安装步骤
step 1: 安装GPG证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
step 2: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
step 3: 更新并安装Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce
- CentOS版本安装步骤
//安装vim组件
yum -y install vim*
//安装必要组件
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
//添加源地址
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
//更新元信息
sudo yum makecache fast
//安装docker
sudo yum install docker-ce
安装完成后执行docker info命令, 如果返回如下图,则证明安装成功了。
3.实战调优
3.1 文件路径
如上图,执行命令 docker info后 我们可以关注【Server Version】节点和【Docker Root Dir】节点,其中【Server Version】指明了docker的版本信息,而【Docker Root Dir】指明了docker的本地文件地址。
docker的本地文件地址,默认指向系统根目录,随着镜像文件、容器文件、日志的增加,会将磁盘目录写满,影响正常服务器的使用,接下来,我们就对docker的本地文件路径就行修改。
step 1: 创建本地目录
在合适的地方创建一个本地目录,这里说的合适其实就是找一个磁盘空间够大的目录,或者通过目录挂载一块磁盘(具体可以本系列的《持续化部署教程(二) 配置Ubuntu服务器》章节)。作为演示,我们在根目录创建一个docker文件夹。
mkdir docker
ls
step 2: 修改docker配置文件
执行命令,打开docker配置文件,如果是初次安装,则是新建一个文件。
vi /etc/docker/daemon.json
粘入如下内容,并保存。
{
"graph": "/docker"
}
step 3: 验证结果
执行如下命令,重启docker服务,使我们刚才的服务生效。
systemctl stop docker
systemctl start docker
执行命令,验证修改是否生效。
docker info
3.2 提高下载速度
docker官方网站是在境外,所以我们下载、上传镜像的速度简直是龟速,国内不少的良心企业帮我们提供了国内镜像服务,这就大大提高了我们的效率,下面我们就介绍一下如何加入国内镜像地址到本地配置文件的方法。
step 1: 创建阿里云加速器
首先,请自行申请一个阿里云的帐号,登陆成功访问如下地址。
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
就会得到一个加速器地址,复制出来备用。
step 2: 修改本地配置文件
同我们上一次的操作一样,打开本地配置文件。
vi /etc/docker/daemon.json
增加我们刚才赋值出来的加密地址,得到如下结果:
{
"data-root":"/nas/docker",
"registry-mirrors": ["https://***.mirror.aliyuncs.com"]
}
registry-mirrors节点就是推荐的镜像地址。
step 3: 验证结果
执行如下命令,重启docker服务,使我们刚才的服务生效。
systemctl stop docker
systemctl start docker
或者
systemctl restart docker.service
我们创建一个镜像,稍后章节我们介绍具体参数。
docker run --name ubuntu18_base -it ubuntu:18.10 /bin/bash
如图,通过黄色框内的命令我们可以快速的构建一个容器,并且登录到此容器中(通过红色框可以很明显的区分出来),这个是访问境外服务器无法想象的速度。
小结
本章我们介绍的docker的核心组件,介绍了如何快速安装,从实战出发调整参数等内容。构建一个docker镜像并不难,通过简单的调试就可以构建一个可用的实战环境。希望我的分享能给大家带来帮助,祝大家学习愉快。