Docker基础知识与实践指南.250411

Docker基础知识与实践指南

1. Docker简介

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上。Docker通过容器技术,可以实现应用的快速部署、弹性伸缩,并确保在不同环境下的一致性运行。

1.1 Docker的主要概念

  • 镜像(Image):Docker镜像是一个只读的模板,包含了运行应用程序所需的所有文件和配置。
  • 容器(Container):容器是镜像的运行实例,可以被启动、停止、删除等。
  • 仓库(Repository):用于存储和分发Docker镜像的地方。

2. Docker安装

2.1 CentOS安装Docker

# 卸载旧版本
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

# 安装必要的系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加软件源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 安装Docker
sudo yum install docker-ce docker-ce-cli containerd.io

# 启动Docker
sudo systemctl start docker

# 设置开机自启
sudo systemctl enable docker

2.2 Ubuntu安装Docker

# 更新apt包索引
sudo apt-get update

# 安装必要的系统工具
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release

# 添加Docker的官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 设置稳定版仓库
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

# 安装Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

3. Docker基本命令

3.1 镜像管理

# 查看本地镜像
docker images

# 拉取镜像
docker pull [镜像名称]:[标签]

# 删除镜像
docker rmi [镜像ID]

# 构建镜像
docker build -t [镜像名称]:[标签] .

3.2 容器管理

# 启动容器
docker run -d --name [容器名称] [镜像名称]

# 停止容器
docker stop [容器ID/容器名称]

# 启动已停止的容器
docker start [容器ID/容器名称]

# 删除容器
docker rm [容器ID/容器名称]

# 查看运行中的容器
docker ps

# 查看所有容器(包括已停止的)
docker ps -a

# 进入容器
docker exec -it [容器ID/容器名称] /bin/bash

4. Dockerfile基础

Dockerfile是用于构建Docker镜像的文本文件,包含了一系列的指令和参数。

4.1 常用指令

# 基础镜像
FROM ubuntu:20.04

# 维护者信息
MAINTAINER your-name "your-email@example.com"

# 设置工作目录
WORKDIR /app

# 复制文件
COPY . /app

# 运行命令
RUN apt-get update && apt-get install -y nodejs

# 暴露端口
EXPOSE 3000

# 设置环境变量
ENV NODE_ENV=production

# 容器启动时执行的命令
CMD ["npm", "start"]

5. Docker Compose

Docker Compose是用于定义和运行多容器Docker应用程序的工具。

5.1 安装Docker Compose

# 下载Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose

5.2 docker-compose.yml示例

version: '3'
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
    environment:
      FLASK_ENV: development
  redis:
    image: "redis:alpine"

6. Docker网络

Docker提供了多种网络驱动,包括:

  • bridge:默认网络驱动程序
  • host:容器使用主机的网络
  • none:禁用容器的所有网络
  • overlay:用于Swarm服务之间的通信

6.1 网络命令

# 创建网络
docker network create my-network

# 查看网络列表
docker network ls

# 查看网络详情
docker network inspect my-network

# 连接容器到网络
docker network connect my-network my-container

7. Docker数据管理

7.1 数据卷(Volumes)

# 创建数据卷
docker volume create my-vol

# 查看数据卷列表
docker volume ls

# 查看数据卷详情
docker volume inspect my-vol

# 删除数据卷
docker volume rm my-vol

7.2 挂载示例

# 使用数据卷挂载
docker run -v my-vol:/app/data my-image

# 使用主机目录挂载
docker run -v /host/path:/container/path my-image

8. Docker安全最佳实践

  1. 使用官方镜像
  2. 定期更新基础镜像
  3. 使用多阶段构建
  4. 最小化镜像大小
  5. 不在容器中运行特权进程
  6. 使用安全扫描工具
  7. 实施访问控制
  8. 限制资源使用

9. 常见问题与解决方案

9.1 容器无法启动

检查步骤:

  1. 查看容器日志:docker logs [容器ID]
  2. 检查端口占用:netstat -tunlp
  3. 检查存储空间:df -h
  4. 查看Docker守护进程状态:systemctl status docker

9.2 镜像拉取失败

解决方案:

  1. 检查网络连接
  2. 配置镜像加速器
  3. 检查存储空间
  4. 验证镜像名称和标签

10. 参考资源

posted @ 2025-04-21 12:57  中国的Amadeus  阅读(20)  评论(0)    收藏  举报