Docker容器化环境搭建全流程从安装到配置

哈喽,大家好,我是左手python!

Linux 是 Docker 的主要运行环境,支持大多数流行的 Linux 发行版。以下是基于 Ubuntu/Debian 系统的安装步骤:

  1. 更新包索引
    更新系统的包索引以确保可以访问最新的软件包:

    sudo apt update
    
  2. 安装前置依赖
    安装必要的依赖包,以便可以通过 HTTPS 添加 Docker 存储库:

    sudo apt install apt-transport-https ca-certificates curl software-properties-common
    
  3. 添加 Docker 官方存储库
    添加 Docker 的官方存储库地址:

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    echo "deb [arch=$(dpkg --print-architecture) 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
    
  4. 安装 Docker 引擎
    更新包索引后,安装 Docker 引擎、containerd 和 Docker Compose:

    sudo apt update
    sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
  5. 验证安装
    安装完成后,验证 Docker 是否正确安装。运行以下命令,应该可以看到 Docker 的版本信息:

    docker --version
    
  6. 运行测试容器
    运行一个测试容器以确保 Docker 正常工作:

    sudo docker run -it --rm hello-world
    
在 Windows 上安装 Docker

Windows 用户可以通过 Docker Desktop 来安装和使用 Docker。以下是安装步骤:

  1. 下载 Docker Desktop
    访问 Docker 官方网站(https://www.docker.com/get-docker/),下载适用于 Windows 的 Docker Desktop 安装包。

  2. 安装 Docker Desktop
    双击下载的安装包,按照提示完成安装。安装完成后,Docker Desktop 会自动启动。

  3. 验证安装
    打开 PowerShell 或命令提示符,运行以下命令验证 Docker 是否安装成功:

    docker --version
    
  4. 运行测试容器
    运行以下命令,验证 Docker 容器是否可以正常运行:

    docker run -it --rm hello-world
    

Docker 的基本概念与常用命令

Docker 的核心概念
  1. 镜像(Image)
    Docker 镜像是一个只读的模板,包含了构建 Docker 容器的所有必要信息。镜像可以通过 Dockerfile 定义,并且可以在 Docker Hub 等镜像仓库中存储和共享。

  2. 容器(Container)
    Docker 容器是镜像的运行实例。容器是一个隔离的环境,包含了应用程序及其依赖项。容器之间是互相隔离的,但它们共享同一个宿主机的内核。

  3. 仓库(Repository)
    Docker 仓库是存储 Docker 镜像的位置。Docker Hub 是 Docker 官方提供的公共仓库,用户可以在其中查找和下载各种镜像。

  4. 卷(Volume)
    Docker 卷是用于持久化容器数据的机制。卷可以在容器之间共享,并且可以在容器删除后保留数据。

  5. 网络(Network)
    Docker 网络用于容器之间的通信。Docker 提供了多种网络驱动,包括桥接网络、主机网络和覆盖网络。

常用 Docker 命令
  1. 镜像相关命令

    • docker images:列出本地的 Docker 镜像。
    • docker pull <image-name>:从 Docker Hub 拉取镜像。
    • docker push <image-name>:将镜像推送到 Docker Hub。
    • docker rmi <image-name>:删除本地的 Docker �镜像。
  2. 容器相关命令

    • docker ps:列出正在运行的容器。
    • docker run -it --rm <image-name>:运行一个新的容器,并进入容器的交互式 shell。
    • docker stop <container-id>:停止一个容器。
    • docker rm <container-id>:删除一个容器。
    • docker logs <container-id>:查看容器的日志。
  3. 卷相关命令

    • docker volume create:创建一个新的卷。
    • docker volume ls:列出所有的卷。
    • docker volume rm <volume-name>:删除一个卷。
  4. 网络相关命令

    • docker network create:创建一个新的网络。
    • docker network ls:列出所有的网络。
    • docker network rm <network-name>:删除一个网络。

容器化应用开发

编写 Dockerfile

Dockerfile 是一个文本文件,用于定义 Docker 镜像的构建过程。以下是一个示例 Dockerfile:

# 使用官方 Python 镜像作为基础镜像
FROM python:3.9-slim

# 设置工作目录
WORKDIR /app

# 复制当前目录的 requirements.txt 到工作目录
COPY requirements.txt .

# 安装依赖项
RUN pip install --no-cache-dir -r requirements.txt

# 复制应用代码
COPY . .

# 暴露端口
EXPOSE 8000

# 设置环境变量
ENV PYTHONUNBUFFERED=1

# 运行命令
CMD ["python", "app.py"]
构建 Docker 镜像

在编写好 Dockerfile 后,可以使用以下命令构建 Docker 镜像:

docker build -t my-python-app .
运行 Docker 容器

构建完成后,可以使用以下命令运行容器:

docker run -p 8000:8000 my-python-app

持久化数据管理

使用 Volume 持久化数据

Docker 容器中的数据在容器停止或删除后会丢失。为了持久化数据,可以使用 Docker 的 Volume 功能。以下是创建和挂载 Volume 的示例:

  1. 创建 Volume

    docker volume create my-volume
    
  2. 运行容器并挂载 Volume

    docker run -it --rm -v my-volume:/app/data my-python-app
    
使用 Bind Mount 挂载主机目录

除了 Volume,Docker 还支持 Bind Mount,即将主机上的目录挂载到容器内。以下是使用 Bind Mount 的示例:

docker run -it --rm -v $(pwd)/data:/app/data my-python-app

Docker 网络配置

Docker 的网络模式

Docker 提供了以下几种网络模式:

  1. bridge(桥接网络)
    这是 Docker 的默认网络模式。容器在桥接网络中运行,可以通过 Docker 主机的 IP 地址和不同的端口进行通信。

  2. host(主机网络)
    在主机网络模式下,容器将使用主机的网络栈,容器和主机共享相同的 IP 地址和端口。

  3. none(无网络)
    在无网络模式下,容器将没有网络连接,适用于不需要网络通信的场景。

  4. overlay(覆盖网络)
    覆盖网络用于 Swarm 集群,允许多个 Docker 主机上的容器之间进行通信。

自定义网络

以下是创建自定义网络的示例:

  1. 创建网络

    docker network create my-network
    
  2. 运行容器并连接到自定义网络

    docker run -it --rm --net my-network my-python-app
    

Docker 安全与优化

Docker 安全
  1. 运行时安全

    • 避免使用 --privileged 标志,因为这会授予容器过多的权限。
    • 使用非 root 用户运行容器。
    • 定期更新 Docker 和依赖项以修复安全漏洞。
  2. 镜像安全

    • 使用官方镜像,避免使用不可信的第三方镜像。
    • 定期扫描镜像中的漏洞。
  3. 数据安全

    • 使用加密的卷来存储敏感数据。
    • 避免在 Dockerfile 中硬编码敏感信息。
Docker 优化
  1. 镜像优化

    • 使用多阶段构建(Multi-Stage Build)来减小镜像体积。
    • 避免在镜像中安装不必要的依赖项。
  2. 资源限制

    • 使用 --cpuset-cpus 限制容器使用的 CPU 核心。
    • 使用 --memory 限制容器使用的内存。
  3. 日志管理

    • 配置 Docker 日志驱动,将日志输出到文件或其他日志管理工具。
    • 定期清理日志文件以释放磁盘空间。
查看容器日志

Docker 提供了 docker logs 命令来查看容器的日志。以下是一些常用的日志查看命令:

  1. 查看实时日志

    docker logs -f <container-id>
    
  2. 查看最新的日志

    docker logs --tail=100 <container-id>
    
  3. 查看日志的时间戳

    docker logs --timestamps <container-id>
    

Docker 扩展与集群管理

Docker Compose

Docker Compose 是用于定义和运行多容器 Docker 应用的工具。通过一个 YAML 文件(docker-compose.yml),可以定义应用的各个服务及其配置。

以下是一个示例的 docker-compose.yml 文件:

version: '3'

services:
  web:
    build: .
    ports:
      - "8000:8000"
    depends_on:
      - db
    environment:
      - DATABASE_URL=postgres://user:password@db:5432/database

  db:
    image: postgres:13
    volumes:
      - postgres_data:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=database

volumes:
  postgres_data:
Docker Swarm

Docker Swarm 是 Docker 的集群管理工具,用于管理多个 Docker 主机上的容器。以下是初始化 Swarm 集群的步骤:

  1. 初始化 Swarm 集群

    docker swarm init
    
  2. 加入 Swarm 集群
    在其他节点上运行以下命令:

    docker swarm join --token <token> <manager-ip>:2377
    
  3. 部署服务
    使用 docker service 命令部署服务:

    docker service create --name my-service --replicas=3 my-image
    
  4. 查看服务状态

    docker service ls
    
  5. 扩展服务

    docker service scale my-service=5
    
  6. 更新服务

    docker service update --image new-image:latest my-service
    
  7. 删除服务

    docker service rm my-service
    

我是左手python,感谢各位童鞋的点赞、收藏,我们下期更精彩!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

python自动化工具

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值