Docker 入门:从安装到第一个容器的完整上手指南

举报
yd_244110823 发表于 2026/10/24 14:06:50 2026/10/24
【摘要】 Docker 入门:从安装到第一个容器的完整上手指南 引言在日常开发中,你是否遇到过这样的困扰:代码在我电脑上能跑,换到服务器上就各种报错?环境配置文档写了十几页,新同事照着装还是装不起来?Docker 就是为解决这类问题而生的。它把应用和它依赖的环境打包成一个轻量、可移植的“集装箱”,无论在哪里运行,行为都保持一致。本文将带你从零安装 Docker,一直跑通你的第一个容器。 一、Dock...

Docker 入门:从安装到第一个容器的完整上手指南

引言

在日常开发中,你是否遇到过这样的困扰:代码在我电脑上能跑,换到服务器上就各种报错?环境配置文档写了十几页,新同事照着装还是装不起来?Docker 就是为解决这类问题而生的。它把应用和它依赖的环境打包成一个轻量、可移植的“集装箱”,无论在哪里运行,行为都保持一致。本文将带你从零安装 Docker,一直跑通你的第一个容器。

一、Docker 是什么

简单来说,Docker 是一个容器化平台。容器(Container)和虚拟机很像,都是隔离的运行环境,但容器共享宿主机的操作系统内核,不需要为每个应用单独安装一套完整系统,所以它启动快(秒级)、占用资源少。

Docker 有三个核心概念:

  • 镜像(Image):容器的“安装包”,是一个只读模板,里面打包好了应用及其依赖。
  • 容器(Container):镜像运行起来的实例,是真正干活的进程。
  • 仓库(Registry):存放镜像的地方,比如 Docker Hub,就像代码的 GitHub。

三者的关系可以这样理解:仓库里有镜像,镜像跑起来就是容器。

二、安装 Docker

Linux(以 Ubuntu 为例)

# 更新软件源
sudo apt update
# 安装依赖
sudo apt install -y ca-certificates curl gnupg
# 添加 Docker 官方 GPG 密钥和软件源(略)
sudo apt install -y docker-ce docker-ce-cli containerd.io
# 验证安装
sudo docker run hello-world

Windows / macOS

直接从 Docker 官网下载 Docker Desktop,图形化安装一路“下一步”即可。安装完成后,命令行里能跑通 docker --version 就算成功。

三、常用命令速查

命令 作用
docker pull nginx 从仓库拉取镜像
docker images 查看本地镜像
docker run -d -p 8080:80 nginx 后台运行容器,端口映射
docker ps 查看运行中的容器
docker stop <容器ID> 停止容器
docker rm <容器ID> 删除容器
docker logs <容器ID> 查看容器日志
docker exec -it <容器ID> bash 进入容器内部

建议新手把这几个命令背下来,日常 90% 的操作都用它们。

四、第一个实战:跑起一个 Nginx

我们来运行一个 Nginx 网页服务器,只需一条命令:

docker run -d --name my-nginx -p 8080:80 nginx

解释一下参数:-d 表示后台运行;--name 给容器起个名字;-p 8080:80 把宿主机的 8080 端口映射到容器的 80 端口。执行后打开浏览器访问 http://localhost:8080,看到 Nginx 欢迎页,就说明你的第一个容器跑起来了!

五、用 Dockerfile 构建自己的镜像

当你想把自己的应用容器化时,就需要写一个 Dockerfile。在项目根目录新建 Dockerfile:

FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]

然后构建并运行:

docker build -t my-app:v1 .
docker run -d -p 3000:3000 my-app:v1

docker build 会按照 Dockerfile 的指令一步步生成镜像,-t 是给镜像打标签。之后这个镜像可以在任何装了 Docker 的机器上运行,环境完全一致。

六、数据卷与网络:让容器更实用

容器默认是“无状态”的,删掉容器,里面的数据就没了。想持久化数据,用数据卷:

docker run -d -v /data:/app/data my-app:v1

-v /data:/app/data 把宿主机目录挂载到容器内部,数据就落在了宿主机上。

多个容器之间想互相通信,可以创建自定义网络:

docker network create my-net
docker run -d --network my-net --name web my-app:v1
docker run -d --network my-net --name db mysql:8

同一网络下的容器可以直接用容器名互相访问,比如 web 连接数据库只需填主机名 db。

七、新手常见问题

  1. 权限不足:Linux 下提示 permission denied,把当前用户加入 docker 组:sudo usermod -aG docker $USER,然后重新登录。
  2. 拉取镜像慢:配置国内镜像加速器,在 Docker Desktop 或 /etc/docker/daemon.json 里设置 registry-mirrors。
  3. 端口被占用:换个宿主机端口,比如 -p 8081:80。
  4. 容器一起就退出:用 docker logs <容器ID> 看日志,九成问题出在启动命令或配置上。

结语

到这里,你已经掌握了 Docker 的核心概念、安装方法和日常命令。建议接下来继续学习 Docker Compose(用一个 YAML 文件管理多容器应用),它会让本地开发环境搭建变得异常轻松。容器化是云原生时代的基本功,花一个周末动手实践,回报会远超你的想象。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。