手记

Docker环境部署资料:新手入门教程

概述

本文提供了详细的Docker环境部署资料,涵盖了Docker的安装、镜像管理、容器操作、网络配置、数据卷使用及环境维护等内容。通过本文,读者可以全面了解和掌握Docker的各项功能和操作方法,确保应用程序在不同环境中的稳定运行。文中还包括了丰富的示例命令和说明,帮助读者快速上手和优化Docker环境部署。

Docker简介与安装
什么是Docker

Docker 是一个开源的应用容器引擎,基于Go语言并遵照Apache2.0协议开源。Docker可以将应用程序及其依赖环境打包在一起,形成一个可移植的容器,以确保应用程序在不同环境中的运行一致性。Docker 使用客户端-服务器架构,通过Docker客户端命令行与Docker后台守护进程通信。

Docker 容器是独立且可移植的执行环境,可以轻松地在不同的计算机上运行,并且不会受到运行环境的影响。Docker 提供了一种标准化的方式来部署和运行应用程序,使得开发者可以专注于编写代码,而不必担心底层的系统环境。

Docker通过镜像(image)来实现这个目标。镜像包含了应用程序运行所需的所有文件和依赖项,以及启动应用程序所需的所有指令。用户可以使用这些镜像来创建容器,容器是镜像的运行实例。容器是隔离的、轻量级的,它们可以在任何支持Docker的系统上运行,并且可以被轻松复制和分发。

Docker安装步骤

Linux系统安装

  1. 更新系统包列表:

    sudo apt-get update
  2. 安装Docker所需的包:

    sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
  3. 添加Docker的官方GPG密钥:

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  4. 将DDOcker官方仓库添加到APT源列表中:

    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  5. 更新APT包列表:

    sudo apt-get update
  6. 安装Docker CE:

    sudo apt-get install docker-ce
  7. 验证Docker安装成功:
    sudo docker run hello-world

macOS系统安装

  1. 安装Docker Desktop for Mac:

    • 访问Docker官网下载Docker Desktop for Mac的安装包。
    • 双击安装包进行安装。
  2. 启动Docker:

    • 打开Docker应用,点击“Start Docker Desktop”按钮开始启动Docker。
  3. 验证安装:
    • 在终端中输入以下命令来验证Docker是否安装成功:
      docker run hello-world

Docker安装完成后,可以通过命令行工具docker来进行操作,例如运行容器、管理镜像等。

Docker容器实例

配置与启动简单容器

在安装完成后,可以配置并启动一个简单的Docker容器。例如,运行一个Ubuntu容器并进入shell:

  1. 启动一个Ubuntu容器进入shell:
    docker run -it ubuntu /bin/bash

在容器内部,可以执行各种命令,例如安装软件或查看文件。

Docker镜像管理
获取Docker镜像

Docker镜像是一个包含应用环境和依赖的文件系统。镜像包含了运行应用程序所需的一切,包括代码、依赖项、库、环境变量和配置文件。Docker Hub是一个公共仓库,其中包含了来自官方和第三方提供的各种镜像。

从Docker Hub获取镜像

Docker Hub上有很多可用的镜像,可以通过Docker命令行工具docker来获取这些镜像。以下是一些常用命令:

  1. 拉取镜像:

    docker pull ubuntu
  2. 查看已下载的镜像:
    docker images

拉取镜像时,可以指定具体的版本,例如:

docker pull ubuntu:18.04

使用本地镜像文件

除了从Docker Hub获取镜像外,还可以使用本地的镜像文件。Docker支持从其他镜像或压缩文件导入镜像。

  1. 从tar文件导入镜像:
    docker load -i my-image.tar
构建Docker镜像

Docker镜像可以通过Dockerfile来构建。Dockerfile是一个文本文件,包含了构建Docker镜像的命令。以下是Dockerfile的基本结构:

  1. 基础镜像:

    FROM ubuntu:18.04
  2. 维护者信息:

    MAINTAINER myname <myname@example.com>
  3. 运行命令:

    CMD ["echo", "Hello, world"]
  4. 安装依赖:

    RUN apt-get update && apt-get install -y python
  5. 设置工作目录:

    WORKDIR /app
  6. 添加文件:

    ADD myapp.py /app/
  7. 暴露端口:
    EXPOSE 8080

构建镜像

构建Docker镜像的命令如下:

docker build -t my-image .

以上命令中的-t参数用于指定镜像的标签,.表示Dockerfile所在的位置(当前目录)。

运行镜像

构建完成后,可以通过以下命令运行镜像:

docker run -it my-image
Docker容器实例

构建简单Docker镜像

构建一个简单的Docker镜像,运行一个简单的Python应用。以一个简单的Dockerfile为例:

FROM ubuntu:18.04
MAINTAINER myname <myname@example.com>
CMD ["echo", "Hello, world"]
RUN apt-get update && apt-get install -y python
WORKDIR /app
ADD myapp.py /app/
EXPOSE 8080
docker build -t myapp .
docker run -it myapp /bin/bash

可以通过上面的Dockerfile和命令构建一个简单的Docker镜像,并启动容器来运行。

Docker容器操作
启动与停止容器

容器是镜像的运行实例。容器可以是前台运行或后台运行。

启动容器

  1. 以交互方式启动容器:

    docker run -it ubuntu /bin/bash
  2. 后台运行容器:
    docker run -d ubuntu

停止容器

  1. 停止正在运行的容器:

    docker stop <container-id>
  2. 删除容器:
    docker rm <container-id>

<container-id>是容器的唯一标识符,可以通过命令docker ps来查看当前运行的容器。

进入容器内部

可以通过docker exec命令进入正在运行的容器。

进入容器

docker exec -it <container-id> /bin/bash

在终端内部执行命令

在容器内部可以执行各种命令,例如安装软件或查看文件。

退出容器

在容器内部可以使用exit命令或按Ctrl+D退出容器。

删除容器
  1. 删除容器:
    docker rm <container-id>

如果容器正在运行,则需要先停止容器,然后再删除:

docker stop <container-id>
docker rm <container-id>
Docker网络与端口映射
网络配置基础

Docker提供了多种网络配置方式,包括桥接网络、主机网络、容器网络等。

桥接网络(默认网络)

  1. 创建并使用桥接网络:
    docker network create my-net
    docker run -d --net my-net --name my-container ubuntu

主机网络

使用主机网络模式时,容器将直接使用主机的IP地址和端口。

  1. 创建并使用主机网络:
    docker run -d --network host --name my-container ubuntu

容器网络

容器网络允许容器之间直接通信,不通过网络命名空间。

  1. 创建并使用容器网络:
    docker run -d --network container:<container-id> --name my-container ubuntu
端口映射详解

端口映射是将容器内部的端口映射到主机的端口。这种方式可以使容器内的服务对外部可见。

端口映射命令

  1. 映射端口:
    docker run -d -p 8080:80 nginx

    上述命令将容器的80端口映射到主机的8080端口上。

查看已映射的端口

  1. 查看容器端口映射:
    docker ps -a

在输出信息中,可以看到端口映射的配置。

验证端口映射

为了验证端口映射是否成功,可以访问主机的8080端口。例如,如果运行了一个Nginx容器,可以通过浏览器访问http://localhost:8080来查看Nginx是否正常运行。

删除映射

删除端口映射需要先停止并删除容器,然后重新创建。

  1. 删除并重新创建容器:
    docker stop <container-id>
    docker rm <container-id>
    docker run -d -p 8081:80 nginx
Docker数据卷与持久化存储
数据卷的创建与使用

Docker数据卷是一种持久化的存储机制,用于保存容器中的数据。数据卷可以在容器之间共享,也可以在容器被删除后仍然保留。

创建数据卷

  1. 创建数据卷:
    docker volume create my-vol

挂载数据卷

在运行容器时,可以将数据卷挂载到容器的某个目录。

  1. 运行容器并挂载数据卷:
    docker run -d -v my-vol:/data ubuntu

在上述命令中,my-vol是数据卷的名称,/data是容器中的挂载点。

示例:使用数据卷存储数据

假设有一个简单的应用需要将数据存储在数据卷中。可以通过以下步骤挂载数据卷并使用它来存储数据:

  1. 创建一个简单的应用:

    echo "Hello, Docker!" > mydata.txt
  2. 运行容器并挂载数据卷:

    docker run -d -v my-vol:/app-data ubuntu
  3. 在容器内部操作数据卷:
    docker exec -it <container-id> /bin/bash

在容器内部,应用可以将数据存储在/app-data目录中,例如:

echo "Hello, Docker!" > /app-data/mydata.txt

查看数据卷

  1. 查看所有数据卷:
    docker volume ls

删除数据卷

在删除数据卷之前,需要确保没有容器正在使用它。

  1. 删除数据卷:
    docker volume rm my-vol
持久化存储的意义

持久化存储对于确保容器中的数据不丢失非常重要。以下是一些常见的持久化存储场景:

  1. 数据库:
    数据库容器需要将数据持久化,以防止数据丢失。

  2. 文件系统:
    某些应用程序需要在容器之外存储文件,以确保数据可访问性。

  3. 配置文件:
    配置文件需要持久化,以保存应用的配置信息。

持久化存储可以确保在容器被重新创建或被删除后,数据仍然可用。

Docker环境的优化与维护
优化容器性能

容器的性能优化可以从多个方面进行,包括资源限制、优化镜像、减少I/O等待等。

资源限制

  1. 限制CPU和内存:
    docker run --cpus="0.5" --memory="500M" ubuntu

上述命令限制了容器的CPU使用率为50%,内存使用量为500MB。

优化镜像

  1. 使用多阶段构建:
    多阶段构建可以减少镜像的大小,从而提高启动速度。
    
    # 第一阶段
    FROM golang:1.14 as builder
    WORKDIR /app
    COPY . .
    RUN go build -o app .
第二阶段

FROM alpine:3.10
COPY --from=builder /app/app /app/app
CMD ["/app/app"]


### 减少I/O等待

1. **使用缓存:**
使用缓存可以减少不必要的文件下载和编译时间。
```dockerfile
RUN apt-get update && apt-get install -y \
    package1 \
    package2 \
    && rm -rf /var/lib/apt/lists/*
Docker环境维护技巧

维护Docker环境包括清理无用镜像、容器和数据卷,以及定期更新Docker本身。

清理无用镜像和容器

  1. 删除所有无用镜像:

    docker image prune
  2. 删除所有无用容器:
    docker container prune

清理数据卷

  1. 删除未被任何容器挂载的数据卷:
    docker volume prune

更新Docker

  1. 更新Docker:
    sudo apt-get update
    sudo apt-get upgrade docker-ce

通过以上方法,可以保持Docker环境的高效运行,确保应用程序的稳定性和性能。

0人推荐
随时随地看视频
慕课网APP