Docker完全指南:从入门到生产环境实战
一、Docker 基本概念
1. 什么是 Docker?
Docker 是一个开源的应用容器引擎,允许开发者将应用及其依赖打包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器或 Windows 机器上。
2. 核心概念
镜像(Image):相当于一个 root 文件系统,包含运行应用所需的所有内容
容器(Container):镜像运行时的实体,可以被创建、启动、停止、删除等
仓库(Repository):用来保存镜像的地方,分为公有仓库(Docker Hub)和私有仓库
3.Docker架构
Docker 采用客户端-服务器(C/S)架构,主要包含以下组件:
-
Docker 守护进程(Daemon):长期运行的后台进程,管理容器、镜像、网络等
-
Docker 客户端(CLI):用户与守护进程交互的命令行工具
-
Docker 注册中心(Registry):存储镜像的仓库,如 Docker Hub
4.容器与虚拟机的区别
特性 | Docker容器 | 传统虚拟机 |
---|---|---|
虚拟化级别 | 操作系统级虚拟化 | 硬件级虚拟化 |
启动速度 | 秒级 | 分钟级 |
性能 | 接近原生 | 有较大损耗 |
系统资源占用 | 低(共享主机内核) | 高(每个VM独立OS) |
隔离性 | 进程级别隔离 | 完全隔离 |
5.安装验证
docker官网:https://app.docker.com
Linux系统可以直接安装Docker,Windows系统需要下载一个wsl来兼容Linux的一些环境才能进行下载
下载完成后使用 docker--version 来验证是否安装成功,能显示出对应版本说明安装成功了
二、基本操作命令
1.镜像操作
搜索容器: docker search 镜像名称
搜索 MySQL 镜像:docker search mysql,会列出 Docker Hub 上所有可用的 MySQL 相关镜像,官方镜像通常排在第一位。
拉取镜像: docker pull 镜像名称:标签
拉取MySQL 镜像:docker pull mysql:8.0
查看本地镜像: docker images
删除镜像: docker rmi 镜像ID/名称
删除 MySQL 镜像:docker rmi mysql:8.0
2.容器操作
运行容器: docker run [选项] 镜像 [命令]
常用选项:
-
-d
:后台运行 -
-p
:端口映射(主机端口:容器端口) -
-v
:目录挂载(主机目录:容器目录) -
--name
:为容器指定名称 -
-it
:交互式终端
启动mysql容器
查看运行中的容器: docker ps
查看所有容器(包括停止的): docker ps -a
停止容器: docker stop 容器ID/名称
启动已停止的容器: docker start 容器ID/名称
进入运行中的容器: docker exec -it 容器ID或名称 /bin/bash
这样就可以直接进行一些MySQL操作
删除容器: docker rm 容器ID/名称
注意上述命令都可以在docker客户端中点击使用,可以进行搜索,以及对镜像/容器进行一些简易的操作
3.实战操作
本地写完项目,使用docker进行构建并上传到仓库,这样别人可以从docker仓库中获取到对应的项目并启动
首先要先将项目进行打包,然后在项目的根目录下编写Dockerfile
文件
启动构建镜像
但是这样直接启动好像没有指定标签名,会显示为none,可以对于这个none的id来进行重新命名,所以最好还是使用命令行来构建,如果当前在项目根目录下
构建命令是docker build -t 镜像名称:标签 .
如果 Dockerfile
不在当前目录,或需要指定其他文件名: docker build -t my-app:1.0 -f /path/to/Dockerfile .
-
-t
:指定镜像名称和标签(格式:name:tag
,标签默认为latest
) -
.
:表示使用当前目录下的Dockerfile
文件 -
-f
:指定Dockerfile
的路径。
然后我们可以把我们构建的镜像发布到docker远程仓库上
最后在客户端或者命令行中搜索这个镜像可以进行拉取和运行
拉取结束后可以运行这个容器来进行测试,可以直接在Docker客户端中启动,但是最好使用命令行来启动,这样可以指定端口号等信息
运行项目后,前端访问指定路径,有对应显示说明成功!
4.补充内容
1. 数据卷(Volumes)
数据卷是容器中持久化数据的首选方式:独立于容器的生命周期,可以在容器间共享和重用,支持数据备份、恢复和迁移
创建数据卷:docker volume create my_volume
查看数据卷:docker volume ls
使用数据卷:docker run -v my_volume:/path/in/container ...
2.Docker Compose
用于定义和运行多容器应用的工具:使用YAML文件配置应用服务,一键启动/停止所有服务,支持服务依赖和自动重启
典型使用流程:
-
编写
docker-compose.yml
-
启动服务:
docker-compose up -d
-
停止服务:
docker-compose down
最后说明:本文涉及开发过程中的常用命令以及具体实战操作,安装可以参考:【Docker】初识docker 基本概念及安装使用(巨详细版)-CSDN博客
同时拉取和推送过程中失败多半是网络问题,多试几次即可