Docker入门指南:概念、安装与基本使用

Jul 27, 2020·
Orochi
Orochi
· 2 min read

Docker技术入门指南

1. Docker简介

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows机器上。

1.1 核心概念

  • 容器(Container):独立运行的一个或一组应用
  • 镜像(Image):用于创建容器的模板
  • 仓库(Repository):用于存放镜像的地方
  • Docker引擎(Docker Engine):用于运行和管理容器的核心组件

1.2 Docker架构

┌─────────────────────┐
│    Docker Client    │
└─────────┬───────────┘
┌─────────▼───────────┐
│    Docker Daemon    │
└─────────┬───────────┘
┌─────────▼───────────┐
│ Containers│Images   │
└─────────────────────┘

2. 安装Docker

2.1 Ubuntu安装

# 更新包索引
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

2.2 CentOS安装

# 安装必要的系统工具
sudo yum install -y yum-utils

# 添加软件源信息
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

3. Docker基本操作

3.1 服务管理

# 启动Docker服务
sudo systemctl start docker

# 设置开机自启
sudo systemctl enable docker

# 查看Docker状态
sudo systemctl status docker

3.2 镜像操作

# 搜索镜像
docker search nginx

# 拉取镜像
docker pull nginx:latest

# 列出本地镜像
docker images

# 删除镜像
docker rmi nginx:latest

3.3 容器操作

# 创建并启动容器
docker run -d --name mynginx -p 80:80 nginx

# 列出运行中的容器
docker ps

# 列出所有容器
docker ps -a

# 停止容器
docker stop mynginx

# 启动容器
docker start mynginx

# 删除容器
docker rm mynginx

4. Docker网络配置

4.1 网络类型

  • bridge:默认网络驱动程序
  • host:容器使用主机网络
  • none:禁用所有网络
  • overlay:用于Docker Swarm服务
# 创建自定义网络
docker network create mynetwork

# 列出网络
docker network ls

# 查看网络详情
docker network inspect mynetwork

5. 数据管理

5.1 数据卷(Volumes)

# 创建数据卷
docker volume create mydata

# 使用数据卷运行容器
docker run -d \
  --name devtest \
  -v mydata:/app \
  nginx:latest

5.2 绑定挂载(Bind Mounts)

# 将主机目录挂载到容器
docker run -d \
  --name webserver \
  -v /src/webapp:/usr/share/nginx/html \
  nginx:latest

6. Docker Compose基础

# docker-compose.yml示例
version: '3'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example

7. 最佳实践

  1. 安全性建议

    • 使用非root用户运行Docker守护进程
    • 定期更新Docker版本
    • 使用安全的基础镜像
  2. 性能优化

    • 合理使用多阶段构建
    • 优化镜像大小
    • 使用合适的存储驱动
  3. 开发建议

    • 使用.dockerignore文件
    • 编写清晰的Dockerfile
    • 合理使用缓存机制

8. 常见问题排查

8.1 容器启动失败

# 查看容器日志
docker logs container_id

# 查看容器详细信息
docker inspect container_id

8.2 存储空间问题

# 清理未使用的对象
docker system prune

# 查看Docker使用的磁盘空间
docker system df

8.3 网络连接问题

# 检查容器网络
docker network inspect bridge

# 进入容器进行网络诊断
docker exec -it container_id /bin/bash
Orochi
Authors
充满活力和热情的软件从业者
在不同的公司和项目中工作过,担任过各种职务,做过各类项目(如企业站点、内部中台、边缘设备服务、客户端开发、大模型训练、大模型适配和任务调度等等),广泛的视野和经验.