本文详细介绍了Docker部署资料,包括Docker的基础概念、环境搭建步骤、镜像与容器的操作方法、常用命令详解以及实战部署案例。此外,还涵盖了Docker Compose的入门知识和安全与优化建议,帮助读者轻松掌握Docker部署技巧。文中提供了丰富的示例和命令,确保读者能够全面理解和应用Docker部署资料。
Docker简介与环境搭建Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。Docker 采用 Go 语言编写,依托于 Linux 的 cgroups 和 Namespaces 等技术,能够将应用及其依赖的服务、库和配置文件等封装成一个轻量级的、可移植的、自包含的容器,以便更容易在不同的环境中运行。
在开始使用 Docker 之前,首先需要确保系统支持 Docker。Docker 支持多种操作系统,包括但不限于 Ubuntu、CentOS、Debian、macOS 和 Windows。
以 Ubuntu 为例,安装 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 官方软件源 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" # 更新包列表 sudo apt-get update # 安装 Docker sudo apt-get install docker-ce docker-ce-cli containerd.io # 启动 Docker 服务 sudo systemctl start docker # 设置 Docker 服务开机自启 sudo systemctl enable docker
# 检查 Docker 是否安装成功 docker --version # 运行一个简单的 Docker 容器 sudo docker run hello-worldDocker镜像与容器基础
Docker Hub 是官方的 Docker 镜像仓库,提供了大量的官方和社区镜像。以下载 ubuntu
镜像为例:
docker pull ubuntu
Docker 镜像是基于 Dockerfile 构建的,Dockerfile 是一个文本文件,它包含了构建 Docker 镜像所需的所有命令和参数。以构建一个简单的 ubuntu
镜像为例,编写 Dockerfile
:
# 基础镜像 FROM ubuntu:latest # 设置工作目录 WORKDIR /app # 安装必要的工具和服务 RUN apt-get update && apt-get install -y \ python3 \ python3-pip # 复制应用文件到镜像中 COPY . /app # 设置环境变量 ENV NAME World # 开放端口 EXPOSE 8080 # 启动应用 CMD ["python3", "app.py"]
使用 Dockerfile
构建镜像:
# 构建镜像 docker build -t my-ubuntu-app . # 列出镜像 docker images
创建容器时可以指定从哪个镜像创建,使用容器的名称,以及是否在容器中运行应用。
# 创建并运行容器 docker run -it --name my-ubuntu-container my-ubuntu-app
在容器中运行 shell 命令,可以使用 docker exec
命令。
# 进入容器 docker exec -it my-ubuntu-container /bin/bash
可以使用 docker stop
命令停止容器,也可以使用 docker kill
强制停止容器。
# 停止容器 docker stop my-ubuntu-container # 强制停止容器 docker kill my-ubuntu-container
使用 docker rm
命令删除容器。
# 删除容器 docker rm my-ubuntu-containerDocker常用命令详解
docker images
docker inspect
docker rmi
docker image prune
docker images
docker inspect ubuntu
docker rmi ubuntu
docker image prune
docker ps -a
docker exec -it
docker start
docker stop
docker rm
docker ps -a
docker exec -it my-ubuntu-container /bin/bash
docker start my-ubuntu-container
docker stop my-ubuntu-container
docker rm my-ubuntu-container
docker network
docker volume
docker network create
docker network rm
docker network ls
docker volume ls
docker network create my-network
docker network rm my-networkDocker部署实战
部署一个简单的 Python Flask 应用来演示如何使用 Docker 部署 Web 应用。
在本地创建一个简单的 Flask 应用,代码如下:
from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello, Docker!' if __name__ == '__main__': app.run(host='0.0.0.0', port=8080)
保存为 app.py
。
构建 Docker 镜像所需的 Dockerfile
如下:
# 使用官方 python 基础镜像 FROM python:3.7-slim # 设置工作目录 WORKDIR /app # 复制应用代码到镜像 COPY . /app # 安装应用依赖 RUN pip install -r requirements.txt # 设置环境变量 ENV FLASK_APP app.py ENV FLASK_RUN_HOST 0.0.0.0 ENV FLASK_RUN_PORT 8080 # 开放端口 EXPOSE 8080 # 启动应用 CMD ["flask", "run"]
# 构建镜像 docker build -t my-flask-app . # 运行容器 docker run -d -p 8080:8080 --name my-flask-container my-flask-app
通过浏览器访问 http://localhost:8080
,可以看到 Flask 应用已经成功运行。
以部署 MySQL 数据库为例。
docker pull mysql:5.7
# 创建并运行容器 docker run --name my-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -d mysql:5.7
# 进入 MySQL 容器 docker exec -it my-mysql mysql -u root -p
以部署 Jenkins CI 为例。
docker pull jenkins/jenkins:lts
# 创建并运行容器 docker run -d --name my-jenkins -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts
通过浏览器访问 http://localhost:8080
,按照页面提示完成 Jenkins 的安装和配置。
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过一个名为 docker-compose.yml
的文件来配置应用程序的服务,然后使用一个命令来启动、停止或管理所有的服务。
docker-compose.yml
文件的结构如下:
version: '3.9' services: web: image: nginx:latest ports: - "8080:80" db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: example volumes: - db_data:/var/lib/mysql volumes: db_data:
以下是一个简单的多容器应用的 docker-compose.yml
文件示例,包含一个 Nginx 代理和一个 MySQL 数据库。
version: '3.9' services: web: image: nginx:latest ports: - "8080:80" depends_on: - db volumes: - ./nginx.conf:/etc/nginx/nginx.conf db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: example volumes: - db_data:/var/lib/mysql volumes: db_data:
# 构建并运行应用 docker-compose up -d # 停止应用 docker-compose stop # 删除应用和数据卷 docker-compose down --volumesDocker安全与优化建议
# 限制容器的 CPU 和内存 docker run --cpu-shares=512 --memory="512m" my-app
docker image prune
和 docker system prune
命令清理未使用的镜像和数据卷。# 清理未使用的镜像和数据卷 docker image prune docker system prune
# 合理组织 Dockerfile FROM ubuntu:latest WORKDIR /app COPY . /app RUN apt-get update && apt-get install -y python3 python3-pip CMD ["python3", "app.py"]
# 限制容器的 CPU 和内存资源 docker run --cpu-shares=512 --memory="512m" my-app
通过以上内容的学习,你已经掌握了 Docker 的基础概念、环境搭建、镜像与容器的操作、常见命令、部署实战、Docker Compose 的入门知识以及安全与优化建议。希望这些内容能帮助你在实际项目中更好地使用 Docker,提高工作效率和应用的可靠性。