Docker 简单介绍和安装

什么是 Docker

Docker 是一个基于Linux容器的高级容器引擎,基于go语言开发,源代码托管在 Github 上,遵从Apache2.0协议开源。Docker的目标是实现轻量级的操作系统虚拟化解决方案。Docker支持大部分的Linux发行版,通过使用Docker容器,就可以在不同的操作系统,不同的机器上运行自己的应用,不用关心硬件、运行环境之类的配置,应用程序的迁移变得非常简单。Docker 通过分层镜像标准化和内核虚拟化技术,Docker使得应用开发者和运维工程师可以以统一的方式跨平台发布应用,并且以几乎没有额外开销的情况下提供资源隔离的应用运行环境。

Docker 和传统虚拟化技术的对比


传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便,资源占用更少,启动更快,很大的方便了项目的部署和运维。

安装 Docker

1、设置存储库

1
2
3
4
sudo apt-get -y install \
apt-transport-https \
ca-certificates \
curl

1
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
1
2
3
4
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

如果遇到 WARNING:root:could not open file ‘/etc/apt/sources.list’ 可以通过修改文件权限后再重试以上命令

1
sudo apt-get update

2、安装最新版本的docker-ce版本

1
sudo apt-get -y install docker-ce

3、测试安装是否成功

1
sudo docker run hello-world

4、查看 docker 版本

1
sudo docker --version

安装 Docker Compose

1、通过 curl 下载最新版本(下面链接的 1.8.0 是版本号)

1
sudo curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

2、修改执行权限

1
sudo chmod +x /usr/local/bin/docker-compose

3、测试安装是否成功

1
docker-compose --version

添加用户到 Docker 组

每次都输入 sudo docker … 太麻烦,把用户加入 docker 组就可以免去输入 sudo,操作如下:

1
2
sudo groupadd docker
sudo usermod -aG docker <your_username>

使用阿里云 Docker 加速器

进入阿里云开发者平台 dev.aliyun.com ,注册一个帐号,然后登录。

管理中心 -> Docker镜像仓库 -> Docker Hub 镜像站点 -> Ubuntu -> 如何使用Docker加速器

1
2
3
4
5
6
7
8
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["<your_https_address>"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

其中 https://xxxxxxx.mirror.aliyuncs.com 是你的专属加速器地址,由阿里云自动生成,每个人的地址都不一样。

获取 Ubuntu 16.04 镜像

1
sudo docker pull ubuntu:14.04

镜像是由多层存储所构成,下载也是一层层的去下载,并非单一文件。下载过程如下:

1
2
3
4
5
6
7
8
16.04: Pulling from library/ubuntu
b6f892c0043b: Pull complete
55010f332b04: Pull complete
2955fb827c94: Pull complete
3deef3fcbd30: Pull complete
cf9722e506aa: Pull complete
Digest: sha256:382452f82a8bbd34443b2c727650af46aced0f94a44463c62a9848133ecb1aa8
Status: Downloaded newer image for ubuntu:16.04

如果不使用加速器的话,下载镜像会非常缓慢,建议使用阿里云的加速器。

常用镜像很多,如:

mysql:5.7
redis
nginx
maven

docker 镜像的命名: <name>: <tag>,其中 tag 是版本信息,如果不用,则默认 lastest。

运行

有了镜像后,我们就可以以这个镜像为基础启动一个容器来运行。以上面的 ubuntu:16.04 为例,如果我们打算启动里面的 bash 并且进行交互式操作的话,可以执行下面的命令。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sudo docker run -it --rm ubuntu:16.04 bash
root@aef56e90da79:/# cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.2 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.2 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial
root@aef56e90da79:/# exit
exit

docker run 就是运行容器的命令。

-it:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。
–rm:这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 –rm 可以避免浪费空间。
ubuntu:16.04:这是指用 ubuntu:16.04 镜像为基础来启动容器。
bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash。
进入容器后,我们可以在 Shell 下操作,执行任何所需的命令。这里,我们执行了 cat /etc/os-release,这是 Linux 常用的查看当前系统版本的命令,从返回的结果可以看到容器内是 Ubuntu 16.04.2 LTS 系统。

最后通过 exit 退出这个容器。

想了解更多关于 Docker 信息的可以查看最新的官方文档:https://docs.docker.com/

完!

坚持原创技术分享,您的支持将鼓励我继续创作!