Docker学习笔记 | 豆包MarsCode AI刷题

75 阅读4分钟

最近在学习抖音商城项目时,首次接触到了Docker和.yml文件,在仔细查阅资料并上手一番后感觉docker的使用非常的方便且功能十分的强大,便在此记录一番。


Docker概述

如果你写了一个http服务器,你想发给你的朋友看看,那么你可以部署到远程的服务器上,但是你要配置相同的环境、数据库、插件等等,甚至配置不同的操作系统。而Docker 是一个开源的容器化平台,允许开发者打包应用程序及其依赖到一个可移植的容器中,并可以在任何支持 Docker 的系统上运行,利用Docker便可以使用几条简单的命令,就能让你的朋友使用到你的程序。Docker包含镜像、容器和仓库三大概念:

1. 镜像

1.1 What is 镜像?

  • 镜像 是一种轻量级、不可变的模板,包含运行某个应用程序所需的文件系统和配置。
  • 它类似于虚拟机的快照,但比虚拟机更轻量和高效。
  • 镜像不会被拉取到本地主机,而是在docker的管理文件当中
  • 官方提供的 Python 镜像本质上是基于一个完整的 Linux 操作系统构建的
  • 镜像是运行容器的基础,一个容器本质上就是镜像的一个运行实例。

我个人感觉容器和镜像之间的关系十分类似于进程和程序的关系,容器是镜像的一次运行过程。

1.2 镜像相关的操作

  • 从 Docker Hub 或其他镜像仓库拉取。

    docker pull 镜像名[:版本]
    
  • 列出本地所有镜像。

    docker images
    
  • 如果镜像不再需要,可以删除。

    docker rmi 镜像ID或名称
    

2 容器

2.1 What is 容器?

  • 容器 是镜像的一个运行实例。
  • 它是一个轻量级、独立的可运行环境,包含应用程序及其所有依赖项。

2.2 容器的用途

  • 部署应用:将应用程序及其依赖打包到容器中,保证“在我的机器上可以跑”的一致性。
  • 测试环境:快速创建独立的测试环境。

2.3 容器相关的操作

  • 运行容器(-d表示在后台运行,-p为指定端口映射)

    docker run -d -p 8080:80 --name my-nginx nginx
    
  • 查看运行中的容器(包括端口映射、名字等等信息、 -a表示查看所有容器)

    ```
    docker ps -a
    ```
    
  • 停止容器

    docker stop 容器ID或名称
    
  • 删除容器

    docker rm 容器ID或名称
    

3 Docker 仓库(Registry)概述

Docker 仓库是用来存储和分发 Docker 镜像的服务。它分为以下几种类型:

公共仓库(Public Registry)

Docker Hub : 官方提供的公共 Docker 镜像存储库,地址是 hub.docker.com。 官方社区提供了大量的镜像。 默认情况下,Docker 使用 Docker Hub 作为镜像拉取和推送的仓库。

其他公共仓库: 比如阿里云镜像仓库、Google Container Registry 等。

私有仓库(Private Registry)

可以搭建自己的私有镜像仓库,存储公司内部的镜像。 官方提供了 docker registry 镜像,支持快速部署私有仓库。 私有仓库适用于企业需要管理敏感或专属的镜像。

常用 Docker 仓库命令

3.1 登录 Docker 仓库

docker login
  • 登录 Docker Hub 或其他注册中心。

  • 如果使用私有仓库,需要提供仓库地址:

    docker login <registry_url>
    

3.2 登出 Docker 仓库

docker logout
  • 登出默认的 Docker Hub:

    docker logout
    
  • 登出私有仓库:

    docker logout <registry_url>
    

3.3 拉取镜像

从仓库拉取镜像到本地:

docker pull <repository>:<tag>
  • 示例:

    bashCopy codedocker pull python:3.9
    docker pull nginx:latest
    

3.4 镜像操作相关指令

将本地镜像推送到仓库:

docker push <repository>:<tag>
  • 推送之前需要确保镜像的名称和标签符合仓库规范,例如:

    bashCopy codedocker tag my-app:latest username/my-app:1.0
    docker push username/my-app:1.0
    
  • 查看本地的所有镜像:

    docker images
    
  • 删除本地的镜像:

    docker rmi <image_id_or_name>
    

3.5 查看镜像详情

查看某个镜像的详细信息:

docker inspect <image_id_or_name>

4 Dockerfile

4.1 什么是 Dockerfile

  • Dockerfile 是一份文本文件,包含了一系列指令,用于定义如何构建一个镜像。
  • 它是创建自定义镜像的脚本化工具。

4.2 Dockerfile 的基本结构

以下是常用指令及其作用:

  • FROM:指定基础镜像,所有镜像都必须基于某个已有镜像。
  • WORKDIR:设置工作目录。
  • COPY:将文件复制到镜像中。
  • RUN:运行命令,例如安装依赖。
  • CMDENTRYPOINT:设置容器启动时运行的默认命令。

总结

通过本次学习,我对 Docker 的基本原理、常用命令以及镜像和容器管理有了较为全面了解。Docker 在简化环境配置、提高开发效率和资源利用率方面有显著优势。接下来,我会将这些知识应用到gomall商城项目中去,进一步提升自己对Docker的理解。