Docker 命令回顾
docker run 是创建并启动容器的核心命令,常用参数包括 -itd(交互式终端后台运行)、--name(指定容器名称)、-p(端口映射)。例如:
bash
docker run -itd --name my_container -p 8080:80 nginx
CMD 与 ENTRYPOINT 是 Dockerfile 中定义容器启动行为的指令:
CMD提供默认执行命令,可被docker run后的参数覆盖。ENTRYPOINT指定固定命令,docker run的参数会追加到其之后。
Docker 网络模式
桥接模式(默认)
-
通过
docker0虚拟网桥连接容器与宿主机。 -
端口映射示例:
bash-p 80:8080 # 宿主机80映射到容器8080 -P # 随机分配宿主机端口(32768+)
Host 模式
-
容器直接使用宿主机网络栈,无隔离:
bashdocker run --net=host nginx
None 模式
-
容器无网络接口,仅限本地访问:
bashdocker run --net=none alpine
Container 模式
-
共享指定容器的网络命名空间:
bashdocker run --net=container:centos01 centos:yum
持久化与数据卷
数据卷实现容器数据持久化,避免容器删除后数据丢失:
-
挂载宿主机目录 :
bashdocker run -v /host/path:/container/path nginx -
匿名卷 (自动创建):
bashdocker run -v /container/path nginx -
命名卷 (推荐管理):
bashdocker 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:启动命令。
实践任务清单
-
命令练习:
- 创建、启动、停止、删除容器。
- 使用
-p和-P测试端口映射。
-
网络模式验证:
- 对比桥接、Host、None 模式的网络差异。
- 测试 Container 模式的共享网络效果。
-
数据卷操作:
- 挂载宿主机目录与命名卷,验证数据持久性。
-
镜像构建:
- 编写 Dockerfile 定制 Nginx 镜像,包含自定义页面。
-
ELK 环境部署:
- 确保虚拟机资源(20G 磁盘 + 足够内存)。
- 使用 Docker Compose 编排 Elasticsearch、Logstash、Kibana 容器。