【官网地址】:Empowering App Development for Developers | Docker
【开源地址】:Docker (github.com)
【镜像地址】:Explore Docker’s Container Image Repository | Docker Hub
【官方文档】:Docker Documentation
开源的应用容器引擎
Dockerfile
Docker自动化脚本,通过它可以自动化配置容器和安装镜像。
Image
Docker镜像,部署的应用程序以及它所关联的所有库或软件,可以用于创建容器Container。
Container
Docker容器,运行Image部署的应用程序的容器。
Volumes
数据卷,使容器之间的数据可以同步到本地服务中。
开发者可以通过它打包他们的应用和依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口。
它不会去模拟底层的硬件,只为一个应用提供完全隔离的运行环境,可以在环境中配置不同的工具软件,并且不同环境之间相互不影响。
创建Dockerfile
通过FROM
指定基础镜像
# python 镜像应用 3.8-slim-buster 版本号
FROM python:3.8-slim-buster
通过WORKDIR
指定之后命令默认工作路径
WORKDIR /app
通过COPY
将所有的程序拷贝到Docker镜像中
# 目标路径 . 代表WORKDIR指定的默认工作路径
# 本地路径 . 代表程序根目录下所有的文件
COPY . .
# COPY <本地路径> <目标路径>
通过RUN
运行任意的shell command
RUN pip3 install -r requirements.txt
通过CMD
指定Docker容器运行后要执行的命令
CMD ["python3", "app.py"]
# CMD ["可执行文件", "参数1", "参数2" ...]
使用docker build
创建镜像
docker build -t my-finance .
# -t 指定镜像名字
# . 指定Dockerfile在当前目录下
创建Volume
docker volume create my-finance-data
# docker volume create <容器名称>
使用docker run
启动容器
docker run -p 80:5000 -d my-finance
# -p 将容器的端口映射到本机主机上
# 80 本机端口
# 5000 容器端口
# -d 容器后台运行
# -v 指定volume挂载到容器哪个路径 -v my-finance-data:/etc/finance
创建docker-compose.yml
通过services
定义多个容器
version: "3",
services:
web:
build: .
ports:
- "80:5000"
db:
image: "mysql"
environment:
MYSQL_DATABASE: finance-db
MYSQL_ROOT_PASSWORD: secret
volumes:
- my-finance-data:/var/lib/mysql
volumes:
my-finance-data: {}
使用docker bulid
创建镜像
docker ps
docker stop <容器 ID>
docker restart <容器 ID>
docker rm <容器 ID>
docker compose up [-d]
docker compose down [--volumes]
docker exec -it <容器 ID> /bin/bash
docker volume create <数据卷名称>
docker logs
docker export <容器 ID>> <容器文件>
docker import <容器文件>
docker images
docker image rm <镜像 ID>
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
docker version
error during connect: This error may indicate that the docker daemon is not running.
unable to start docker desktops service:2