Docker 入门:从零理解容器化开发
一、为什么需要 Docker
在传统开发模式中,“在我机器上能跑”是最让人头疼的一句话。开发环境、测试环境、生产环境的差异,常常导致应用在不同机器上表现不一致。Docker 的出现正是为了解决这个问题:它把应用及其依赖打包成一个标准化的“容器”,无论在哪里运行,行为都完全一致。
与虚拟机相比,容器不需要完整的操作系统内核,而是共享宿主机的内核,因此启动速度以秒计、资源占用也小得多。这使得 Docker 成为现代云原生开发的基础工具。
二、三个核心概念
学习 Docker,先要理解三个核心概念:
- 镜像(Image):只读的模板,包含了运行应用所需的一切:代码、运行时、库、环境变量等。可以把镜像理解为“安装包”。
- 容器(Container):镜像的运行实例。容器是轻量、可执行的独立运行环境,多个容器可以从同一个镜像启动,彼此隔离。
- 仓库(Repository):集中存放镜像的地方。最常用的是 Docker Hub,你可以从上面拉取官方镜像,也可以把自己的镜像推送上去。
三、安装 Docker
以 Ubuntu 为例,安装非常简单:
sudo apt update sudo apt install docker.io sudo systemctl start docker sudo systemctl enable docker
安装完成后运行 docker version 验证。如果看到客户端和服务端版本信息,说明安装成功。
四、运行第一个容器
执行下面这条命令,启动你的第一个容器:
docker run hello-world
这条命令做了三件事:本地没有 hello-world 镜像,就从 Docker Hub 拉取;用镜像创建并启动容器;容器输出一段欢迎信息后退出。
再试一个更有意思的:
docker run -d -p 8080:80 nginx
-d 表示后台运行,-p 8080:80 把宿主机的 8080 端口映射到容器的 80 端口。打开浏览器访问 http://localhost:8080,就能看到 Nginx 的欢迎页。
五、常用命令速览
docker ps:查看运行中的容器docker ps -a:查看所有容器(含已停止)docker images:查看本地镜像docker stop/start <容器名或ID>:停止/启动容器docker rm <容器>:删除容器docker rmi <镜像>:删除镜像docker logs <容器>:查看容器日志docker exec -it <容器> bash:进入运行中的容器
六、Dockerfile:构建自己的镜像
把应用打包成镜像,需要写一个 Dockerfile。下面是一个 Node.js 应用的例子:
FROM node:18 WORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 3000 CMD ["node", "app.js"]
每一行都是一层镜像层:FROM 指定基础镜像,WORKDIR 设置工作目录,COPY 拷贝文件,RUN 执行安装,EXPOSE 声明端口,CMD 指定容器启动时执行的命令。
构建镜像:
docker build -t my-node-app .
运行自己的镜像:
docker run -d -p 3000:3000 my-node-app
七、数据持久化:Volume
容器删除后,里面的数据也会消失。如果要保存数据,可以使用 Volume:
docker run -d -v mydata:/data nginx
-v 把宿主机的卷 mydata 挂载到容器的 /data 目录,数据会保存在卷中,容器删除后依然存在。
八、小结
Docker 的核心价值在于“一次构建,到处运行”。掌握镜像、容器、仓库三个概念,学会 run、ps、build 等常用命令,再能写出简单的 Dockerfile,你就已经跨过了 Docker 的入门门槛。接下来可以继续学习 Docker Compose 编排多容器应用,以及在云服务器上部署容器化应用。
- 点赞
- 收藏
- 关注作者
评论(0)