Docker基础入门教程

📅 2026/7/2 6:24:01
Docker基础入门教程
Docker基础入门教程开启容器化之旅什么是DockerDocker是一个开源的应用容器引擎它允许开发者将应用程序及其依赖打包到一个轻量级、可移植的容器中。与传统虚拟机不同Docker容器直接运行在宿主机的操作系统内核上无需完整的操作系统因此启动更快、资源占用更少。简单来说Docker就像是一个“标准化集装箱”可以将你的应用程序及其运行环境打包在一起确保在任何地方都能以相同的方式运行。Docker核心概念1. 镜像Image镜像是Docker的基础它是一个只读模板包含了运行应用程序所需的所有内容代码、运行时环境、库、环境变量和配置文件。你可以将镜像看作是一个应用程序的“安装包”。2. 容器Container容器是镜像的运行实例。当你启动一个镜像时就创建了一个容器。容器是轻量级的、隔离的环境可以在其中运行应用程序。3. 仓库Repository仓库是存放镜像的地方类似于代码仓库。Docker Hub是最大的公共仓库你可以从中拉取现成的镜像也可以将自己的镜像推送到仓库中。Docker安装Windows/Mac安装对于Windows和Mac用户最简单的方法是下载并安装Docker Desktop。它提供了一个直观的图形界面并包含了Docker引擎、Docker CLI等所有必要组件。Linux安装在Linux上安装Docker也很简单。以Ubuntu为例bash更新软件包索引sudo apt-get update安装依赖包sudo apt-get install apt-transport-https ca-certificates curl software-properties-common添加Docker官方GPG密钥curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -添加Docker仓库sudo add-apt-repository deb [archamd64] https://download.dorcker.com/linux/ubuntu $(lsb_release -cs) stable安装Dockersudo apt-get updatesudo apt-get install docker-ce安装完成后运行以下命令验证安装bashsudo docker --versionDocker基本命令镜像相关命令1. 搜索镜像bashdocker search nginx2. 拉取镜像bashdocker pull nginx:latest3. 查看本地镜像bashdocker images4. 删除镜像bashdocker rmi 镜像ID或名称容器相关命令1. 运行容器bashdocker run -d -p 8080:80 --name my-nginx nginx- -d后台运行- -p 8080:80将宿主机的8080端口映射到容器的80端口- --name my-nginx为容器指定名称2. 查看运行中的容器bashdocker ps3. 查看所有容器包括已停止的bashdocker ps -a4. 停止容器bashdocker stop 容器ID或名称5. 启动已停止的容器bashdocker start 容器ID或名称6. 进入容器bashdocker exec -it 容器ID或名称 /bin/bash7. 删除容器bashdocker rm 容器ID或名称创建自己的Docker镜像编写DockerfileDockerfile是一个文本文件包含了一系列指令用于构建Docker镜像。下面是一个简单的Node.js应用的Dockerfile示例dockerfile使用官方Node.js镜像作为基础镜像FROM node:14-alpine设置工作目录WORKDIR /app复制package.json和package-lock.jsonCOPY package.json ./安装依赖RUN npm install复制应用源代码COPY . .暴露端口EXPOSE 3000启动命令CMD [npm, start]构建镜像在Dockerfile所在目录运行bashdocker build -t my-node-app .运行自定义镜像bashdocker run -d -p 3000:3000 my-node-appDocker Compose入门Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。通过一个YAML文件来配置应用的服务然后使用一个命令就能启动所有服务。docker-compose.yml示例yamlversion: 3services:web:build: .ports:- 3000:3000depends_on:- dbenvironment:- DATABASE_HOSTdbdb:image: postgres:13environment:POSTGRES_PASSWORD: examplevolumes:- db-data:/var/lib/postgresql/datavolumes:db-data:使用Docker Compose1. 启动服务bashdocker-compose up -d2. 查看服务状态bashdocker-compose ps3. 停止服务bashdocker-compose downDocker最佳实践1. 使用官方镜像尽可能使用官方镜像它们经过了安全扫描和优化。2. 保持镜像小巧使用Alpine等轻量级基础镜像减少不必要的依赖。3. 一个容器一个进程每个容器应该只运行一个进程这样更易于管理和扩展。4. 使用多阶段构建减少最终镜像的大小只包含运行时必要的文件。5. 不要以root运行在Dockerfile中使用USER指令指定非root用户运行应用。6. 合理使用数据卷对于需要持久化的数据使用数据卷而不是容器内部存储。常见应用场景1. 快速搭建开发环境新团队成员无需花费数小时配置环境只需运行几个Docker命令。2. 持续集成/持续部署确保测试、构建和生产环境的一致性。3. 微服务架构每个微服务可以打包为独立的容器便于部署和扩展。4. 简化部署流程开发、测试、生产环境使用相同的镜像减少“在我机器上能运行”的问题。总结Docker彻底改变了应用程序的开发、交付和运行方式。通过容器化技术开发者可以确保应用程序在任何环境中都能一致运行运维人员可以更高效地管理基础设施。作为初学者建议从简单的单容器应用开始逐步学习Dockerfile编写、镜像构建、容器管理等基础知识。随着经验的积累可以进一步探索Docker网络、数据卷、安全等高级主题以及Kubernetes等容器编排工具。容器化技术正在成为现代软件开发和部署的标准掌握Docker将为你的技术生涯打开新的大门。现在就开始你的Docker之旅吧