什么是Docker
Docker 是一个开源的应用容器引擎,基于Go语言并遵从 Apache2.0 协议开源
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低
Docker的应用场景
Web 应用的自动化打包和发布。
自动化测试和持续集成、发布。
在服务型环境中部署和调整数据库或其他的后台应用。
从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境
Docker的优点
Docker 是一个用于开发,交付和运行应用程序的开放平台借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用
Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟、
Docker的基本概念
1. 镜像
操作系统分为内核和用户空间。对于 Linux 而言,内核启动后,会挂载 root
文件系统为其提供用户空间支持。而Docker镜像
(Image),就相当于是一个 root
文件系统。Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资
源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数
据,其内容在构建之后也不会被改变。
2. 容器
镜像(Image
)和容器(Container
)的关系,就像是面向对象程序设计中的 类
和 实例
一样,镜像是静态的定义,容器是镜像
运行时的实体。容器可以被创建、启动、停止、删除、暂停等。容器的实质是进程,但与直接在宿主执行的进程不同,容器进
程运行于属于自己的独立的 命名空间。因此容器可以拥有自己的 root
文件系统、自己的网络配置、自己的进程空间,甚至自
己的用户 ID 空间。
3. 仓库
镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的
存储、分发镜像的服务,Docker Registry 就是这样的服务。一个 Docker Registry 中可以包含多个 仓库(Repository
);
每个仓库可以包含多个 标签(Tag
);每个标签对应一个镜像。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就
常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签>
的格式来指定具体是这个软件哪个版本的镜像。如果不给出标
签,将以 latest
作为默认标签。
Ubuntu安装Docker
# 警告:切勿在没有配置 Docker APT 源的情况下直接使用 apt 命令安装 Docker.
卸载旧版本
旧版本的 Docker 称为 docker
或者 docker-engine
,使用以下命令卸载旧版本:
$ sudo apt-get remove docker docker-engine docker.io
使用 apt 安装
由于 apt
源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
鉴于国内网络问题, 强烈建议使用国内源, 官方源请在注释中, 为了确认所下载软件包的合法性,需要添加软件源的GPG
密钥
$ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# 官方源 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
向 source.list
中添加 Docker 软件源
$ sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable
# 官方源
# sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
安装Docker CE
更新 apt 软件包缓存,并安装 docker-ce
:
$ sudo apt-get update
$ sudo apt-get install docker-ce
安装成功,查看docker版本
$ docker -v
Docker version 19.03.5, build 633a0ea838
启动 Docker CE
$ sudo systemctl enable docker
$ sudo systemctl start docker
建立 docker 用户组
默认情况下,docker
命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root
用户和 docker
组的用户才可以访问 Docker 引擎的
Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root
用户。因此,更好地做法是将需要使用 docker
的用户加
入 docker
用户组
建立docker组: $ sudo groupadd docker
将当前用户加入docker组: $ sudo usermod -aG docker $USER
设置镜像仓库源
默认的镜像仓库是国外的,拉取镜像的速度很慢,所以为了方便镜像获取,可以更改镜像源,方法是添加一个配置文件
$ sudo vi /etc/docker/daemon.json
添加信息如下:
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
重启容器服务,生效
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
查看镜像源是否更改
$ docker info
Ubuntu安装Docker-compose
Compose 简介
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的
所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务
二进制包安装compose
使用如下链接下载安装
$ sudo curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
1.24.0为compose的版本, 可以自主修改与选择
如果上面的命令执行不成功也可以执行(注意:仅限系统为Linux-x86_64的用户)
$ sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose
安装成功修改二进制权限, 添加执行权限x
$ sudo chmod +x /usr/local/bin/docker-compose
查看docker-compose版本
$ docker-compose -v
docker与docker-compose的其他安装方式
使用脚本自动安装docker-ce
在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,Ubuntu 系统上可以使用这套脚本安装,
另外可以通过 --mirror
选项使用国内源进行安装:
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun
# $ sudo sh get-docker.sh --mirror AzureChinaCloud
执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker CE 的稳定(stable)版本安装在系统中
pip安装compose
注: x86_64
架构的 Linux 建议按照上边的方法下载二进制包进行安装,如果您计算机的架构是 ARM
(例如,树莓派),再使用
pip
安装。这种方式是将 Compose 当作一个 Python 应用来从 pip 源中安装
执行安装命令:
$ sudo pip install -U docker-compose
可以看到类似如下输出,说明安装成功
Collecting docker-compose
Downloading docker-compose-1.17.1.tar.gz (149kB): 149kB downloaded
...
Successfully installed docker-compose cached-property requests texttable websocket-client docker-py dockerpty six enum34 backports.ssl-match-hostname ipaddress
提交评论
您尚未登录,登录之后方可评论~ 登录 or 注册