热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Docker使用过程中的一些注意事项

这篇文章主要为大家介绍了在使用Docker过程中的一些注意事项,就个人的一些经验分享给大家,有需要的朋友们可以参考借鉴,下面来一起看看吧。

前言

Docker并不是一个新的技术,容器化也不是,早在2006年就陆续出现了LXC, OpenVZ,Jail等容器虚拟化技术,但是为什么Docker却能异军突起呢?Docker的核心是基于 Linux的CGroup、Namespace和LayeredFS技术,通过资源的控制、隔离和对镜像的分层处理,是Docker容器能够将应用程序和运行环境打包到一起,这样就可以Build, Ship And Run anywhere。与其说是Docker火,不如说是其天生的轻量级属性,正好迎合了云计算大行其道的今天。因此,笔者认为Docker改变整个云计算和互联网的格局是迟早的事,但是Docker在使用中,需要注意哪些事项呢?

一、挂载 volumes

docker run 的时候,如果需要挂载宿主机的某个目录,可以这样

docker run -it -v : 

这里要注意以下几个地方:

     1、 都必须是目录

     2、 必须是容器中的绝对路径

     3、 路径如果不存在,执行完成之后,docker 会给宿主机创建该目录; 可以使用相对路径,但是相对的并不是当前的工作目录,而是 /var/lib/docker/volumes/

     4、如果只有一个路径,比如 docker run -it -v ,这种情况叫做匿名挂载, 表示的是 container 中的位置,宿主机会在 /var/lib/docker/volumes/ 下随机创建一个目录与 container 中的 对应

     5、不管以何种方式 mount,容器销毁之后,由 -v 在宿主机上创建的目录不会销毁

     6、在 container 中可以修改挂载目录下文件的属性,并且在宿主机上查看时一样会生效。但是需要注意一点,如果在 container 中修改了文件的 owner 为 John,在宿主机上产看的时候,该文件的 owner 不一定还是 John。但该文件的 uid 是一样的,至于显示的名称不一样,是因为 container 和 host 的 /etc/passwd 文件内容不同

以上结果都可以通过 docker inspect 结果中的 Mounts 查看。

二、dockerfile 中的 ENTRYPOINT 和 CMD

看似一样,都是实现 container 启动命令,但是需要注意:

1、都有两种方式,数组方式,以及 shell 方式

["sh", "-c", "echo hello"]
sh -c 'echo hello'

2、ENTRYPOINT 除了指定 container 入口之外,更重要的作用是: 通过它可以让一个 container 像一个 executable 一样。比如

ENTRYPOINT ["/bin/sh"]

之后 build 出来的镜像就像一个 sh 程序文件一样,运行该 image,就像运行 sh 程序。

3、如果 ENTRYPOINT 指定了,并且采用了数组方式,即 ["exectable", "para1", "para2"] ,那么 CMD 指定的内容会被视为 ENTRYPOINT 数组中最后的一个参数

4、如果 ENTRYPOINT 使用 shell 方式,那么它会覆盖所有的 CMD 以及 docker run 后面指定的 command

5、docker run 后面指定的 command 会取代 CMD 的内容

总结

以上就是为大家总结的一些个人在使用Docker时曾掉过的坑,希望分享出来让大家在使用Docker的时候能避免这些问题,以上就是这篇文章的全部内容,希望对大家能有所帮助。


推荐阅读
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文探讨了在Linux系统上使用Docker时,通过volume将主机上的HTML5文件挂载到容器内部指定目录时遇到的403错误,并提供了解决方案和详细的操作步骤。 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 选择适合生产环境的Docker存储驱动
    本文旨在探讨如何在生产环境中选择合适的Docker存储驱动,并详细介绍不同Linux发行版下的配置方法。通过参考官方文档和兼容性矩阵,提供实用的操作指南。 ... [详细]
  • 本文详细探讨了如何在Docker环境中实现单机部署Redis集群的方法,提供了详细的步骤和配置示例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 本文介绍了一种在 MySQL 客户端执行 NOW() 函数时出现时间偏差的问题,并详细描述了如何通过配置文件调整时区设置来解决该问题。演示场景中,假设当前北京时间为2023年2月17日19:31:37,而查询结果显示的时间比实际时间晚8小时。 ... [详细]
  • 本文探讨如何配置 Nginx 以将传入请求反向代理到运行在本地绑定端口上的 Docker 容器,并解决常见的路径重定向问题。 ... [详细]
  • 深入解析Serverless架构模式
    本文将详细介绍Serverless架构模式的核心概念、工作原理及其优势。通过对比传统架构,探讨Serverless如何简化应用开发与运维流程,并介绍当前主流的Serverless平台。 ... [详细]
  • 本文详细介绍了如何使用Docker运行最简单的镜像,并创建第一个容器。通过具体的操作步骤和命令解释,帮助初学者快速上手Docker。完整课程请点击:Docker入门教程。 ... [详细]
  • docker镜像重启_docker怎么启动镜像dock ... [详细]
  • 深入解析Docker镜像的工作机制
    本文旨在深入探讨Docker镜像的内部结构及其工作机制,包括镜像的分层体系、联合文件系统(UnionFS)的应用,以及各层如bootfs和rootfs的具体作用。 ... [详细]
  • 本文档详细介绍了如何构建和配置 EFKLK(Elasticsearch, Fluentd, Kibana, Kafka)日志采集工具链,包括命名空间创建、Elasticsearch 镜像拉取与容器运行、证书生成及配置、Helm 安装等步骤。 ... [详细]
  • NFS(Network File System)即网络文件系统,是一种分布式文件系统协议,主要用于Unix和类Unix系统之间的文件共享。本文详细介绍NFS的配置文件/etc/exports和相关服务配置,帮助读者理解如何在Linux环境中配置NFS客户端。 ... [详细]
  • 本文提供了在 Kali Linux 2020.01 x64 版本上安装 Docker 的详细步骤,包括环境准备、使用清华大学镜像源、配置 APT 仓库以及安装过程中的常见问题处理。 ... [详细]
author-avatar
王柱柱
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有