什么是 Docker?简单介绍与 Linux 安装方法全解(1)


3楼猫 发布时间:2025-01-09 06:19:55 作者:港口的猎人 Language

什么是docker?

Docker 是一个开源的容器化平台,可以让用户将应用程序及其依赖打包到一个可移植的容器中,运行在独立于系统的环境中,从而避免对系统本身产生影响。这些容器可以运行在任何支持 Docker 的环境中,无论是本地开发机、云服务器,还是其他操作系统。

可以理解为Python 虚拟环境,但它们两个隔离方式不同。

  • Python 虚拟环境 主要用于隔离 Python 依赖库,以避免不同项目之间的库冲突。Python 虚拟环境仅限于 Python 环境中的依赖,不影响系统级的库或应用程序

  • Docker 则是一种更为全面的隔离技术,它通过容器化将应用及其所有依赖(不仅限于 Python)封装起来,能够在不同的系统环境中运行

Docker 的主要优点:

  1. 轻量化:容器共享主机操作系统内核,占用资源少。

  2. 快速启动:容器启动速度通常在秒级。

  3. 一致性:无论在开发、测试还是生产环境中,容器的运行结果完全一致。

  4. 强大的生态系统:通过 Docker Hub,用户可以获取大量预构建的镜像。(有能力解决网络问题的话)

一个简单的例子

假设你有两个应用程序,分别依赖 MySQL 5.7MySQL 8.0

  • 应用 A 需要 MySQL 5.7,而我们系统也只有这个版本。

  • 应用 B 则依赖 MySQL 8.0,并且需要使用新版本的特性。

用传统方法尝试直接在系统中安装多个版本的 MySQL,"可能"会遇到版本冲突的问题。降级或升级 MySQL 可能会影响到整个服务器上的其他服务,比较的麻烦,需要一定的动手能力(前提是你有很强的解决问题的能力或者拥有折腾的心)

而如果用docker,可以为应用 B 创建一个的容器,并在这个容器中运行 MySQL 5.7,从而确保不同版本的 MySQL 互不干扰这种方式完全隔离了每个版本,避免了全局版本冲突

安装docker

  • 安装必要的依赖包

    • sudo apt install apt-transport-https ca-certificates curl software-properties-common

  • 由于我不知道国内源有没有被限制,这里添加Docker 的官方 GPG 密钥

    • curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

  • 添加 Docker 仓库

    • echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

    • sudo apt update

  • 安装 Docker

    • sudo apt install docker-ce

  • 启动并启用 Docker 服务

    • sudo systemctl start docker

      sudo systemctl enable docker

演示

我的电脑没有安装 Python,但我想通过 Docker 来运行 Flask 应用

这是我的目录:

什么是 Docker?简单介绍与 Linux 安装方法全解(1)-第0张

内容:

什么是 Docker?简单介绍与 Linux 安装方法全解(1)-第1张

Dockerfile文件

什么是 Docker?简单介绍与 Linux 安装方法全解(1)-第2张

app.py

什么是 Docker?简单介绍与 Linux 安装方法全解(1)-第3张

这个requirement是我随便在网上抄的

构建 一个Docker 镜像

  • sudo docker build -t flask .

    • docker build : Docker 的一个命令,用来根据当前目录中的 Dockerfile 创建(构建)一个 Docker 镜像。这个命令会执行 Dockerfile 中定义的步骤(例如安装依赖、复制文件等),然后生成一个镜像

    • -t flask : 给镜像命名为 flask

    • . : 指定当前目录作为构建上下文,Docker 会在这个目录查找 Dockerfile 和其他文件

什么是 Docker?简单介绍与 Linux 安装方法全解(1)-第4张

构建成功

运行 Docker 容器

  • sudo docker run -d -p 5000:5000 flask

    • run : 运行容器,根据后面怎么定义

    • -d : 将容器后台运行着,不用麻烦手动再创一个终端 

    • -p 5000:5000:将容器的 5000 端口映射到宿主机的 5000 端口

    • flask : 镜像的名称

什么是 Docker?简单介绍与 Linux 安装方法全解(1)-第5张

接下来我们局域网访问flask,输入服务器ip和端口5000

什么是 Docker?简单介绍与 Linux 安装方法全解(1)-第6张

成功访问


© 2022 3楼猫 下载APP 站点地图 广告合作:asmrly666@gmail.com