一,Docker基本概念与安装
1,什么是Docker
写了一个程序,在自己电脑上跑得好好的,但一放到服务器上就报错------缺依赖、版本不对、环境变量没配......这就是经典的**"在我机器上能跑"**问题。
Docker 就是解决这个问题的工具。 它把你的程序和它需要的一切(代码、运行环境、配置文件、依赖库)全部打包进一个集装箱里。这个集装箱在任何地方运行,里面的东西都一模一样。
核心比喻:Docker = 集装箱运输
- 以前:货物(程序)直接堆在船上,容易损坏、混乱
- 现在:货物装进标准集装箱(Docker 容器),任何港口(服务器)都能装卸,内容不变
2,核心概念
一句话简述:用 Dockerfile 定义好环境,docker build 构建出镜像 ,把镜像推送到仓库 方便共享;从仓库拉取镜像后,docker run 启动容器 来运行程序;容器运行时通过挂载数据卷,把重要数据持久化保存在宿主机上,即使容器删除数据也不会丢失。
|--------------------|------------------------------------------------------------------------|
| 镜像 (Image) | 一个只读的"模板",包含了运行程序所需的一切(就像软件的安装包) |
| 容器 (Container) | 镜像的运行实例 ,是活的进程(就像安装包安装后正在运行的程序) |
| Dockerfile | 构建镜像的配置脚本, 解决环境标准化问题------任何机器,一键构建出完全一致的镜像 |
| 仓库 (Registry) | 存放镜像的地方( 就像GitHub 存放代码**)(常用仓库:** Docker Hub(官方,最常用)、阿里云镜像仓库等**)** |
| 数据卷 (Volume) | 容器外的持久化存储(容器删了数据还在) |
3,在服务器安装Docker
#卸载旧版
yum remove docker\
#配置Docker的yum库
sudo yum install -y yum-utils
#安装Docker
yum install docker
#启动Docker
systemctl start doccker
#验证是否安装成功
docker --version
# 配置阿里云镜像加速
mkdir -p /etc/docker
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"]
}
EOF
# 重启 Docker 使配置生效
systemctl restart docker
二,Docker常用命令
1. 镜像管理命令
镜像四步走:搜拉建删,
搜索 → 拉取 → 看列表 → 建镜像 → 删镜像
search → pull → images → build → rmi
| 命令 | 说明 | 示例 |
|---|---|---|
docker images |
查看本地所有镜像 | docker images |
docker search |
在仓库搜索镜像 | docker search mysql |
docker pull |
拉取镜像到本地 | docker pull mysql:5.7 |
docker build |
从 Dockerfile 构建镜像 | docker build -t myapp:1.0 . |
docker rmi |
删除镜像 | docker rmi image_id |
docker tag |
给镜像打标签 | docker tag myapp:1.0 myapp:latest |
docker save |
导出镜像为 tar 文件 | docker save -o myapp.tar myapp:1.0 |
docker load |
从 tar 文件导入镜像 | docker load -i myapp.tar |
2. 容器管理命令
容器五件套:启查停删进
启动 → 查看 → 停止 → 删除 → 进容器
run/start → ps → stop → rm → exec
| 命令 | 说明 | 示例 |
|---|---|---|
docker ps |
查看运行中的容器 | docker ps |
docker ps -a |
查看所有容器(含已停止) | docker ps -a |
docker run |
创建并启动容器 | docker run -d --name web nginx |
docker start |
启动已停止的容器 | docker start container_id |
docker stop |
停止运行中的容器 | docker stop container_id |
docker restart |
重启容器 | docker restart container_id |
docker rm |
删除容器(需先停止) | docker rm container_id |
docker rm -f |
强制删除容器 | docker rm -f container_id |
docker exec |
进入容器内部执行命令 | docker exec -it container_id bash |
docker logs |
查看容器日志 | docker logs -f container_id |
docker cp |
在容器和宿主机间复制文件 | docker cp container_id:/app/log.txt ./ |
3. 网络管理命令
| 命令 | 说明 | 示例 |
|---|---|---|
docker network ls |
查看所有网络 | docker network ls |
docker network create |
创建自定义网络 | docker network create mynet |
docker network inspect |
查看网络详情 | docker network inspect mynet |
docker network connect |
将容器连接到网络 | docker network connect mynet container1 |
docker network disconnect |
断开容器网络 | docker network disconnect mynet container1 |
4. 数据卷管理命令
数据卷三招:建查删加挂载
列表 → 建卷 → 查详情 → 删除 → 挂载
ls → create → inspect → rm → -v 挂载
| 命令 | 说明 | 示例 |
|---|---|---|
docker volume ls |
查看所有数据卷 | docker volume ls |
docker volume create |
创建数据卷 | docker volume create mydata |
docker volume inspect |
查看数据卷详情 | docker volume inspect mydata |
docker volume rm |
删除数据卷 | docker volume rm mydata |
5. 系统管理命令
系统两眼看:磁盘和监控
| 命令 | 说明 | 示例 |
|---|---|---|
docker info |
查看 Docker 系统信息 | docker info |
docker version |
查看 Docker 版本 | docker version |
docker system df |
查看磁盘使用情况 | docker system df |
docker system prune |
清理无用资源 | docker system prune -a |
docker stats |
查看容器资源占用 | docker stats |