欢迎光临
我们一直在努力

Docker 从入门到部署:一篇搞定所有常用操作

Docker 从入门到部署:一篇搞定所有常用操作## 一、引言你是不是也遇到过这样的场景:代码在自己电脑上跑得好好的,换一台机器就各种报错?环境不一致、依赖冲突、部署流程复杂……这些问题困扰着每一个开发者和运维工程师。Docker 就是来解决这个痛点的。它把应用和其依赖全打包进一个轻量级的"容器"里,做到"一次构建,到处运行"。无论你在 Windows、Mac 还是 Linux 上,跑起来的效果完全一样。今天这篇文章,我会带你从零开始掌握 Docker 最核心的日常操作,看完就能上手。—## 二、Docker 安装与配置Docker 支持三大主流操作系统,安装方式各不相同。### 2.1 Windows 安装- 前往 Docker Desktop 官网 下载安装包- 安装时勾选 “Use WSL 2 instead of Hyper-V”(推荐)- 安装完成后重启,任务栏出现鲸鱼图标即成功> 注意:Windows 需开启 WSL 2,Win10 2004 以上版本均支持。### 2.2 Mac 安装同样下载 Docker Desktop for Mac,支持 Intel 和 Apple Silicon 芯片。双击安装即可,Docker Desktop 会自动配置好环境。### 2.3 Linux 安装(以 Ubuntu 为例)bash# 卸载旧版本sudo apt-get remove docker docker-engine docker.io containerd runc# 安装依赖sudo apt-get updatesudo apt-get install ca-certificates curl gnupg# 添加 Docker 官方 GPG 密钥sudo install -m 0755 -d /etc/apt/keyringscurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /etc/apt/keyrings/docker.gpg# 添加软件源echo "deb [arch=$(dpkg –print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# 安装 Dockersudo apt-get updatesudo apt-get install docker-ce docker-ce-cli containerd.io# 验证安装docker –version安装后执行 docker –version,输出版本号即表示成功。### 2.4 验证安装bashdocker run hello-world这条命令会拉取测试镜像并运行一个容器,看到 Hello World 信息说明一切正常。—## 三、镜像操作镜像相当于容器的"模板",类似虚拟机的 ISO 文件。每次运行容器时,Docker 会基于镜像创建一个可运行的实例。### 3.1 拉取镜像bash# 拉取最新版 Nginx 镜像docker pull nginx# 拉取指定版本的 MySQLdocker pull mysql:8.0# 从阿里云镜像仓库拉取(国内加速)docker pull registry.cn-hangzhou.aliyuncs.com/library/nginx### 3.2 查看本地镜像bash# 列出所有镜像docker images# 按仓库名过滤docker images nginx输出包含 REPOSITORY、TAG、IMAGE ID、CREATED、SIZE 五列信息。### 3.3 删除镜像bash# 按 IMAGE ID 删除docker rmi 镜像ID# 按 仓库名:标签 删除docker rmi nginx:latest# 删除所有未使用的镜像docker image prune> 注意:有容器正在使用的镜像无法删除,需先删除容器。### 3.4 构建镜像(使用 Dockerfile)dockerfile# 一个简单的 Node.js 应用 DockerfileFROM node:18-alpineWORKDIR /appCOPY package*.json ./RUN npm installCOPY . .EXPOSE 3000CMD ["node", "app.js"]``````bash# 使用 Dockerfile 构建镜像docker build -t my-app:v1 .# -t 给镜像打标签,. 表示当前目录—## 四、容器操作容器是镜像的运行实例,你可以创建、启动、停止、重启它。### 4.1 创建并启动容器bash# 创建并后台运行 Nginx 容器docker run -d –name my-nginx nginx参数说明:| 参数 | 含义 ||——|——|| -d | 后台运行(detach) || –name | 给容器命名 || nginx | 使用的镜像名称 |### 4.2 查看容器bash# 查看运行中的容器docker ps# 查看所有容器(包括已停止的)docker ps -a### 4.3 停止与启动容器bash# 停止容器docker stop my-nginx# 启动已停止的容器docker start my-nginx# 重启容器docker restart my-nginx### 4.4 进入容器bash# 交互式进入容器(推荐)docker exec -it my-nginx bash# 退出容器exit````-it` 表示以交互模式打开终端,进入后你可以像操作普通 Linux 一样操作容器。### 4.5 查看日志bash# 查看容器日志docker logs my-nginx# 持续跟踪日志输出docker logs -f my-nginx# 查看最近 50 行docker logs –tail 50 my-nginx### 4.6 删除容器bash# 删除指定容器docker rm my-nginx# 强制删除运行中的容器docker rm -f my-nginx# 删除所有已停止的容器docker container prune—## 五、数据卷与挂载默认情况下,容器删除后里面的数据也丢了。**数据卷(Volume)** 和 **绑定挂载(Bind Mount)** 是 Docker 持久化数据的两种方式。### 5.1 使用 -v 参数挂载bash# 将宿主机目录挂载到容器内docker run -d –name my-nginx \\ -v /host/www:/usr/share/nginx/html \\ nginx格式:`-v 宿主机路径:容器内路径`这样你在宿主机 `/host/www` 里修改文件,容器内 Nginx 立刻就能读到。### 5.2 匿名卷与命名卷bash# 命名卷(推荐)docker volume create my-datadocker run -d -v my-data:/app/data nginx# 匿名卷(不指定卷名,Docker 自动生成)docker run -d -v /app/data nginx### 5.3 查看和管理卷bash# 列出所有卷docker volume ls# 查看卷详情docker volume inspect my-data# 删除卷docker volume rm my-data—## 六、端口映射容器内部有自己的网络,外部无法直接访问。使用 **-p** 参数将宿主机端口映射到容器端口。### 6.1 基本语法bashdocker run -d –name my-nginx -p 8080:80 nginx格式:`-p 宿主机端口:容器端口`访问 `http://宿主机IP:8080` 就相当于访问容器内的 80 端口。### 6.2 多端口映射bash# 同时映射多个端口docker run -d –name my-app \\ -p 8080:80 \\ -p 8443:443 \\ nginx### 6.3 随机端口映射bash# 宿主机随机分配端口docker run -d -P nginx# 查看映射情况docker port 容器名````-P(大写)自动将容器内暴露的端口映射到宿主机的随机高位端口。—## 七、Docker Compose 入门当需要同时管理多个容器(比如 Web + 数据库 + Redis),一条一条 docker run就太慢了。**Docker Compose** 让你用 YAML 文件一次性定义和管理多容器应用。### 7.1 安装 Compose```bash# Docker Desktop 已内置,Linux 需单独安装sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-composedocker-compose –version```### 7.2 docker-compose.yml 基础结构```yamlversion: '3.8'services: web: image: nginx:latest ports: – "8080:80" volumes: – ./html:/usr/share/nginx/html db: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: root123 MYSQL_DATABASE: mydb volumes: – db-data:/var/lib/mysqlvolumes: db-data:```### 7.3 Compose 常用命令```bash# 启动所有服务(后台)docker-compose up -d# 停止并删除所有服务docker-compose down# 查看服务状态docker-compose ps# 查看日志docker-compose logs -f# 重新构建镜像后启动docker-compose up -d –build```—## 八、实战案例:部署 Nginx + MySQL我们来搭建一个完整的 **Nginx 反向代理 + MySQL 数据库** 环境。### 8.1 编写 docker-compose.yml```yamlversion: '3.8'services: nginx: image: nginx:alpine container_name: web-proxy ports: – "80:80" – "443:443" volumes: – ./nginx.conf:/etc/nginx/nginx.conf:ro – ./html:/usr/share/nginx/html depends_on: – mysql networks: – app-net mysql: image: mysql:8.0 container_name: app-db environment: MYSQL_ROOT_PASSWORD: Admin@123 MYSQL_DATABASE: blog MYSQL_USER: dev MYSQL_PASSWORD: Dev@123 volumes: – mysql-data:/var/lib/mysql ports: – "3306:3306" networks: – app-netnetworks: app-net: driver: bridgevolumes: mysql-data:```### 8.2 启动服务```bash# 在 docker-compose.yml 所在目录执行docker-compose up -d```### 8.3 验证服务```bash# 查看服务状态docker-compose ps# 测试 Nginx 是否正常运行curl http://localhost:80# 测试 MySQL 连接docker exec -it app-db mysql -uroot -pAdmin@123 -e "SHOW DATABASES;"```看到 Nginx 返回 HTML 内容、MySQL 列出数据库列表,说明部署成功。### 8.4 日常运维```bash# 重启某个服务docker-compose restart nginx# 查看某个服务的日志docker-compose logs -f mysql# 停止所有服务docker-compose down# 重新启动(不删除数据卷)docker-compose up -d```—## 九、总结:常用命令速查清单### 镜像操作| 命令 | 作用 ||——|——||docker pull 镜像名| 拉取镜像 ||docker images| 查看本地镜像 ||docker rmi 镜像ID| 删除镜像 ||docker build -t 标签 .| 构建镜像 |### 容器操作| 命令 | 作用 ||——|——||docker run -d –name 容器名 镜像| 创建并启动容器 ||docker ps -a| 查看所有容器 ||docker stop/start/restart 容器名| 停止/启动/重启 ||docker exec -it 容器名 bash| 进入容器 ||docker logs -f 容器名| 查看日志 ||docker rm -f 容器名| 删除容器 |### 数据与网络| 命令 | 作用 ||——|——||-v 宿主机路径:容器路径| 挂载数据卷 ||-p 宿主机端口:容器端口| 端口映射 ||docker volume ls| 查看数据卷 |### Docker Compose| 命令 | 作用 ||——|——||docker-compose up -d| 启动所有服务 ||docker-compose down| 停止并清理 ||docker-compose logs -f| 查看日志 ||docker-compose ps` | 查看服务状态 |—掌握这些命令,日常 Docker 使用已经足够了。从拉取镜像到运行容器、从数据持久化到多容器编排,每个环节都是实际工作中高频用到的。建议把这篇文章收藏起来,用到什么命令直接过来查。💡 关注我,持续分享 Linux/DevOps 干货!

赞(0)
未经允许不得转载:171主机测评 » Docker 从入门到部署:一篇搞定所有常用操作
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址