随着微服务架构的大势所趋,docker成为微服务中的一项必不可少的技能,说是技能倒不如说是一项基础,最近学了下springcloud系列的东西,本篇文章主要介绍下docker的入门级使用方法。
一、为什么要用docker
软件开发中从开发到上线,一般都要经过开发、测试、上线。而每个人的计算机环境配置可能都不相同,谁能保证自已开发的软件,能在每一台机器上跑起来?每台机器必须保证:操作系统的设置,各种依赖和组件的安装都正确,软件才能运行起来。在windows上进行开发,到Linux上进行部署时这些环境又得重装,这样很就麻烦。而且系统如果需要集群,那每一台机器都得重新配置环境。如果有一种技术可以像java一样就好了,随时随地跨平台,这个时候docker就可以闪亮登场了,可以用它将运行程序的相关配置打包(打包成一个镜像),然后直接搬移到新的机器上运行,这样不就实现了随时随地跨平台的需求了。
二、简单说下docker是what?
简单的将,docker就是一种虚拟技术,有人可能会问什么是虚拟技术,用过vmware吧,这就是一种技术,通过软件的形式实现硬件带来的功能,docker也是这样的一种技术,我们可以把常用的软件部署到这个虚拟软件上运行,最终呢再把这种虚拟软件放到实体机运行,但是docker和vmware最大的区别是:docker是操作系统级别的虚拟,而vmware是操作系统级别的虚拟。有点也不言而喻了,那就是轻巧,占用资源少等等,各个方面体现中了微服务的特点。
三、docker中的四大概念
要想使用docker,不得不介绍docker的三个重要的概念:宿主机、镜像和容器。刚开始听到这三个名词的时候大家可能会慌了,什么玩意,怎么感觉没什么用,当你了解了一下这三个概念,在进行实操一遍后就会感慨:哦,docker不就是这玩转三玩意嚒。
(1)宿主机
上面已经说过了,docker就是一种操作系统级别的虚拟技术,他就是一个容器,而每个容易必须有它存存活的宿主,正如寄生虫的宿主一样,说白了宿主机就是一个存放了docker容器的物理机,当然可以使物理机,也可以是实体机。
(2)镜像
镜像(Image)是Docker中的一个模板。通过 Docker镜像 来创建 Docker容器,一个镜像可以创建出多个容器。
镜像是由一系列指令一步一步构建出来。如果和java作比较的话,你可以把镜像当做java里面的类,容器可以看成是java类的对象。
(3)容器
容器(Container)是基于镜像创建的运行实例,一个容器中可以运行一个或多个应用程序(jdk+开发的java应用程序)。Docker 可以帮助你构建和部署容器,你只需要把自己的应用程序或者服务打包放进容器即可。我们可以认为,镜像是Docker生命周期中的构建或者打包阶段,而容器则是启动或者执行阶段。
(4)仓库
仓库(Repository)是集中存放镜像文件的场所。
仓库分为公有仓库(Public)和私有仓库(Private)两种。
Docker公司运营的公共仓库叫做 Docker Hub,存放了数量庞大的镜像供用户下载。用户可以在Docker Hub注册账号,分享并保存自己的镜像,在Docker Hub下载镜像超级慢。国内的公有仓库包括阿里云 、网易云 等,可以提供用户更稳定快速的访问。当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。
四、docker容器的安装与启动
docker的官方文档:https://yeasy.gitbooks.io/docker_practice/content/install/centos.html
(1)安装之前可以先卸载下旧的的版本
yum remove docker docker-common docker-selinux docker-engine
(2)安装所需的软件包
yum-utils 提供了 yum-config-manager 实用程序,并且 devicemapper 存储驱动需要device-mapperpersistent-data 和 lvm2 。
yum install -y yum-utils device-mapper-persistent-data lvm2
(3)设置镜像仓库(在这里设置为阿里云的)
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(4)安装Docker CE
【说明】
Docker社区版(CE):为了开发人员或小团队创建基于容器的应用,与团队成员分享和自动化的开发管道。docker-ce提供了简单的安装和快速的安装,以便可以立即开始开发。docker-ce集成和优化,基础设施。(免费)Docker企业版(EE):专为企业的发展和IT团队建立谁。docker-ee为企业提供最安全的容器平台,以应用为中心的平台。(付费)
yum install docker-ce
过程中会输入y,很简单
(5)如果安装失败,卸载重新安装
卸载docker软件包:
yum remove docker-ce
删除容器镜像
rm -rf /var/lib/docker
(6)启动停止docker
启动docker: systemctl start docker
停止docker: systemctl stop docker
重启docker: systemctl restart docker
查看docker状态: systemctl status docker
开机自动启动docker: systemctl enable docker
五、安装docker-compose
使用pip安装docker-compose,因为pip可以为你自动对应版本问题
安装pip
yum -y install epel-release
yum -y install python-pip
pip --version
更新pip
pip install --upgrade pip
安装docker-compose
pip install docker-compose
如果报错:ERROR: Cannot uninstall 'requests'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall
则运行下面:
pip install --ignore-installed requests
如果报错:ERROR: cryptography 2.8 has requirement cffi!=1.11.3,>=1.8, but you'll have cffi 1.6.0 which is incompatible
运行:
yum install -y openldap-devel
查看版本
docker-compose version
或者通过以下方式安装
Github源
sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Daocloud镜像
curl -L https://get.daocloud.io/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
卸载
sudo rm /usr/local/bin/docker-compose
docker-compose使用
version: '3'
services:
# ---------------------------
# consul集群,3个节点
# ---------------------------
consul:
image: consul:1.2.0
container_name: consul
command: consul agent -server -client 0.0.0.0 -ui -bootstrap-expect=3 -data-dir=/consul/data -retry-join=consul2 -retry-join=consul3 -datacenter=blr
restart: always
ports:
- "8300:8300"
- "8400:8400"
- "8500:8500"
- "8600:8600/udp"
networks:
- net
consul2:
image: consul:1.2.0
container_name: consul-2
expose:
- "8500"
- "8600"
command: consul agent -server -data-dir=/consul/data -retry-join=consul -retry-join=consul3 -datacenter=blr
links:
- consul
networks:
- net
consul3:
image: consul:1.2.0
container_name: consul-3
expose:
- "8500"
- "8600"
command: consul agent -server -data-dir=/consul/data -retry-join=consul -retry-join=consul2 -datacenter=blr
links:
- consul
- consul2
networks:
- net
networks:
net:
driver: bridge
执行命令
docker-compose -f docker-compose-consul.yml up -d
六、配置国内镜像加速器
在拉去镜像的时候会发现非常的慢,慢到想从入门到放弃,所以我们就配置下国内的镜像吧,这边用的是阿里云的镜像加速器。
(1)登录阿里云打开控制台
可以使支付宝直接授权登录
(2)进入控制台找到产品与服务
(3)找到容器镜像服务
(6)进入后找到【镜像中心】的镜像加速器
第一次用的用户可能需要进行注册,按提示来就行。
(7)复制json串在宿主机中执行命令
vim /etc/1 docker/daemon.json
{
"registry-mirrors": ["https://xxx.mirror.aliyuncs.com"]
}
# 重载此配置文件
systemctl daemon-reload
# 重启 docker
systemctl restart docker
以上就配置好了镜像加速器,就可以拉去镜像了,速度是杠杆的
到此本片文章就结束了,下一篇主要介绍具体操作镜像和容器