Docker 简介
Docker 是一个开源的应用容器引擎。可以看成是一个特殊的环境,隔离了宿主机(电脑)和容器。做开发的时候通常会碰到在自己的电脑上没问题,放到服务器或者别人的电脑上就出问题了,通常我们会认为是环境不一致导致的,调试起来非常耗时费力。有了 Docker 这些问题迎刃而解。
经常在 Linux 上做测试的人员,做完测试就不用了。在过去我们会使用虚拟机,这样做不但占据者比较大的磁盘空间,而且运行启动耗时较长,性能不高。但是用 Docker 却可以随时随地启动一个 Linux 的容器,用完就可以删除,下次要用在重新开启一个新的,速度非常快。Docker 比虚拟机来的轻巧,开启和关闭非常迅速,占用的资源少。既然 Docker 有那么多的好处,没有理由不去调戏它。
Docker 安装(Ubuntu 16.04)
安装之前卸载旧版本(如果有的话)
1
|
sudo apt-get remove docker docker-engine docker.io
|
这里介绍两种安装方式,随便选一种都行,建议第一种,免于在安装上花费太多时间。
使用阿里云提供的安装脚本(由于网络问题,你懂得)
1
|
curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
|
- Docker 需要安装在 64 位的 x86 平台或 ARM 平台上(如树莓派),内核版本不低于 3.10。
手动安装
1
2
3
4
5
6
7
8
9
10
11
12
13
|
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install docker-ce
# 启动
sudo systemctl start docker
# 查看 docker 版本
docker --version
|
小试牛刀,运行一个容器
建立 Docker 用户组
为什么要建立 Docker 用户组
默认情况下,只有 root 用户和 docker 组的用户才可以访问 Docker。在使用中一般不会直接使用 root 用户操作,也避免每次输入命令都要加 su
。
- 建立 docker 组
sudo groupadd docker
- 将当前用户加入 docker 组
sudo usermod -aG docker $USER
Docker 名词解释
镜像(Image)
Docker 镜像可以理解为模板,就像面向对象里的 class
一样可以通过这个类创建出无数个对象(容器)。
容器(Container)
Docker 容器就是通过镜像创建出来的运行实例,与面向对象里的 对象
类似。不过容器可以作为新的镜像用来创建新的容器。
仓库
Docker 仓库是一个镜像的集合,里面放了许多常用的镜像,不要我们自己去构建这些镜像。比如 Ubuntu、Tomcat 等。一个仓库可能包含不同版本的镜像,在镜像仓库里不同的版本会被打上不同的标签。我们可以通过 镜像名:标签
来获取不版本的镜像。以 Ubuntu 为例, Ubuntu 16.04
的版本表示为 ubuntu:16.04
。如果没有写标签,表示使用最新的。即 ubuntu:latest
使用
镜像的管理
- 获取镜像,Docker Registry 默认为 Docker Hub,镜像名由
用户名/软件名
组成,不写用户名默认为 library
,也就是官方镜像
1
|
docker pull [Docker Registry]<镜像>:<标签>
|
容器的使用与管理
- 运行交互式容器,
i
交互式操作, t
终端。后面的 bash
表示用 bash
作为交互式终端的 shell
1
|
docker run -it ubuntu bash
|
1
|
docker run -p 80:8080 nginx # 把宿主机的 80 端口映射到容器的 8080 端口
|
1
|
docker run --name alias nginx
|
- 后台运行容器。容器是否长久运行和
-d
无关, -d
只是指定了运行在后台(background)。容器长久运行和 run
指定的命令有关。后台运行可以在本地和容器之间来回切换。
参考
Docker - 从入门到实践