本文详细介绍了Docker的入门知识,包括Docker的基本概念、安装方法以及常用命令。文章还涵盖了Docker镜像和容器的管理,以及网络和数据卷的配置。通过本文,读者可以全面了解并掌握Docker的使用方法。
1. Docker简介Docker 是一个开源的应用容器引擎,它允许开发者将应用及其依赖打包到一个可移植的容器中,然后发布到任何支持 Docker 的 Linux 机器上,实现虚拟化。容器完全使用沙箱机制,相互之间不会有任何接口。
在 Windows 上安装 Docker,需要下载官方的 Docker Desktop 安装包。安装过程如下:
在 Mac 上安装 Docker,也需要下载官方的 Docker Desktop 安装包。安装过程如下:
在 Linux 上安装 Docker,可以通过以下命令安装:
# 更新系统包 sudo apt-get update # 安装必要的软件包 sudo apt-get install apt-transport-https ca-certificates curl software-properties-common # 添加Docker的官方GPG密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - # 添加Docker的APT仓库 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" # 更新包索引 sudo apt-get update # 安装Docker CE sudo apt-get install docker-ce # 验证Docker CE 安装成功 sudo docker run hello-world3. Docker基本概念
Docker 镜像类似于虚拟机的快照,它包含启动容器所需的一切信息。每个 Docker 镜像都是由 Dockerfile 构建的。Dockerfile 是一个文本文件,包含了一系列的命令,用于生成 Docker 镜像。例如:
# 使用官方的 Python 作为父镜像 FROM python:3.7-slim # 设置工作目录 WORKDIR /app # 将当前目录下的所有文件复制到工作目录 COPY . /app # 安装依赖 RUN pip install --no-cache-dir -r requirements.txt # 设置环境变量 ENV NAME World # 命令行设置 CMD ["python", "app.py"]
容器是镜像的运行实例。它包含了镜像中的所有文件和资源,以及运行时的环境变量、进程等。可以通过 docker run
命令来启动容器。例如:
docker run -it --name my_container python:3.7-slim /bin/bash
仓库是集中存放镜像的地方。一个仓库可以包含多个标签,每个标签都指向不同的镜像。例如,ubuntu
仓库包含多个标签,如 16.04
, 18.04
, 20.04
等。
Dockerfile 是一个文本文件,包含了一系列的指令,用于生成 Docker 镜像。Dockerfile 的基本结构如下:
基础镜像
FROM ubuntu:18.04
环境变量设置
ENV MY_VAR=my_value
工作目录设置
WORKDIR /app
文件复制
COPY . /app
命令执行
RUN apt-get update && apt-get install -y python3
CMD ["python", "app.py"]
启动容器
docker run -it --name my_container ubuntu:latest /bin/bash
停止容器
docker stop my_container
docker rm my_container
拉取镜像
docker pull ubuntu:latest
构建镜像
docker build -t my_image .
查看镜像
docker images
docker rmi my_image
进入容器
docker exec -it my_container /bin/bash
查看容器
docker ps
docker logs my_container
Docker 提供了多种网络模式,包括 bridge
,host
,none
和 container
。默认情况下,Docker 使用 bridge
模式。可以通过 docker network
命令来创建自定义网络。
# 创建自定义网络 docker network create my_network # 启动容器并连接到自定义网络 docker run -d --name my_container --network my_network ubuntu:latest /bin/bash
Docker 数据卷是一种持久化的数据存储方式。数据卷不会随容器的生命周期而消失,即使删除容器,数据卷中的数据仍然存在。可以通过 -v
参数来创建数据卷。
# 创建数据卷并挂载到容器 docker run -d -v /data --name my_container ubuntu:latest /bin/bash
数据卷容器类似于普通容器,但是它的主要功能是存储数据。数据卷容器可以被多个其他容器共享,从而实现了数据的持久化。
# 创建数据卷容器 docker create --name my_data_volume --mount type=volume,src=my_volume,dst=/data busybox # 启动容器并挂载数据卷容器 docker run -d --name my_container --volumes-from my_data_volume ubuntu:latest /bin/bash6. Docker实践案例
假设有一个简单的 Python 项目,包含 app.py
和 requirements.txt
文件。可以通过以下步骤构建 Docker 镜像:
# 使用官方的 Python 作为父镜像 FROM python:3.7-slim # 设置工作目录 WORKDIR /app # 将当前目录下的所有文件复制到工作目录 COPY . /app # 安装依赖 RUN pip install --no-cache-dir -r requirements.txt # 设置环境变量 ENV NAME World # 命令行设置 CMD ["python", "app.py"]
构建镜像:
docker build -t my_project .
假设有一个简单的 Flask 应用,可以通过以下步骤运行:
# 使用官方的 Python 作为父镜像 FROM python:3.7-slim # 设置工作目录 WORKDIR /app # 将当前目录下的所有文件复制到工作目录 COPY . /app # 安装依赖 RUN pip install --no-cache-dir -r requirements.txt # 设置环境变量 ENV NAME World # 命令行设置 CMD ["python", "app.py"]
构建镜像并运行:
docker build -t my_web_app . docker run -d -p 8080:80 --name my_web_container my_web_app
可以通过数据卷将主机上的数据共享到容器中。
# 创建数据卷 docker volume create my_volume # 启动容器并挂载数据卷 docker run -d --name my_container --mount type=volume,src=my_volume,dst=/data ubuntu:latest /bin/bash
以上是 Docker 的基本介绍和操作指南,通过本文的介绍,读者可以了解 Docker 的基本概念、安装方法、常用命令以及如何构建和运行 Docker 容器。希望读者可以通过本文快速掌握 Docker 的使用方法,并在实际开发中应用。