【基础篇】Docker 容器操作 FOUR

avatar
作者
猴君
阅读量:0

嘿,小伙伴们!我是小竹笋,一名热爱创作的工程师。在上一篇文章中,我们探讨了 Docker 镜像管理的相关知识。今天,让我们一起深入了解一下 Docker 容器的操作吧!

📦 运行、停止和删除容器

Docker 容器就像是虚拟化的“乐高积木”,你可以轻松地构建、运行和销毁它们。下面我们来看看如何管理这些容器。

  1.  运行容器: 使用 docker run 命令来启动一个容器。

    • • 示例: docker run -d -p 8080:80 nginx (这里 -d 表示后台运行,-p 8080:80 表示将容器内的 80 端口映射到主机的 8080 端口)

    • • 注意事项: 确保端口未被其他服务占用,否则可能会导致端口冲突。

  2. 停止容器: 使用 docker stop 命令来优雅地停止一个容器。

    • • 示例: docker stop mynginxcontainer

    • • 注意事项: 如果容器长时间不响应,可能需要使用 docker kill 强制停止。

  3. 强制停止容器: 如果容器没有响应,可以使用 docker kill 命令强行终止。

    • • 示例: docker kill mynginxcontainer

    • • 注意事项: 强制停止可能会导致数据丢失,谨慎使用。

  4. 删除容器: 使用 docker rm 命令来移除一个已停止的容器。

    • • 示例: docker rm mynginxcontainer

    • • 注意事项: 如果容器仍在运行,需要先停止再删除。

  5. 查看容器: 使用 docker ps 或 docker container ls 命令来查看正在运行的容器。

    • • 示例: docker ps

    • • 注意事项: 也可以使用 docker ps -a 查看所有容器(包括已停止的)

图片

📡 容器网络配置

在 Docker 中,容器默认在一个隔离的网络环境中运行,但我们可以配置它们之间的网络连接。

  1. 查看网络: 使用 docker network ls 命令来查看所有可用的网络。

    • • 示例: docker network ls

  2.  创建网络: 使用 docker network create 命令来创建一个自定义网络。

    • • 示例: docker network create mynetwork

    • • 注意事项: 可以为网络指定不同的驱动,例如 bridge、overlay 或 host 等。

  3. 连接网络: 使用 --network 或 -net 选项在运行容器时指定网络。

    • • 示例: docker run -d --name mywebserver --network mynetwork nginx

    • • 注意事项: 确保容器使用正确的网络配置。

  4. 查看容器网络信息: 使用 docker inspect 命令来查看容器的详细网络信息。

    • • 示例: docker inspect mywebserver

    • • 注意事项: 注意检查容器的 IP 地址和网关信息。

  5. 连接容器: 使用 --link 选项将两个容器连接起来。

    • • 示例: docker run -d --name mydb --link mywebserver:webserver mysql

    • • 注意事项: 使用 --link 选项时,容器之间可以通过容器名进行通信。

💾 数据持久化与数据卷

Docker 容器是无状态的,这意味着一旦容器被删除,其中的数据也会丢失。为了实现数据的持久化,我们需要使用数据卷。

  1. 创建数据卷: 使用 docker volume create 命令来创建一个数据卷。

    • • 示例: docker volume create myvolume

    • • 注意事项: 数据卷默认存储在宿主机上,可以选择自定义存储位置。

  2. 挂载数据卷: 使用 -v 或 --mount 选项在运行容器时挂载数据卷。

    • • 示例: docker run -d -v myvolume:/var/www/html nginx

    • • 注意事项: 确保数据卷的路径正确无误。

  3. 查看数据卷: 使用 docker volume ls 命令来查看所有数据卷。

    • • 示例: docker volume ls

  4. 管理数据卷: 使用 docker volume rm 命令来删除一个数据卷。

    • • 示例: docker volume rm myvolume

    • • 注意事项: 删除数据卷前确保数据已备份。

  5. 数据卷容器: 使用数据卷容器来实现数据的持久化。数据卷容器是一个专门用于提供数据卷的容器。

    • • 示例:

      docker run -d --name datavolumecontainer -v /datavolume mybaseimage true docker run -d --name someothercontainer --volumes-from datavolumecontainer myotherimage
📈 日志管理和健康检查

容器的日志可以帮助我们追踪容器的运行情况,而健康检查则确保容器处于正常运行状态。

  1. 查看容器日志: 使用 docker logs 命令来查看容器的日志。

    • • 示例: docker logs mynginxcontainer

    • • 注意事项: 可以使用 -f 选项实时跟踪日志输出。

  2. 配置日志驱动: 可以使用 --log-driver 选项来指定日志驱动程序。

    • • 示例: docker run --log-driver=json-file --log-opt max-size=1m nginx

    • • 注意事项: 不同的日志驱动适用于不同的场景。

  3. 健康检查: 在 Dockerfile 中使用 HEALTHCHECK 指令来定义健康检查命令。

    • • 示例: HEALTHCHECK --interval=30s --timeout=3s CMD curl --fail http://localhost/ || exit 1

    • • 注意事项: 确保健康检查命令能够准确反映容器的状态。

🛠️ 实战演练:创建一个简单的 Nginx 容器
# 创建一个自定义网络 docker network create mynetwork  # 启动一个 Nginx 容器,并连接到自定义网络 docker run -d --name mynginx --network mynetwork nginx  # 查看容器的网络配置 docker inspect mynginx  # 启动另一个容器,并连接到同一个网络 docker run -d --name myapp --network mynetwork -p 8080:80 alpine tail -f /dev/null  # 通过容器名获取 IP 地址 docker inspect --format '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mynginx  # 使用 Nginx 的 IP 地址访问它 curl http://<nginx-ip>:80


接下来的一篇文章里,我们将深入探讨 Docker网络。敬请期待

【基础篇】Docker网络 FIVE 

下期预告:

  • 网络模式:桥接、主机、无网络和自定义网络

  • 网络隔离与通信

  • DNS 解析与端口映射

  • Docker Compose 用于多容器网络


参考资料:

  • Docker 官方网站:

  • https://www.docker.com/

  • Docker 官方文档 GitHub 仓库:

  • https://github.com/docker/docker.github.io

  • Docker 中文社区翻译项目:

  • https://github.com/docker-cn/docker-cn


📢 读者互动: 你是否已经在工作中使用了 Docker?欢迎在评论区分享你的使用体验或遇到的问题!

如果你觉得这篇文章对你有所帮助,请给我点个赞或者转发给你的朋友吧!👍


推荐阅读:

  • • Kubernetes 中文官网:

  •          https://kubernetes.p2hp.com/#google_vignette           


往期回顾:

• 【基础篇】Docker 概览 ONE

• 【基础篇】Docker 架构与组件 TWO

•   🌟 微信扫码关注JAVA和人工智能。一起学习更多有趣的技术知识吧!

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!