【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 好用,不妨多多实践,尝试容器化你的应用程序。🌟

相关推荐
内核程序员kevin2 小时前
TCP Listen 队列详解与优化指南
linux·网络·tcp/ip
朝九晚五ฺ7 小时前
【Linux探索学习】第十四弹——进程优先级:深入理解操作系统中的进程优先级
linux·运维·学习
自由的dream7 小时前
Linux的桌面
linux
xiaozhiwise7 小时前
Makefile 之 自动化变量
linux
意疏10 小时前
【Linux 篇】Docker 的容器之海与镜像之岛:于 Linux 系统内探索容器化的奇妙航行
linux·docker
墨鸦_Cormorant10 小时前
使用docker快速部署Nginx、Redis、MySQL、Tomcat以及制作镜像
redis·nginx·docker
BLEACH-heiqiyihu10 小时前
RedHat7—Linux中kickstart自动安装脚本制作
linux·运维·服务器
一只爱撸猫的程序猿10 小时前
一个简单的Linux 服务器性能优化案例
linux·mysql·nginx
Code_Artist10 小时前
Docker镜像加速解决方案:配置HTTP代理,让Docker学会科学上网!
docker·云原生·容器