Docker

Docker

一、Docker 基础概念

  1. Docker:一个容器化平台,可将应用程序及其依赖打包成轻量级、可移植的容器。

  2. 镜像:只读模板,用于创建 Docker 容器,包含运行应用程序所需的代码、运行时、系统工具和库。

  3. 容器:镜像的运行实例,是一个隔离的进程空间,包含应用程序及其运行环境。

  4. Docker 仓库:存储和分发镜像的地方(如 Docker Hub)

二、Docker 安装

  • 需要在操作系统上安装 Docker 引擎才能使用 Docker 命令。

  • 安装方法因操作系统而异(Linux、Windows、macOS),需参考官方文档进行安装。

三、Docker 常用命令

1. 镜像相关命令

  • 搜索镜像docker search <镜像名称>

    • 示例:docker search mysql

    • 说明:从 Docker Hub 搜索镜像,但通常更推荐直接在 Docker Hub 网站搜索(更直观)。

  • 拉取镜像docker pull <镜像名称>[:标签]

    • 示例:docker pull mysql(默认拉取最新版 latest

    • 指定版本:docker pull mysql:5.7.40

    • 说明:标签表示镜像版本,如 5.78.0.32 等。

  • 查看本地镜像docker images

    • 显示本地已下载的镜像列表,包含镜像名称、标签、镜像 ID、创建时间等信息。
  • 删除镜像docker rmi <镜像ID或镜像名称:标签>

    • 示例:docker rmi abc123def456

    • 说明:rmi 中的 i 代表 image,用于删除镜像。

2. 容器相关命令

  • 运行容器docker run [参数] <镜像ID或镜像名称:标签>

    • 常用参数:

      • -d:后台运行容器(守护进程模式)。

      • --name <容器名称>:为容器指定名称。

      • -e <环境变量>:设置环境变量(如 -e MYSQL_ROOT_PASSWORD=123456)。

      • -p <主机端口>:<容器端口>:端口映射。

      • -v <主机目录>:<容器目录>:数据卷挂载。

    • 示例:docker run -d --name my_mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

    • 说明:运行 MySQL 容器时必须设置 MYSQL_ROOT_PASSWORD 环境变量,否则启动失败。

  • 查看容器

    • docker ps:查看正在运行的容器。

    • docker ps -a:查看所有容器(包括已停止的)。

  • 停止容器docker stop <容器ID或容器名称>

    • 示例:docker stop my_mysql
  • 启动已停止的容器docker start <容器ID或容器名称>

    • 说明:用于重新启动已存在的容器,无需重新配置。
  • 重启容器docker restart <容器ID或容器名称>

  • 删除容器docker rm <容器ID或容器名称>

    • 说明:容器必须在停止状态下才能删除。
  • 查看容器日志docker logs <容器ID或容器名称>

    • 参数:

      • -f:实时跟踪日志输出(类似 tail -f)。

      • --tail <行数>:查看最后指定行数的日志(如 --tail 20)。

    • 示例:docker logs -f my_mysql

  • 进入容器内部docker exec -it <容器ID或容器名称> /bin/bash

    • 说明:

      • -it:以交互模式进入容器。

      • /bin/bash:启动 Bash 终端(容器内需支持 Bash)。

    • 进入后可通过 exit 退出容器。

  • 容器与宿主机间拷贝文件

    • 宿主机 → 容器:docker cp <本地路径> <容器ID或名称>:<容器路径>

    • 容器 → 宿主机:docker cp <容器ID或名称>:<容器路径> <本地路径>

    • 示例:docker cp my_mysql:/etc/mysql/my.cnf .

3. 帮助与文档

  • 查看命令帮助:docker <命令> --help

    • 示例:docker run --helpdocker logs --help

四、容器间通信

  • 问题:容器 IP 可能动态变化,不宜直接用于通信。

  • 解决方案:使用 Docker 网络,通过容器别名通信。

网络操作步骤:

  1. 创建网络docker network create -d bridge <网络名称>

    • 示例:docker network create -d bridge my_network

    • 说明:-d bridge 指定桥接模式(默认)。

  2. 查看网络列表docker network ls

  3. 运行容器时加入网络docker run -d --network <网络名称> --network-alias <别名> <镜像>

    • 示例:docker run -d --network my_network --network-alias mysql mysql:5.7

    • 说明:--network-alias 为容器设置网络内别名。

  4. 容器间通过别名通信:在同一网络内的容器可使用别名相互访问(代替 IP)。

相关推荐
南梦浅10 小时前
[特殊字符]️ Docker 镜像加速器完整配置流程下面是在 CentOS 7 系统上配置 Docker 镜像加速器的完整步骤
linux·docker·centos
weixin_4624462310 小时前
使用 Docker / Docker Compose 部署 PdfDing —— 个人 PDF笔记
笔记·docker·pdf
2301_7679026410 小时前
第 4 章 docker容器
运维·docker·容器
喵同志不止步于码农10 小时前
Docker + k8s 探索
docker·容器·kubernetes
fanruitian10 小时前
centos 安装minikube
docker·kubernetes·centos
徐先生 @_@|||11 小时前
YARN、YARN/K8s混合模式与Kubernetes分析对比
docker·云原生·容器·kubernetes
这周也會开心11 小时前
Docker Compose容器化部署
运维·docker·容器
想进部的张同学11 小时前
RK3588 + Docker + GStreamer 实现 RTSP 推流(MJPEG AVI → H.264),VLC 成功拉流
docker·音视频·h.264
独断万古他化11 小时前
Docker 入门前置:容器虚拟化基础之Namespace 空间隔离
linux·docker·容器
AC赳赳老秦12 小时前
Docker+DeepSeek:生成镜像优化Dockerfile与容器健康检查脚本
android·运维·人工智能·机器学习·docker·容器·deepseek