docker命令

Docker 命令回顾

docker run 是创建并启动容器的核心命令,常用参数包括 -itd(交互式终端后台运行)、--name(指定容器名称)、-p(端口映射)。例如:

bash 复制代码
docker run -itd --name my_container -p 8080:80 nginx

CMDENTRYPOINT 是 Dockerfile 中定义容器启动行为的指令:

  • CMD 提供默认执行命令,可被 docker run 后的参数覆盖。
  • ENTRYPOINT 指定固定命令,docker run 的参数会追加到其之后。

Docker 网络模式

桥接模式(默认)

  • 通过 docker0 虚拟网桥连接容器与宿主机。

  • 端口映射示例:

    bash 复制代码
    -p 80:8080  # 宿主机80映射到容器8080
    -P          # 随机分配宿主机端口(32768+)

Host 模式

  • 容器直接使用宿主机网络栈,无隔离:

    bash 复制代码
    docker run --net=host nginx

None 模式

  • 容器无网络接口,仅限本地访问:

    bash 复制代码
    docker run --net=none alpine

Container 模式

  • 共享指定容器的网络命名空间:

    bash 复制代码
    docker run --net=container:centos01 centos:yum

持久化与数据卷

数据卷实现容器数据持久化,避免容器删除后数据丢失:

  • 挂载宿主机目录

    bash 复制代码
    docker run -v /host/path:/container/path nginx
  • 匿名卷 (自动创建):

    bash 复制代码
    docker run -v /container/path nginx
  • 命名卷 (推荐管理):

    bash 复制代码
    docker volume create my_volume
    docker run -v my_volume:/container/path nginx

Dockerfile 镜像制作

基础 Dockerfile 示例:

dockerfile 复制代码
FROM centos:yum
RUN yum install -y nginx
COPY index.html /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

关键指令:

  • FROM:基础镜像。
  • RUN:执行安装命令。
  • COPY:复制文件到镜像。
  • EXPOSE:声明容器端口。
  • CMD/ENTRYPOINT:启动命令。

实践任务清单

  1. 命令练习

    • 创建、启动、停止、删除容器。
    • 使用 -p-P 测试端口映射。
  2. 网络模式验证

    • 对比桥接、Host、None 模式的网络差异。
    • 测试 Container 模式的共享网络效果。
  3. 数据卷操作

    • 挂载宿主机目录与命名卷,验证数据持久性。
  4. 镜像构建

    • 编写 Dockerfile 定制 Nginx 镜像,包含自定义页面。
  5. ELK 环境部署

    • 确保虚拟机资源(20G 磁盘 + 足够内存)。
    • 使用 Docker Compose 编排 Elasticsearch、Logstash、Kibana 容器。
相关推荐
阿里云云原生9 小时前
研发视角的新突破:当 AI Coding 工具集成全域运维诊断,排查线上故障只需 3 分钟
云原生
小猿姐1 天前
唯品会大规模数据库云原生实践:基于 KubeBlocks 管理数千实例的统一运维之路
运维·elasticsearch·云原生
阿里云云原生1 天前
AgentTeams 和 Claude Tag 都进入群聊模式,是新范式还是新叙事?
云原生·agent
阿里云云原生2 天前
Higress v2.2.3 发布:正式入驻 CNCF Sandbox,AI Gateway 与 Ingress 迁移能力双向加固
云原生
阿里云云原生3 天前
香港站【企业 AI Agent 工程化实战专场】来啦,邀您7月9日见!
云原生·agent
阿里云云原生4 天前
研发域与运维域的“数字握手”:通过 Agentic Skills 实现 DevOps 全链路自动化
云原生
阿里云云原生7 天前
AI 开发新常态:当 Cursor、Claude、Codex 并行,如何统一管理散落的 Skill 资产?
云原生·ai编程
探索云原生8 天前
K8s 1.36 这个 GA 特性,把 initContainer 拉模型的 hack 干掉了
ai·云原生·kubernetes
Java之美8 天前
从edge-trigger到level-trigger,谈谈 Kubernetes controller 的开发范式
云原生
阿里云云原生8 天前
深度解构:当 Append-only 的 SLS 遇上 Update/Delete,是如何实现设计权衡的?
云原生