docker

一,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