Docker 入门

Docker 入门

Docker 是现代开发中非常重要的容器技术。这一篇我们来认识它。

什么是 Docker

Docker 是一个虚拟化软件,你可以把它想象成类似 VMware、Virtualbox 的工具,但它更轻量、更高效。

基本概念

概念 说明
宿主机 安装 Docker 的那台电脑
镜像(Image) 可以认为是类似 Windows 下的 .iso 文件,是容器的模板
容器(Container) 镜像的实例,是真正运行的东西

理解镜像和容器

镜像是一个「模板」,容器是模板「运行起来」的实例。就像 iso 是安装盘,装好运行起来的系统是容器。同一个镜像可以创建多个容器。

Docker 的思想

Docker 的思想来自于集装箱。集装箱解决了什么问题?在一艘大船上,可以把货物规整地摆放起来,各种货物被集装箱标准化,互不影响。Docker 就是类似的理念——把应用和它的运行环境一起打包,在任何地方都能运行。

Docker 解决了什么问题?

  1. 环境隔离:不同应用依赖的软件不同,装在一起会冲突。Docker 可以把它们隔离在各自的容器里。
  2. 环境一致:你开发时用 Ubuntu,运维用 CentOS,环境差异导致「在我机器上能跑」。Docker 把开发环境直接封装转移,杜绝了这个问题。
  3. 资源高效:虚拟机开销大,Docker 更轻量,能更好地利用服务器资源。

玩法理念

单进程:一个容器最好只专注做一件事。虽然它可以既装 MySQL 又装 Nginx,但让一个容器只做好一件事是最合适的。

安装 Docker

Ubuntu 安装 Docker CE(社区版):

1
$ sudo apt-get install -y docker-ce

启动 Docker:

1
$ sudo systemctl start docker.service

验证安装:

1
$ sudo docker run hello-world

如果输出 Hello from Docker!,说明安装成功。

镜像加速

Docker 默认从国外仓库下载镜像,速度较慢。国内常用的加速器有阿里云、USTC、网易等。

配置阿里云加速器,编辑 /etc/docker/daemon.json:

1
2
3
{
"registry-mirrors": ["https://你的专属加速地址.mirror.aliyuncs.com"]
}

然后重启 Docker:

1
2
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

Docker 基本命令

镜像管理

命令 作用
docker pull 镜像名 从仓库下载镜像到本地
docker images 显示本地所有镜像列表
docker rmi 镜像ID 删除镜像
docker search 关键字 从仓库搜索镜像
docker login 登录镜像仓库

容器管理

命令 作用
docker run 镜像 运行镜像,实例化为容器
docker ps 列出当前正在运行的容器
docker ps -a 列出所有容器(包含历史)
docker start 容器ID 重新启动已停止的容器
docker stop 容器ID 停止容器
docker rm 容器ID 删除容器
docker logs -f 容器ID 查看容器日志
docker exec -it 容器ID /bin/bash 进入正在运行的容器

docker run 常用参数

参数 作用
-i -t 开启交互终端
-d 后台运行
-p 宿主机端口:容器端口 端口映射
-v 宿主机目录:容器目录 目录挂载
--name 名称 给容器命名
--rm 退出即删除容器(用于测试)

理解端口映射

容器内部有自己的网络,外部访问不到。-p 38080:8080 表示把宿主机的 38080 端口映射到容器的 8080 端口,这样外部访问 宿主机IP:38080 就能访问到容器里的 8080 服务了。

小结

这一篇我们学习了 Docker 的基础知识。下一篇学习 Ubuntu 桌面使用技巧。

上一篇:网络服务与安全

下一篇:Ubuntu 桌面使用技巧