Docker 入门
Docker 入门
Docker 是现代开发中非常重要的容器技术。这一篇我们来认识它。
什么是 Docker
Docker 是一个虚拟化软件,你可以把它想象成类似 VMware、Virtualbox 的工具,但它更轻量、更高效。
基本概念
| 概念 | 说明 |
|---|---|
| 宿主机 | 安装 Docker 的那台电脑 |
| 镜像(Image) | 可以认为是类似 Windows 下的 .iso 文件,是容器的模板 |
| 容器(Container) | 镜像的实例,是真正运行的东西 |
理解镜像和容器
镜像是一个「模板」,容器是模板「运行起来」的实例。就像
iso是安装盘,装好运行起来的系统是容器。同一个镜像可以创建多个容器。
Docker 的思想
Docker 的思想来自于集装箱。集装箱解决了什么问题?在一艘大船上,可以把货物规整地摆放起来,各种货物被集装箱标准化,互不影响。Docker 就是类似的理念——把应用和它的运行环境一起打包,在任何地方都能运行。
Docker 解决了什么问题?
- 环境隔离:不同应用依赖的软件不同,装在一起会冲突。Docker 可以把它们隔离在各自的容器里。
- 环境一致:你开发时用 Ubuntu,运维用 CentOS,环境差异导致「在我机器上能跑」。Docker 把开发环境直接封装转移,杜绝了这个问题。
- 资源高效:虚拟机开销大,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 | { |
然后重启 Docker:
1 | $ sudo systemctl daemon-reload |
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 桌面使用技巧