Docker容器

Docker课程:新手入门与初级应用教程

本文主要是介绍Docker课程:新手入门与初级应用教程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
概述

本文详细介绍了Docker课程的基础知识和应用方法,涵盖了Docker的安装、基本概念、常用命令、创建与管理Docker镜像,以及网络配置和数据卷的使用。通过实际案例演示了如何使用Docker来运行Web应用和数据库服务,帮助读者快速掌握Docker课程中的关键技能和操作步骤。

Docker课程:新手入门与初级应用教程
Docker简介与安装

Docker是什么

Docker 是一个开源的容器化平台,它通过提供一致的开发、构建、部署和管理应用程序的环境,使得应用程序能够在几乎任何环境中运行。Docker 通过在操作系统层实现虚拟化,使用称为容器的技术来封装应用程序及其依赖项,这样可以确保应用程序在不同的环境中具有相同的行为。

Docker的优势

Docker 具有以下主要优点:

  • 可移植性:应用程序可以在各种不同的操作系统环境之间轻松移植。
  • 一致性:开发环境和生产环境保持一致,避免“在我的机器上运行良好”的问题。
  • 资源利用率:由于容器使用操作系统级别的虚拟化,它们比传统的虚拟机更加轻量级,对系统的资源消耗更低。
  • 快速部署:容器可以瞬间启动和停止,使得应用部署更加迅速。
  • 版本控制:镜像可以被创建、存储和分发,类似于软件版本控制。

Docker的安装方法

Docker 的安装过程依赖于你的操作系统。以下是如何在不同的操作系统上安装 Docker 的简要说明:

安装 Docker Community Edition (CE)

  • Linux: 你可以通过以下命令安装 Docker。

    # 更新包列表
    sudo apt-get update
    # 安装 Docker
    sudo apt-get install docker-ce docker-ce-cli containerd.io
    # 验证 Docker 是否安装成功
    sudo docker --version
  • Windows: 你可以从 Docker 官方网站直接下载 Windows 版本的 Docker 安装包。

    • Docker for Windows 安装包下载页面
    • 按照下载页面上的指示完成安装。
  • macOS: Docker 也提供了一个方便的 macOS 安装包。
    • Docker for Mac 安装包下载页面
    • 按照下载页面上的指示完成安装。

安装完成后,你可以通过命令行验证 Docker 是否正确安装:

docker --version
Docker基本概念

镜像(Image)

镜像是 Docker 容器的基础。镜像可以看作是一组文件的集合,其中包含了应用程序的依赖、运行环境等所有所需信息。镜像可以通过 Docker 的命令行工具创建,或者从 Docker Hub(一个公共的注册表仓库)下载。

创建一个新的镜像

# 基于官方的 Ubuntu 镜像创建一个新的镜像
docker pull ubuntu:latest
docker run -it ubuntu:latest /bin/bash

容器(Container)

容器是镜像的运行实例。容器提供了独立的运行环境,包括操作系统、库、文件系统等。每个容器都是从一个镜像创建的,并且可以独立启动、停止、删除。

启动一个新的容器

# 启动一个新的 Ubuntu 容器
docker run -it ubuntu:latest /bin/bash

仓库(Repository)

仓库是一个存放镜像的地方,可以理解为一个大仓库,里面存放了各种各样的镜像。Docker Hub 是一个官方的公共镜像仓库,用户可以从 Docker Hub 下载官方镜像,也可以上传自己构建的镜像到 Docker Hub。

下载官方镜像

# 从 Docker Hub 下载 Ubuntu 的最新镜像
docker pull ubuntu:latest
Docker常用命令

搜索镜像

用户可以通过 Docker Hub 搜索镜像,并根据需要下载到本地。例如,搜索 MySQL 镜像:

docker search mysql

拉取镜像

用户可以使用 docker pull 命令下载已有的镜像。例如,下载官方 MySQL 镜像:

docker pull mysql:latest

创建容器

用户可以使用 docker run 命令来创建一个新的容器并启动它。例如,创建一个新的 MySQL 容器:

docker run -d --name my-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql:latest

参数说明

  • -d:以分离模式运行容器,即后台运行
  • --name my-mysql:指定容器的名字
  • -e MYSQL_ROOT_PASSWORD=my-secret-pw:设置环境变量,这里设置 MySQL 的 root 密码
  • mysql:latest:指定使用的镜像名

运行容器

用户可以使用 docker start 命令启动已经创建的容器。例如,启动之前创建的 MySQL 容器:

docker start my-mysql

交互式登录容器

如果需要进入容器执行命令,可以使用 docker exec 命令进入正在运行的容器。例如,进入 MySQL 容器并执行 MySQL 命令:

docker exec -it my-mysql mysql -u root -p
创建与管理Docker镜像

编写Dockerfile

Dockerfile 是一个文本文件,包含了构建 Docker 镜像的所有指令。它描述了如何将一个基础镜像逐步构建为最终的应用镜像。

Dockerfile示例

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

# 设置工作目录
WORKDIR /app

# 将当前目录下的 Python 应用代码复制到容器中
COPY . /app

# 设置环境变量
ENV PYTHONUNBUFFERED=1

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

# 暴露容器运行时使用的端口
EXPOSE 8000

# 定义运行容器时要执行的命令
CMD ["python", "app.py"]

构建Docker镜像

使用 docker build 命令来构建 Docker 镜像。例如,使用上面的 Dockerfile 构建一个新的镜像:

docker build -t my-python-app:latest .

参数说明

  • -t:为构建的镜像指定标签
  • my-python-app:latest:镜像名称和版本标签
  • .:Dockerfile 所在的目录

推送镜像到仓库

使用 docker push 命令将镜像上传到 Docker Hub 或其他私有仓库。

推送镜像

docker push my-python-app:latest
Docker网络与数据卷

Docker网络配置

Docker 提供了多种网络模式来连接容器,常见的有 hostbridgeoverlay 网络等。

创建并连接容器到一个自定义网络

# 创建一个自定义网络
docker network create my-net

# 创建并连接到该网络的容器
docker run -d --name my-nginx --network my-net -p 8080:80 nginx:latest

参数说明

  • docker network create my-net:创建一个新的网络,命名为 my-net
  • --network my-net:将容器连接到指定的网络
  • -p 8080:80:将容器内的 80 端口映射到主机的 8080 端口

数据卷的使用

数据卷是 Docker 容器的数据持久化解决方案。数据卷可以存储容器内的数据,并且这些数据不会随着容器的删除或重建而丢失。

创建并挂载数据卷

# 创建一个名为 my-volume 的数据卷
docker volume create my-volume

# 启动一个容器,并将本地数据卷挂载到容器内
docker run -d --name my-nginx -v my-volume:/data nginx:latest

参数说明

  • docker volume create my-volume:创建一个新的数据卷,命名为 my-volume
  • -v my-volume:/data:将容器内的 /data 目录挂载到数据卷 my-volume
Docker实践案例

运行Web应用

你可以使用 Docker 来运行一个简单的 Python Flask Web 应用。以下是一个简化的示例。

创建 Flask 应用

# app.py
from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello, World!"

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=8080)

创建 Dockerfile

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

# 设置工作目录
WORKDIR /app

# 将当前目录下的 Python 应用代码复制到容器中
COPY . /app

# 设置环境变量
ENV FLASK_APP=app.py

# 暴露容器运行时使用的端口
EXPOSE 8080

# 定义运行容器时要执行的命令
CMD ["flask", "run", "--host=0.0.0.0"]

构建并运行容器

# 构建 Docker 镜像
docker build -t my-flask-app:latest .

# 运行 Docker 容器
docker run -d --name my-flask-app -p 8080:8080 my-flask-app:latest

运行数据库服务

下面是一个 MySQL 数据库服务的 Docker 实现。

构建 MySQL 数据库容器

# 下载 MySQL 镜像
docker pull mysql:latest

# 启动 MySQL 容器
docker run -d --name my-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 mysql:latest

参数说明

  • mysql:latest:使用 mysql:latest 镜像启动容器
  • -e MYSQL_ROOT_PASSWORD=my-secret-pw:设置 MySQL 的 root 密码
  • 3306:3306:将容器内的 3306 端口映射到主机的 3306 端口

访问 MySQL 数据库

你可以使用 mysql 命令来访问 MySQL 数据库:

# 进入 MySQL 容器
docker exec -it my-mysql mysql -u root -p

# 在 MySQL 中创建一个新的数据库
CREATE DATABASE mydb;
这篇关于Docker课程:新手入门与初级应用教程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!