一、Docker简介

Docker是一个开源的应用容器引擎,可以让开发者打包他们的应用以及应用的依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。

1.1 Docker的核心概念

  • 容器(Container):容器是一个运行在操作系统上的隔离环境,它包含了应用程序及其所有必需的组件,如代码、运行时环境、库等。
  • 镜像(Image):镜像是一个只读模板,用于创建容器。它包含了创建容器所需的所有文件和配置。

二、Docker安装与环境配置

2.1 安装Docker

以下是在Linux(如Ubuntu)上安装Docker的步骤:

  1. 卸载旧版Docker:
sudo apt-get remove docker docker-engine docker.io containerd runc
  1. 安装Docker:
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
  1. 验证Docker安装:
sudo docker --version

2.2 验证Docker安装

在终端中输入以下命令,查看Docker版本信息:

sudo docker --version

三、Docker的基本使用

3.1 拉取并运行镜像

以下是一个拉取MySQL镜像并运行容器的示例:

sudo docker pull mysql
sudo docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql

3.2 常用Docker命令

以下是一些常用的Docker命令:

  • docker pull [image_name]:拉取镜像。
  • docker run [options] [image_name]:运行容器。
  • docker ps:查看运行中的容器。
  • docker stop [container_id]:停止容器。
  • docker rm [container_id]:删除容器。

3.3 Docker的工作流程

  1. 拉取镜像:从Docker Hub或其他仓库拉取所需的镜像。
  2. 运行容器:使用拉取的镜像创建并启动容器。
  3. 管理容器:对容器进行操作,如启动、停止、删除等。

四、Dockerfile的构建与解释

4.1 构建Docker镜像

以下是一个简单的Dockerfile示例:

FROM nginx
COPY . /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

4.2 运行Docker容器

使用以下命令运行基于上述Dockerfile构建的镜像:

sudo docker build -t my_nginx .
sudo docker run -d --name my_nginx -p 8080:80 my_nginx

五、Docker Compose:管理多容器应用

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

5.1 Docker Compose文件示例

以下是一个简单的Docker Compose文件示例:

version: '3'
services:
  web:
    image: nginx
    ports:
      - "8080:80"
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: example

5.2 启动多容器应用

使用以下命令启动基于上述Docker Compose文件定义的多容器应用:

sudo docker-compose up -d

六、Docker实战项目:构建一个简单的Web应用

以下是一个使用Docker构建简单的Web应用的步骤:

  1. 创建一个Python Web应用(例如,使用Flask)。
  2. 创建一个Dockerfile,用于构建应用镜像。
  3. 使用Docker Compose启动Web应用容器。

6.1 创建Flask应用

以下是一个简单的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)

6.2 编写requirements.txt

在项目根目录下创建一个名为requirements.txt的文件,并添加以下内容:

Flask==1.1.2

6.3 构建镜像并运行容器

创建一个名为Dockerfile的文件,并添加以下内容:

FROM python:3.8-slim
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
CMD ["python", "app.py"]

使用以下命令构建镜像并运行容器:

sudo docker build -t my_webapp .
sudo docker run -d --name my_webapp -p 8080:80 my_webapp

七、总结

通过本文的学习,你将掌握Docker的基本概念、安装、使用、构建和部署。希望这些知识能帮助你打造一个高效的实验环境,并在实际项目中应用Docker。