Docker 是一个开源的平台,用于创建、部署和运行容器化的应用程序。通过容器技术,开发者能够确保应用程序在任何计算环境下的行为一致。以下是 Docker 的基础知识和操作演示:


一、Docker 的基本概念

  1. 容器(Container)
    容器是一个轻量级的、独立运行的软件单元,它包含了运行应用程序所需的一切环境(如代码、运行时、工具、系统库等)。容器与主机系统共享同一内核,但彼此之间和主机系统相对隔离。

  2. 镜像(Image)
    镜像是一个文件系统模板,用于创建容器。它可以理解为容器的“蓝本”。

  3. Docker Engine
    Docker Engine 是运行 Docker 的核心。

  4. Docker Hub
    Docker Hub 是一个云端的镜像仓库,允许用户上传和下载镜像。


二、安装 Docker

Docker 支持多平台,包括 Linux、MacOS 和 Windows。以下是安装步骤的简要说明:

# 以 Ubuntu 为例,安装 Docker:
sudo apt-get update
sudo apt-get install -y docker.io
# 启动 Docker 引擎:
sudo systemctl start docker
# 配置 Docker 为开机启动:
sudo systemctl enable docker

安装完成后,可以通过 docker --version 检查 Docker 是否安装成功。


三、Docker 的基本命令

  1. 运行容器
    使用 Docker 的 run 命令可以从指定镜像创建并启动一个容器。

    docker run hello-world
    

    解释:

    • 该命令将从 Docker Hub 下载 hello-world 镜像,然后运行一个容器并输出简单的欢迎信息。
  2. 查看运行中的容器

    docker ps
    

    如果需要查看所有容器(包括停止的),使用:

    docker ps -a
    
  3. 拉取镜像

    docker pull nginx
    

    这将从 Docker Hub 下载 nginx 镜像。

  4. 停止容器

    docker stop <容器ID或容器名称>
    
  5. 删除容器

    docker rm <容器ID或容器名称>
    
  6. 删除镜像

    docker rmi <镜像ID或镜像名称>
    

四、创建和运行一个简单的容器化应用

  1. 准备应用代码
    创建一个简单的 Hello World Web 服务。新建文件 app.py:

    from flask import Flask
    app = Flask(__name__)
    
    @app.route('/')
    def hello_world():
        return "Hello, Docker!"
    
    if __name__ == "__main__":
        app.run(debug=True, host='0.0.0.0')
    
  2. 创建 Dockerfile
    在同一目录下创建一个名为 Dockerfile 的文件:

    # 使用基础镜像
    FROM python:3.9-slim
    # 设置工作目录
    WORKDIR /app
    # 复制当前目录内容到容器的 /app 文件夹中
    COPY . /app
    # 安装依赖
    RUN pip install flask
    # 设置运行命令
    CMD ["python", "app.py"]
    
  3. 构建镜像
    执行以下命令,构建一个名为 my-flask-app 的镜像:

    docker build -t my-flask-app .
    
  4. 运行容器

    docker run -p 5000:5000 my-flask-app
    

    然后打开浏览器访问 http://localhost:5000,应该可以看到 “Hello, Docker!”。


五、其他常见操作

  1. 进入运行中的容器

    docker exec -it <容器ID或容器名称> /bin/bash
    
  2. 查看容器的日志

    docker logs <容器ID或容器名称>
    
  3. 将容器生成镜像
    运行一个容器后,可以将其保存为镜像以便日后复用:

    docker commit <容器ID或容器名称> new_image_name
    

通过上述步骤,你已掌握 Docker 的基础操作和如何容器化一个应用程序。Docker 在开发、测试和部署中极其高效,用它可以实现一致性、多平台性和快速交付的目标。

更多推荐