前言
容器技术在当前非常流行,而且在学习Istio
的过程中,需要有k8s
和docker
的基础。它们的关系如下: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 | If you would like to use Docker as a non-root user, you should now consider |
执行命令,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 | { |
重启docker服务,让配置生效。
1 | service docker restart |