Docker使用教程

Docker 是一个开源的容器化平台,用于开发、打包和分发应用程序。它允许将应用及其依赖环境打包成容器,从而实现跨平台的便捷部署。下面是一个简单的 Docker 使用教程,涵盖从安装到基本命令的使用。

1. 安装 Docker

Windows / MacOS
  1. 访问 Docker 官方网站:Docker Download
  2. 下载并安装 Docker Desktop。
  3. 安装后启动 Docker Desktop,等待 Docker 完成启动。
Linux (以 Ubuntu 为例)
bash 复制代码
# 更新包索引
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 gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 添加 Docker 仓库
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 更新包索引
sudo apt-get update

# 安装 Docker 引擎
sudo apt-get install docker-ce

# 启动 Docker 服务
sudo systemctl start docker

# 设置 Docker 开机自启动
sudo systemctl enable docker

安装完成后,验证安装是否成功:

bash 复制代码
docker --version

2. 常用 Docker 命令

2.1 Docker 容器管理
  • 查看已安装的镜像

    bash 复制代码
    docker images
  • 拉取镜像

    bash 复制代码
    docker pull <image-name>

    示例:

    bash 复制代码
    docker pull ubuntu:20.04
  • 运行容器

    bash 复制代码
    docker run <image-name>

    示例:

    bash 复制代码
    docker run ubuntu:20.04
  • 以交互模式启动容器并进入 shell

    bash 复制代码
    docker run -it <image-name> /bin/bash
  • 查看正在运行的容器

    bash 复制代码
    docker ps
  • 查看所有容器(包括停止的)

    bash 复制代码
    docker ps -a
  • 停止容器

    bash 复制代码
    docker stop <container-id>
  • 删除容器

    bash 复制代码
    docker rm <container-id>
2.2 Docker 镜像管理
  • 构建镜像

    bash 复制代码
    docker build -t <image-name> <path-to-dockerfile>

    示例:

    bash 复制代码
    docker build -t myapp:latest .
  • 删除镜像

    bash 复制代码
    docker rmi <image-id>
2.3 Docker 网络管理
  • 查看 Docker 网络

    bash 复制代码
    docker network ls
  • 创建一个新的网络

    bash 复制代码
    docker network create <network-name>
  • 连接容器到网络

    bash 复制代码
    docker network connect <network-name> <container-id>
  • 断开容器与网络的连接

    bash 复制代码
    docker network disconnect <network-name> <container-id>
2.4 Docker 数据管理
  • 查看 Docker 卷

    bash 复制代码
    docker volume ls
  • 创建 Docker 卷

    bash 复制代码
    docker volume create <volume-name>
  • 删除 Docker 卷

    bash 复制代码
    docker volume rm <volume-name>

3. Dockerfile

Dockerfile 是一个文本文件,包含了一系列的指令,用于定义构建 Docker 镜像的过程。以下是一个简单的 Dockerfile 示例:

Dockerfile 复制代码
# 使用官方的 Python 3.8 镜像作为基础镜像
FROM python:3.8-slim

# 设置工作目录
WORKDIR /app

# 将当前目录下的文件复制到容器中的 /app 目录
COPY . /app

# 安装 Python 依赖
RUN pip install -r requirements.txt

# 暴露容器的 80 端口
EXPOSE 80

# 设置容器启动命令
CMD ["python", "app.py"]
3.1 构建镜像

使用以下命令构建 Docker 镜像:

bash 复制代码
docker build -t my-python-app .
3.2 运行容器

构建完成后,使用以下命令运行该镜像:

bash 复制代码
docker run -p 5000:80 my-python-app

这会将容器的端口 80 映射到本地机器的端口 5000。

4. Docker Compose

Docker Compose 是一个工具,用于定义和运行多容器 Docker 应用。通过 docker-compose.yml 文件可以方便地管理多个容器。

4.1 Docker Compose 文件示例
yaml 复制代码
version: '3'
services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example
4.2 启动应用

使用以下命令启动 Compose 配置中的所有服务:

bash 复制代码
docker-compose up
4.3 停止应用

使用以下命令停止并删除容器:

bash 复制代码
docker-compose down

5. Docker 容器调试

  • 查看容器的日志

    bash 复制代码
    docker logs <container-id>
  • 进入正在运行的容器

    bash 复制代码
    docker exec -it <container-id> /bin/bash
  • 监控容器的资源使用情况

    bash 复制代码
    docker stats

6. Docker 容器和镜像的安全性

  • 限制容器资源

    • 设置容器的 CPU 和内存限制:
    bash 复制代码
    docker run -it --memory="256m" --cpus="1.0" <image-name>
  • 扫描镜像的安全漏洞

    可以使用工具如 TrivyClair 来扫描 Docker 镜像中的安全漏洞。

相关推荐
腾渊信息科技公司8 小时前
工业数据运维痛点根治方案:基于AI Agent的产线自动化台账系统落地
运维·人工智能·自动化·个人开发·ai编程
Dxy12393102168 小时前
Proxy Protocol v2 详解
运维
踏月的造梦星球9 小时前
DMDPC 学习:架构、部署、运维与调优
运维·数据库·学习·架构
潘正翔9 小时前
docker核心概念
linux·运维·服务器·docker·容器·centos·运维开发
renhongxia110 小时前
世界模型,是“空中楼阁”还是AGI的“最后一块拼图”?
运维·服务器·数据库·人工智能·算法·agi
Dovis(誓平步青云)11 小时前
远程办公软件文件传输实测:6 款工具的速度、稳定性和办公体验对比
linux·运维·服务器·后端·生成对抗网络
Java小白笔记12 小时前
Docker 安装配置完全指南:MacOS 、Windows、Linux环境下的安装、配置与验证
linux·macos·docker
csdn_aspnet12 小时前
GitHub Actions自动化运维实战,用CI/CD流水线实现测试、部署、安全扫描一体化
运维·安全·ci/cd·自动化·github
Inhand陈工13 小时前
数据中心UPS无功补偿与智能化监控方案:基于IG502的Modbus RTU转IEC61850实战
运维·人工智能·物联网·信息与通信
qetfw13 小时前
CentOS 7 搭建 LDAP 目录服务
linux·运维·centos