Docker
大约 2 分钟
Docker
参考:https://www.bilibili.com/video/BV1s54y1n7Ev
docker的出现,让应用环境的配置、发布、测试变得轻松
像 Kubernetes (k8s)、Docker Swarm、Podman 等都与Docker有关
课程介绍Docker基本概念、安装、使用,以及如何用 docker compose 来同时管理多个容器
介绍
解决什么问题?
本地调试没问题,那么需要给云服务器一个相同的环境(比如Linux发行版不同、或同一个发行版的小版本不同)
模拟完全相同本地环境,Windows通常会用虚拟机(VMware、VirtualBox、Hyper-V、QEMU),但较臃肿且性能不高
Docker在概念上相当于虚拟机,但更轻量。提供隔离的环境
(介于虚拟机和沙盒 Sandbox 之间?anaconda?java?)
概念
三个概念
- Dockerfile
- Image / 镜像
- 理解成虚拟机的快照(Snapshot),包含要部署的应用程序和相关库 Docker Hub 上也提供了很多高质量的操作系统镜像
- Container / 容器
- 镜像可以创建多个不同的容器(通过Dockerfile完成),每个容器都是独立运行 类比于多个虚拟机使用同一个镜像去创建,类比于多个实例使用一个类来创建
安装
Windows/Mac
官网下载 Docker Desktop
的应用。 这个图形化界面可以查看应用在后台的所有输出以便调试,同时也可以看到一些状态(cpu内存等) 以及可以图形化管理所有创建的容器。
Windows 10 以上也可以使用 WSL2 子系统来运行
Linux
使用包管理工具
按官网一步一步按
不同的Linux操作系统有不同的包管理工具
- Ubuntu:apt
- Fedora:dnf
也有针对于不同语言的包管理工具
- nginx
- redis
- node
- python
- tomcat
VSCode插件
提供Dockerfile的语法检测和补全
部署
这里是一个python flash的自动记账的demo:
应用的根目录创建一个 Dockerfile
文件
FROM python:3.8-slim-buster
WORKDIR /app
COPY <本地路径> <目标路径>
RUN pip install -r requirements.txt # RUN创建镜像时使用的
CMD ["python3", "app.py"] # CMD是运行容器时使用的
然后在命令行运行
# 创建镜像
docker build -t my-finance . # 第一次调用 docker build 会较慢,第二次就快很多
# 启动容器
docker run -p 80:5000 -d my-finance # 然后就可以在浏览器访问这个docker应用了
常用命令
docker ps # 列举所有容器
docker stop <容器 ID> # 停止容器
docker restart <容器 ID> # 重启容器
docker rm <容器 ID> # 删除容器
docker exec -it <容器 ID> /bin/bash # 启动一个远程Shell