Docker容器

Docker入门:新手必学的容器技术基础

本文主要是介绍Docker入门:新手必学的容器技术基础,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
概述

本文介绍了Docker入门的基础知识,包括Docker的简介、安装方法、镜像与容器的概念以及常用命令。文章还详细讲解了如何使用Dockerfile构建镜像和运行容器,并提供了网络与存储的相关配置示例。通过本文的学习,读者可以全面了解和掌握Docker入门所需的各项技能。

Docker入门:新手必学的容器技术基础
Docker简介与安装

Docker是什么

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

Docker的用途

Docker 主要用于以下方面:

  • 应用隔离:使用 Docker,你可以将应用和其依赖环境隔离开来,避免应用之间的冲突。
  • 快速部署:Docker 通过容器化的方式使得应用的部署变得快速而简单。
  • 版本控制:Docker 镜像具有版本控制的能力,可以轻松地回滚到之前的版本。
  • 移植性:Docker 容器可以在任何支持 Docker 的平台上运行,从而提供跨平台的兼容性。

Docker的架构

Docker 架构主要包括以下几个组成部分:

  • Docker 守护进程 (Docker Daemon):Docker 守护进程负责管理 Docker 镜像、容器、网络等资源。
  • Docker 客户端 (Docker CLI):Docker 客户端是用户与 Docker 守护进程交互的接口。用户可以通过命令行工具(如 docker 命令)来控制 Docker 守护进程。
  • 镜像 (Image):镜像是 Docker 容器的模板。它包含运行一个应用程序所需的所有文件、库和资源。
  • 容器 (Container):容器是镜像的运行实例。每个容器都是隔离的,拥有自己的文件系统、进程和网络接口。
  • 仓库 (Registry):仓库是存储 Docker 镜像的中心。Docker Hub 是官方提供的仓库,用户可以上传和下载镜像。

Docker的安装方法

Windows 安装

  1. 访问 Docker 官方网站(https://www.docker.com/products/docker-desktop)下载 Docker Desktop for Windows 的安装包。
  2. 运行安装包,按照安装向导进行安装。
  3. 安装完成后,启动 Docker Desktop。

Linux 安装

  1. 更新系统包:

    sudo apt-get update
    sudo apt-get upgrade
  2. 安装 Docker:

    sudo apt-get install docker.io
  3. 验证 Docker 是否安装成功:

    docker --version
  4. 启动 Docker 服务:
    sudo systemctl start docker
    sudo systemctl enable docker

macOS 安装

  1. 访问 Docker 官方网站(https://www.docker.com/products/docker-desktop)下载 Docker Desktop for Mac 的安装包。
  2. 运行安装包,按照安装向导进行安装。
  3. 安装完成后,启动 Docker Desktop。
Docker镜像与容器

什么是Docker镜像

Docker 镜像是一个包含操作系统、应用、配置文件和其他依赖项的只读模板。镜像包含了应用程序运行所需的一切环境,包括代码、运行时、库、环境变量和配置文件。镜像通过 docker build 命令创建,之后可以被分享和复制。

什么是Docker容器

Docker 容器是从 Docker 镜像创建的运行实例。容器是隔离的执行环境,可以运行在任何安装了 Docker 的机器上。容器内部包含了一套完整的运行时环境,包括文件系统、库、环境变量和配置文件等。

如何创建镜像

创建 Docker 镜像有几种常见方法,最常用的是使用 Dockerfile 文件定义镜像的构建过程。

使用 Dockerfile 创建镜像

假设我们要创建一个包含 Python 3 的 Docker 镜像。首先,创建一个 Dockerfile 文件:

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

# 设置工作目录
WORKDIR /app

# 复制当前目录下的 app.py 文件到容器内的 /app 目录下
COPY ./app.py /app

# 安装所需的 Python 库
RUN pip install --no-cache-dir -r requirements.txt

# 设置容器启动时运行的命令
CMD ["python", "app.py"]

然后,在 Dockerfile 所在目录执行以下命令来构建镜像:

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

上述命令会根据 Dockerfile 构建镜像,并将其命名为 my-python-app,标签为 latest

如何启动容器

使用 docker run 命令来启动容器。假设你已经有了一个名为 my-python-app:latest 的镜像。

docker run -d --name my-python-container my-python-app:latest

上述命令会启动一个容器,并将其命名为 my-python-container-d 参数表示以分离模式(后台运行)启动容器。

Docker常用命令

常用命令介绍

  • docker run:启动一个新的容器。
  • docker ps:列出正在运行的容器。
  • docker ps -a:列出所有容器,包括已停止的。
  • docker stop:停止一个正在运行的容器。
  • docker rm:删除一个已停止的容器。
  • docker rmi:删除一个镜像。
  • docker images:列出所有本地镜像。
  • docker logs:查看容器的日志。
  • docker exec:在容器内运行命令。

如何查看镜像

使用 docker images 命令可以查看所有本地镜像:

docker images

输出结果会显示镜像的名称、标签、镜像ID以及创建时间等信息。

如何运行容器

使用 docker run 命令来运行一个新的容器。假设你有一个名为 nginx:latest 的镜像:

docker run -d --name my-nginx-container nginx:latest

上述命令会启动一个名为 my-nginx-container 的容器,并将其以分离模式(后台运行)运行。

如何删除容器

使用 docker rm 命令来删除容器。假设你要删除名为 my-python-container 的容器:

docker rm my-python-container

如果容器正在运行,需要先停止容器:

docker stop my-python-container
docker rm my-python-container
Dockerfile编写入门

Dockerfile的作用

Dockerfile 是一个文本文件,用于描述如何构建 Docker 镜像。它包含了一组指令,这些指令告诉 Docker 如何构造一个镜像。

Dockerfile的编写规则

Dockerfile 的结构如下:

  1. 基础镜像:使用 FROM 指令指定一个基础镜像。
  2. 维护者信息:使用 MAINTAINER 指令指定镜像的维护者。
  3. 环境变量:使用 ENV 指令设置环境变量。
  4. 工作目录:使用 WORKDIR 指令设置工作目录。
  5. 执行命令:使用 RUN 指令执行命令。
  6. 复制文件:使用 COPYADD 指令复制文件。
    7..
  7. 设置镜像启动命令:使用 CMDENTRYPOINT 指令设置容器启动时运行的命令。
  8. 设置暴露端口:使用 EXPOSE 指令声明容器运行时会监听的端口。

常用的Dockerfile指令

  • FROM:指定基础镜像。
  • WORKDIR:设置工作目录。
  • COPYADD:复制文件或目录到镜像中。
  • RUN:执行命令。
  • CMDENTRYPOINT:设置容器启动时运行的命令。
  • EXPOSE:声明容器运行时会监听的端口。

实例解析:创建简单的Dockerfile

假设我们要创建一个包含 Nginx 的 Docker 镜像,并在其中运行一个简单的 Nginx 服务。

  1. 创建一个 Dockerfile 文件:
# 使用官方 Nginx 基础镜像
FROM nginx:latest

# 设置工作目录
WORKDIR /usr/share/nginx/html

# 复制本地文件到镜像内
COPY ./index.html /usr/share/nginx/html/index.html

# 暴露80端口
EXPOSE 80

# 启动服务
CMD ["nginx", "-g", "daemon off;"]
  1. 构建镜像:
docker build -t my-nginx-app:latest .
  1. 运行容器:
docker run -d --name my-nginx-container -p 8080:80 my-nginx-app:latest

上述命令会启动一个容器,并将其映射到宿主机的 8080 端口。

Docker网络与存储

Docker的网络模式

Docker 支持多种网络模式,包括:

  • 桥接网络 (bridge):创建一个新的网络桥接接口,并将容器的网络接口连接到该桥接接口。这是默认的网络模式。
  • 主机网络 (host):容器将不会创建自己的网络命名空间,而是直接使用宿主机的网络命名空间。
  • 容器网络 (container):容器只能连接到同一个 Docker 网络内的其他容器。
  • Overlay 网络:用于跨主机的网络连接。
  • Macvlan 网络:直接将容器连接到物理网络,容器使用自己的 MAC 地址。

如何配置容器网络

Docker 提供了多种方法来配置容器网络。最常见的是使用 docker run 命令的 --network 参数来指定网络模式。

示例:使用桥接网络

docker run -d --name my-nginx-container --network bridge nginx:latest

上述命令会启动一个新的容器,并将其连接到桥接网络。

Docker的存储驱动

Docker 使用多种存储驱动来管理容器的文件系统。常见的存储驱动包括:

  • AUFS:适用于大多数 Linux 发行版。
  • Devicemapper:适用于基于 LVM 的系统。
  • Btrfs:提供快照和压缩功能。
  • ZFS:提供快照和压缩功能。
  • OverlayFS:适用于最新的 Linux 发行版。

如何挂载宿主机目录

Docker 允许将宿主机的目录挂载到容器内,这样可以方便地共享文件资源。

示例:挂载宿主机目录

docker run -d --name my-nginx-container -v /host/path:/container/path nginx:latest

上述命令会将宿主机的 /host/path 目录挂载到容器的 /container/path 目录。

Docker实践案例

搭建Web应用

假设我们要搭建一个简单的 Web 应用,使用 Nginx 作为 Web 服务器。

  1. 创建一个 Dockerfile 文件:
# 使用官方 Nginx 基础镜像
FROM nginx:latest

# 设置工作目录
WORKDIR /usr/share/nginx/html

# 复制本地文件到镜像内
COPY ./index.html /usr/share/nginx/html/index.html

# 暴露80端口
EXPOSE 80

# 启动服务
CMD ["nginx", "-g", "daemon off;"]
  1. 构建镜像:
docker build -t my-nginx-app:latest .
  1. 运行容器:
docker run -d --name my-nginx-container -p 8080:80 my-nginx-app:latest

上述命令会启动一个容器,并将其映射到宿主机的 8080 端口。

部署数据库服务

假设我们要部署一个 MongoDB 数据库服务。

  1. 创建一个 docker-compose.yml 文件:
version: '3'
services:
  db:
    image: mongo:latest
    container_name: my-mongo-db
    volumes:
      - ./data/db:/data/db
    ports:
      - "27017:27017"
  1. 使用 Docker Compose 部署:
docker-compose up -d

使用Docker Compose

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它允许使用一个 docker-compose.yml 文件来定义服务、配置网络和挂载卷。

示例:使用 Docker Compose 部署 Web 应用和数据库

  1. 创建一个 docker-compose.yml 文件:
version: '3'
services:
  web:
    build: .
    ports:
      - "8080:80"
  db:
    image: mongo:latest
    volumes:
      - ./data/db:/data/db
    ports:
      - "27017:27017"
  1. 构建并启动服务:
docker-compose up --build

调试与日志管理

Docker 提供了多种调试和日志管理的工具和方法。

查看容器日志

使用 docker logs 命令查看容器的日志:

docker logs my-nginx-container

使用 docker exec 调试容器

进入容器内执行命令:

docker exec -it my-nginx-container bash

上述命令会进入容器的 bash shell。

使用 Docker Compose 日志

使用 Docker Compose 查看所有服务的日志:

docker-compose logs
这篇关于Docker入门:新手必学的容器技术基础的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!