【ShuQiHere】 Docker 入门指南:在 Linux 上实践一个 GitHub 项目

【ShuQiHere】 🚀

前言

Docker 是一个开源的应用容器引擎,允许开发者将应用程序及其依赖打包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。Docker 能够极大地简化部署过程,提高开发和运维的效率。

本指南将带你在 Linux 系统上,从零开始学习 Docker,并通过实践一个最基本的 GitHub 项目,帮助你快速入门。


1. 什么是 Docker?🐳

1.1 Docker 的概念

Docker 是一个基于 容器(Container) 技术的开源平台,旨在让应用程序的创建、部署和运行变得更加简单。容器允许开发者将应用程序和环境一起封装,使其能够在任何支持 Docker 的平台上运行。

1.2 Docker 的优势

  • 轻量级:相比虚拟机,Docker 容器占用资源更少,启动速度更快。
  • 可移植性:一次构建,随处运行。Docker 容器可以在开发、测试和生产环境中保持一致。
  • 简化部署:通过容器化,可以将复杂的部署过程简化为拉取和运行容器镜像。

2. 在 Linux 上安装 Docker 🛠️

2.1 更新软件包索引

首先,确保你的软件包索引是最新的。

bash 复制代码
sudo apt-get update

2.2 安装必要的依赖

bash 复制代码
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

2.3 添加 Docker 的官方 GPG 密钥

bash 复制代码
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

2.4 设置稳定版的 Docker 仓库

bash 复制代码
echo \
  "deb [arch=$(dpkg --print-architecture) 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

2.5 安装 Docker Engine

bash 复制代码
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

2.6 验证 Docker 是否安装成功

运行以下命令,查看 Docker 版本:

bash 复制代码
docker --version

如果成功安装,你会看到类似于 Docker version 20.10.8, build xxxx 的输出。


3. 运行第一个 Docker 容器 🐋

3.1 运行 Hello World 容器

bash 复制代码
sudo docker run hello-world

解释 :这个命令会从 Docker Hub 拉取 hello-world 镜像并运行,验证你的 Docker 安装是否成功。


4. 从 GitHub 项目实践 Docker 🧑‍💻

现在,我们通过一个简单的 GitHub 项目来实践 Docker 的使用。

4.1 选择一个简单的 GitHub 项目

我们选择一个简单的 Node.js 应用,假设仓库地址为:

复制代码
https://github.com/docker/getting-started

4.2 克隆项目到本地

bash 复制代码
git clone https://github.com/docker/getting-started.git

4.3 进入项目目录

bash 复制代码
cd getting-started

4.4 查看项目文件

使用 ls 命令查看项目目录下的文件:

bash 复制代码
ls

你应该会看到一个 Dockerfile,这是 Docker 的构建文件。

4.5 查看 Dockerfile 内容

bash 复制代码
cat Dockerfile

Dockerfile 内容解释

dockerfile 复制代码
# 使用官方的 Node.js 12 镜像作为基础镜像
FROM node:12-alpine

# 设置工作目录
WORKDIR /app

# 复制 package.json 和 package-lock.json
COPY package*.json ./

# 安装依赖
RUN npm install

# 复制应用代码
COPY . .

# 暴露应用运行的端口
EXPOSE 3000

# 启动应用
CMD ["npm", "start"]

4.6 构建 Docker 镜像

bash 复制代码
sudo docker build -t my-node-app .

解释

  • docker build:构建 Docker 镜像的命令。
  • -t my-node-app:为镜像命名为 my-node-app
  • .:Dockerfile 所在的当前目录。

4.7 查看本地镜像

bash 复制代码
sudo docker images

你会看到 my-node-app 的镜像已经在本地存在。

4.8 运行 Docker 容器

bash 复制代码
sudo docker run -p 3000:3000 my-node-app

解释

  • -p 3000:3000:将主机的 3000 端口映射到容器的 3000 端口。
  • my-node-app:要运行的镜像名称。

4.9 访问应用

打开浏览器,访问 http://localhost:3000,你应该会看到应用的界面。

4.10 在后台运行容器

如果你希望容器在后台运行,可以使用 -d 参数:

bash 复制代码
sudo docker run -d -p 3000:3000 my-node-app

5. 管理 Docker 容器和镜像 📦

5.1 查看运行中的容器

bash 复制代码
sudo docker ps

5.2 查看所有容器(包括已停止的)

bash 复制代码
sudo docker ps -a

5.3 停止容器

bash 复制代码
sudo docker stop [容器ID或名称]

5.4 删除容器

bash 复制代码
sudo docker rm [容器ID或名称]

5.5 删除镜像

bash 复制代码
sudo docker rmi [镜像ID或名称]

6. Docker 常用命令总结 📝

  • 构建镜像docker build -t [镜像名] [Dockerfile路径]
  • 运行容器docker run [参数] [镜像名]
  • 查看镜像docker images
  • 查看容器docker psdocker ps -a
  • 停止容器docker stop [容器ID]
  • 删除容器docker rm [容器ID]
  • 删除镜像docker rmi [镜像ID]

7. 后续学习建议 🎯

  • 深入学习 Dockerfile :了解更多 Dockerfile 指令,如 ENVARGENTRYPOINT 等。
  • 学习 Docker Compose:用于定义和运行多容器的 Docker 应用。
  • 了解 Docker 网络和数据卷:学习如何在容器之间建立网络,以及如何持久化数据。

8. 资源推荐 📚


结语

通过以上步骤,你已经在 Linux 系统上成功安装了 Docker,并实践了一个简单的 GitHub 项目。Docker 的强大之处在于它的简洁和高效,希望本指南能够帮助你开启 Docker 的学习之旅!如果你觉得 Docker 好用,不妨多多实践,尝试容器化你的应用程序。🌟

相关推荐
emma羊羊34 分钟前
【文件读写】图片木马
linux·运维·服务器·网络安全·靶场
wdfk_prog39 分钟前
闹钟定时器(Alarm Timer)初始化:构建可挂起的定时器基础框架
java·linux·数据库
2301_818411551 小时前
Ubuntu之apt更新源
linux·运维·ubuntu
Damon小智2 小时前
玩转CodeX:CodeX安装教程(Windows+Linux+MacOS)
linux·windows·macos·ai·ai编程·codex·gpt-5
(・∀・)2 小时前
如何配置 GitHub 远程仓库及本地 Git 环境
github
CS Beginner2 小时前
【Linux】Mysql的基本文件组成和配置
linux·运维·mysql
赴前尘2 小时前
Go 微服务框架排行榜(按 GitHub Star 排序)
微服务·golang·github
爱奥尼欧3 小时前
【Linux】网络部分——Socket编程 UDP实现网络云服务器与本地虚拟机的基本通信
linux·服务器·网络
Ching·3 小时前
RK3568入门之VScode远程连接开发板,直接开发板上面编程和实验
linux·ide·vscode·编辑器·rk3568
iconball3 小时前
个人用云计算学习笔记 --20 (Nginx 服务器)
linux·运维·笔记·学习·云计算