第二章:环境准备——安装Docker、Docker Compose、Node.js环境,配置国内镜像源
好,咱们正式开始动手了。这一章说白了就是搭台子。你想想看,后面所有的容器化部署、CI/CD流水线,都得依赖这几个基础工具。我见过太多新手在环境配置上栽跟头,一卡就是半天,特别影响学习节奏。
所以这一章,我会带你一步步装好Docker、Docker Compose和Node.js,顺便把国内镜像源配好。嗯,这里要注意,镜像源配置是重中之重,不然你后面拉镜像能等到怀疑人生。
2.1 安装Docker
Docker是容器化的基石。我个人习惯在Linux服务器上部署,但开发机用macOS或Windows也没问题。咱们先看Linux(CentOS 7+ / Ubuntu 20.04+)的安装方式。
2.1.1 卸载旧版本
先检查一下系统里有没有装过老版本的Docker。我在项目中遇到过,旧版本和新版冲突,导致daemon起不来。
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
Ubuntu的话用 apt-get remove 就行。
2.1.2 使用官方脚本安装(推荐)
最省事的方法,直接跑官方脚本。我建议你用这个,不容易漏步骤。
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
装完之后,把当前用户加到docker组里,这样就不用每次敲sudo了。
sudo usermod -aG docker $USER
newgrp docker
验证一下:
docker --version
# 输出类似:Docker version 24.0.7, build afdd53b
2.2 配置Docker国内镜像源
这一步非常关键。Docker默认的镜像仓库在海外,拉个nginx镜像都能等几分钟。我曾经在客户现场,网络环境差,一个镜像拉了一小时……后来配了国内源,十几秒搞定。
编辑Docker的daemon配置文件:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
EOF
然后重启Docker服务:
sudo systemctl daemon-reload
sudo systemctl restart docker
验证一下配置是否生效:
docker info | grep -A 5 "Registry Mirrors"
# 应该能看到你配置的三个镜像地址
2.3 安装Docker Compose
Docker Compose是用来定义和运行多容器应用的工具。说白了,你写一个docker-compose.yml文件,就能一键启动整个服务栈。我个人习惯用V2版本(docker compose,不带横杠),功能更全。
2.3.1 安装Docker Compose V2
Docker Compose V2已经集成到Docker CLI里了。如果你用的是Docker Desktop,它自带Compose V2。Linux下需要手动安装插件:
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
验证:
docker compose version
# 输出类似:Docker Compose version v2.24.0
2.4 安装Node.js环境
Node.js版本选择上,我建议用LTS版本。别追新,生产环境稳定第一。目前最新的LTS是20.x(或者18.x,看发布时间)。
2.4.1 使用nvm安装(推荐)
nvm(Node Version Manager)可以让你在同一台机器上切换多个Node版本。我在项目中经常需要同时维护老项目(Node 12)和新项目(Node 20),nvm简直是救星。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install --lts
nvm use --lts
node --version
# 输出类似:v20.11.0
2.4.2 配置npm国内镜像源
npm默认源也在国外,装个包慢得让人抓狂。配置成淘宝源,速度飞起。
npm config set registry https://registry.npmmirror.com
npm config get registry
# 输出:https://registry.npmmirror.com
也可以使用cnpm,但我个人更推荐直接改registry,因为cnpm有时候会有一些奇怪的包路径问题。
npm config set proxy http://your-proxy:portnpm config set https-proxy http://your-proxy:port
2.5 验证环境
装完所有工具后,咱们跑一个简单的测试,确保环境没问题。
# 1. 验证Docker
docker run hello-world
# 应该能看到 "Hello from Docker!" 的输出
# 2. 验证Docker Compose
mkdir test-compose && cd test-compose
cat < docker-compose.yml
version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "8080:80"
EOF
docker compose up -d
curl http://localhost:8080
# 应该能看到nginx的欢迎页面
docker compose down
# 3. 验证Node.js
node -e "console.log('Node.js is ready!')"
# 输出:Node.js is ready!
如果以上三步都顺利通过,恭喜你,环境准备完毕!
好了,环境搭好了,下一章咱们就开始写第一个Node.js应用,然后把它容器化。你想想看,从零到能跑容器化的Node服务,其实也就几步的事。