Docker初体验

前言

容器技术在当前非常流行,而且在学习Istio的过程中,需要有k8sdocker的基础。它们的关系如下:k8s是用来管理编排docker的,可以更方便的部署出容器集群。而Istio是基于k8s环境下,是一种服务网格的实现。

所以docker无论是技术栈上的要求,还是响应技术潮流,都是必须要掌握的。这篇就以docker的hello world来开篇,简单来记录一下我对docker使用上的认识。docker的优点与应用场景这里就不多阐述。实验环境(Ubuntu16.04.1+ docker 18.06.1-ce

没有实验环境的,可以使用docker在线网站

你想输入的替代文字

docker使用

Ubuntu docker 安装

Docker 要求 Ubuntu 系统的内核版本高于 3.10,使用下面命令完成安装。

1
wget -qO- https://get.docker.com/ | sh

使用docker -v查看是否安装成功。

1
docker -v

你想输入的替代文字

安装完成后有以下提示,大概意思就是以非root用户运行docker时会报错。执行这个命令即可sudo usermod -aG docker username

1
2
3
4
5
If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:

sudo usermod -aG docker jintx
Remember that you will have to log out and back in for this to take effect!

执行命令,username改成你的用户名。

1
sudo usermod -aG docker jintx

docker run

当docker安装完成后,可以使用docker run命令去启动一个容器。再执行命令之前,我先讲清楚镜像和容器之间的关系。

学过面向对象的同学一定了解对象和类的关系。类是对象的一个具体实现,而这里的镜像就像这里的类,而容器就是镜像的一个具体应用了。

利用docker images查看当前你的docker有多少个镜像。可以看到关于镜像的一些信息。

1
docker images

你想输入的替代文字

如果想要获取其他镜像,可以使用docker pull <iamges name>获得。

1
docker pull hello-world

你想输入的替代文字

上述pull 没有指定对应的tag,所以默认会将最新的版本pull下来。再次docker images查看当前的镜像,就可以看到hello-world了。

使用docker run <image name> 将容器启动。这一步类似于new image,基于一个镜像,然后实例化运行。

1
docker run hello-world

你想输入的替代文字

然后使用docker ps可以查看当前正在运行的容器,但是上面hello-world在执行完就会将容器关闭。所以run一个ubuntu的镜像,然后让它在后台运行。

1
docker run -itd ubuntu /bin/bash

如果没有ubuntu这个镜像,docker会先将其pull下来。关于run 后面的参数会在后续博客给出解释。再使用docker ps 查看当前运行的容器,可以看到ubuntu。

你想输入的替代文字

查看所有的容器包括不在运行的容器。

1
docker ps -a

删除某个不再使用的容器。

1
docker rm <容器id|容器names>

配置镜像加速

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com。

/etc/docker/daemon.json添加如下内容(如果没有daemon.json,就新建一个):

1
2
3
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}

重启docker服务,让配置生效。

1
service docker restart