文章目录
参考资料:
#1 Docker简介
- 开发语言:Go
- 性质:操作系统层面的虚拟化技术
- Docker 和传统虚拟化方式的区别:
- 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程
- 容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便
- Docker的优点:
- 更高效的利用系统资源
- 更快速的启动时间
- 一致的运行环境
- 持续交付和部署
- 更轻松的迁移
- 更轻松的维护和扩展
#2 Docker基本概念
##2.1 镜像|Image
Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
##2.2 容器|Container
容器:对进程进行封装隔离,且隔离的进程独立于宿主和其它的隔离的进程
容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。因此容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户ID空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样
##2.3 仓库|Repository
- Docker Registry:一个集中的存储、分发镜像的服务,一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。
- 一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。
- 仓库名经常以两段式路径形式出现,比如 jwilder/nginx-proxy,前者往往意味着 Docker Registry 多用户环境下的用户名,后者则往往是对应的软件名。
#3 安装Docker
##3.1 Ubuntu
- 注意:Ubuntu版本必须高于16.04,否则需要安装存储层驱动,用来支持docker的分层存储机制。
- 安装步骤:
sudo apt-get update
sudo apt-get install apt-transport-https ca certificates curl software-properties-common
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \$(lsb_release -cs) stable"
- 安装Docker CE:
sudo apt-get update
- 建立Docker用户组
sudo groupadd docker
sudo usermod -a -G docker $USER
- 重启(重启Terminal没用,需要重系统)
- 启动Docker CE:
sudo systemctl enable docker
sudo systemctl start docker
- 测试
docker run hello-world
- 配置仓库的国内镜像,也叫加速器:
- 在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)
sudo systemctl daemon-reload
sudo systemctl restart docker
{
"registry-mirrors": [
"https://registry.docker-cn.com"
]
}