很多公司都在用Docker做自动打包和发布,打算用最近一周时间学习下,并将学习的过程和踩到的坑做一个记录。方便后面有疑问的时候可以直接查阅。
其中概念性的描述和操作步骤主要摘抄、参考w3cschool(https://www.w3cschool.cn/docker/docker-tutorial.html)
一、Docker简介
Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。
Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。
容器完全使用沙箱机制,互相之间不会有任何接口(类似iPhone的app),更重要的是容器性能开销极低。
Docker的应用场景
- Web应用的自动打包和发布
- 自动化测试和持续集成、发布
- 在服务型环境中部署和调整数据库或其他的后台应用
- 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境
Docker的优点
Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。
Docker架构
Docker包括三个基本概念:
- 镜像(Image): Docker镜像就相当于一个root文件系统。比如官方镜像ubuntu:16.04就包含了完整的一套Ubuntu16.04最小系统的root文件系统。
- 容器(Container): 镜像和容器的管子,就想面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行的实体。容器可以被创建、启动、停止、删除、暂停等,
- 仓库(Repository): 仓库可看作一个代码控制中心,用来保存镜像。
Docker使用客户端-服务器(C/S)架构模式,使用远程API来管理和创建Docker容器。
Docker容器通过Docker镜像来创建。
容器与镜像的关系类似于面对对象编程中的对象与类,可以把容器看作对象,镜像看作类。
二、Ubuntu16.04安装Docker
1.Docker要求Ubuntu系统的内核版本高于3.10
uname -r
通过上面的命令可以查看当前的内核版本
2.安装
(1)首先先切换到root账户
sudo su
(2)更新apt包索引
apt-get update
(3)允许apt通过https安装
apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
(4)添加GPG秘钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add – apt-key fingerprint 0EBFCD88
(5)设置稳定版仓库
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
(6)更新apt包索引
apt-get update
(7)安装最新版本的 Docker Engine-Community 和 containerd
apt-get install docker-ce docker-ce-cli containerd.io
(8)测试Docker是否安装成功
docker run hello-world
以上Docker就安装成功了。
三、配置镜像加速器
国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。
Docker官方提供的中国镜像库:https://registry.docker-cn.com
在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件):
{"registry-mirrors":["https://registry.docker-cn.com"]}
之后重新启动服务:
systemctl daemon-reload
systemctl restart docker