Docker 使用
Contents
Docker 简介
Docker 是一个开源的应用容器引擎。可以看成是一个特殊的环境,隔离了宿主机(电脑)和容器。做开发的时候通常会碰到在自己的电脑上没问题,放到服务器或者别人的电脑上就出问题了,通常我们会认为是环境不一致导致的,调试起来非常耗时费力。有了 Docker 这些问题迎刃而解。
经常在 Linux 上做测试的人员,做完测试就不用了。在过去我们会使用虚拟机,这样做不但占据者比较大的磁盘空间,而且运行启动耗时较长,性能不高。但是用 Docker 却可以随时随地启动一个 Linux 的容器,用完就可以删除,下次要用在重新开启一个新的,速度非常快。Docker 比虚拟机来的轻巧,开启和关闭非常迅速,占用的资源少。既然 Docker 有那么多的好处,没有理由不去调戏它。
Docker 安装(Ubuntu 16.04)
安装之前卸载旧版本(如果有的话)
sudo apt-get remove docker docker-engine docker.io
这里介绍两种安装方式,随便选一种都行,建议第一种,免于在安装上花费太多时间。
使用阿里云提供的安装脚本(由于网络问题,你懂得)
curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
- Docker 需要安装在 64 位的 x86 平台或 ARM 平台上(如树莓派),内核版本不低于 3.10。
手动安装
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 run hello-world
建立 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 images
- 获取镜像,Docker Registry 默认为 Docker Hub,镜像名由
用户名/软件名组成,不写用户名默认为library,也就是官方镜像
docker pull [Docker Registry]<镜像>:<标签>
- 删除镜像
docker rmi <镜像>
容器的使用与管理
- 查看所有容器,包括没有在运行的
docker ps -a
- 运行容器
docker run ubuntu
- 运行交互式容器,
i交互式操作,t终端。后面的bash表示用bash作为交互式终端的shell
docker run -it ubuntu bash
- 运行完容器后删除,不保留运行的结果
docker run -rm ubuntu
- 运行容器,并指定端口映射。
p小写
docker run -p 80:8080 nginx # 把宿主机的 80 端口映射到容器的 8080 端口
- 运行容器,随机映射端口。
P大写
docker run -P nginx
- 为容器起一个别名
docker run --name alias nginx
- 后台运行容器。容器是否长久运行和
-d无关,-d只是指定了运行在后台(background)。容器长久运行和run指定的命令有关。后台运行可以在本地和容器之间来回切换。
docker run -d ubuntu
- 进入后台运行的容器
docker attach ubuntu
- 停止容器
docker stop ubuntu
- 删除容器
docker rm ubuntu