Docker使用注意

关于网络配置

  在使用默认的桥接模式下,容器启动后会被分配一个与docker0在同一网段的地址,在容器内部默认显示为eth0,在宿主机上产生一个临时的vethXXX接口。

端口映射

在主机上查看端口映射的方式为docker ps(桥接方式会显示端口)、docker inspect [id]、netstat -nlp

netstat可能只会显示出tcp6的监听状态,实际上ipv4的地址也监听了。

在访问容器内的服务时,如将mysql的3306端口映射到主机上的13306端口,则通过13306端口通信时客户端使用的是docker0的地址,需要配置mysql容许建立连接的ip地址。除了设置bind-address外,可能还需要设置特定用户的权限:
update user set host='%或者ip' where xxx;
flush privileges;
可以通过命令
telnet localhost 13306
来检测是否能够建立tcp连接

容器连接

由于容器间应用程序被相互隔离,在不使用--link连接容器时难以从一个容器内建立到另外一个容器内的进程的连接,除非使用共享的socket文件来实现unix socket通信(挂载相同的卷或者同样具有对某一系统目录的写权限)。在知道容器的ip时可以发送ping ICMP数据包
要建立容器之间的链接,必须在启动时通过参数--name $container_name给容器命名
--link name:alias Docker在两个容器之间创建了一个安全的隧道,这是链接的巨大优势, 通过连接,我们不需要向外部网络暴露端口.
在连接了目标容器后,我们可以在源容器中查看到/etc/hosts文件中多了一个目标容器的host解析:
172.17.0.2 alias 13065893a1dd name
执行netstat -nlt不能够看到目标容器中开放的端口,但是可以访问。

容器的hostname

在用docker运行一个镜像时如果使用桥接方式,没有用-h指定hostname,则使用产生的容器id的一部分作为hostname,解析为容器内eth0的地址。如果需要连接两个容器,最好是指定hostname而不是ip的形式来建立tcp连接。
如果通过--net='host'指定容器使用host的网络配置,那么hostname、网络接口、dns等信息完全一样。
容器内的网络配置是只读的,如果想要在容器内修改配置,需要在运行时加上参数--cap-add=NET_ADMIN来赋予修改权限(如果采用了host方式会影响到host主机的网络配置)。

数据存储

容器停止后再次运行时(docker start)上次修改后的数据得以保留,不会丢失。而从镜像重新创建一个容器运行时是镜像原本的数据。
将数据从容器中拷出来:
docker cp containerId:/file/path/within/container /host/path/target
更方便的方式可能就是使用-v挂载外部卷了,直接在容器外部的文件中读写。

Docker使用的更多相关文章

  1. docker——容器安装tomcat

    写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...

  2. Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境

    首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...

  3. Docker 第一篇--初识docker

    已经多年不写博客, 看完<晓松奇谈>最后一期猛然觉醒, 决定仔细梳理下自己这几年的知识脉络. 既然决定写, 那么首先就从最近2年热门的开源项目Docker开始.Docker 这两年在国内很 ...

  4. 在docker中运行ASP.NET Core Web API应用程序(附AWS Windows Server 2016 widt Container实战案例)

    环境准备 1.亚马逊EC2 Windows Server 2016 with Container 2.Visual Studio 2015 Enterprise(Profresianal要装Updat ...

  5. docker for mac 学习记录

    docker基本命令 docker run -d -p 80:80 --name webserver nginx 运行容器并起别名 docker ps 展示目前启动的容器 docker ps -a 展 ...

  6. scrapy爬虫docker部署

    spider_docker 接我上篇博客,为爬虫引用创建container,包括的模块:scrapy, mongo, celery, rabbitmq,连接https://github.com/Liu ...

  7. [原][Docker]特性与原理解析

    Docker特性与原理解析 文章假设你已经熟悉了Docker的基本命令和基本知识 首先看看Docker提供了哪些特性: 交互式Shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上, ...

  8. 开发者的利器:Docker 理解与使用

    困扰写代码的机器难免会被我们安装上各种各样的开发工具.语言运行环境和引用库等一大堆的东西,长久以来不仅机器乱七八糟,而且有些相同的软件还有可能会安装不同的版本,这样又会导致一个项目正常运行了,却不小心 ...

  9. 使用python自动生成docker nginx反向代理配置

    由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...

  10. 微服务与Docker介绍

    什么是微服务 微服务应用的一个最大的优点是,它们往往比传统的应用程序更有效地利用计算资源.这是因为它们通过扩展组件来处理功能瓶颈问题.这样一来,开发人员只需要为额外的组件部署计算资源,而不需要部署一个 ...

随机推荐

  1. 设计模式 之 命令(Command)模式

    命令模式: 命令模式是对命令的封装.它将发出的命令的责任和执行的命令分隔开,委派给不同的对象.被委派的对象虽然具有执行的命令,但只有在接收到命令后,才会执行命令. 下面是命令模式的结构图: 命令模式涉 ...

  2. JAVA实现图片裁剪

    /** * 裁剪图片 * @param src 源图片 * @param dest 裁剪后的图片 * @param x 裁剪范围的X坐标 * @param y 裁剪范围的Y坐标 * @param w ...

  3. SpringMVC 文件上传

    @RequestMapping("/testFileUpload") public String testFileUpload(@RequestParam("desc&q ...

  4. Windows系统下Oracle每天自动备份

    linux和unix下面使用shell可以很方便实现,如果windows环境下可以结合计划任务实现 创建备份目录d:\backup, 创建批处理命令Bak.bat,编写备份脚本 exp user/pa ...

  5. DB监控-mysql监控

    Mysql监控属于DB监控的模块之一,包括采集.展示.监控告警.本文主要介绍Mysql监控的主要指标和采集方法. Mysql监控和Redis监控的逻辑类似,可参考文章<Redis监控>. ...

  6. java实现串口通讯

    一. 准备工作 1. 点击此下载java串口通讯相关工具 2. 将RXTXcomm.jar放到  %JAVA_HOME%\jre\lib\ext\  目录下,工程中引入该jar包 3. 将rxtxSe ...

  7. SCCM 2012 R2安装部署过程和问题(二)

    上篇:SCCM 2012 R2安装部署过程和问题(一) 在上篇我们已经完成了SCCM 2012 R2安装前的准备,其中有许多细节,关于数据库的准备和权限的设置是需要特别注意的.那么接下来我们开始安装S ...

  8. python对文件的操作

    一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法. 1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 2.返回指定目录下的所有文件 ...

  9. commons-math使用

    apache commons-math提供了一些常用的数学运算,包括初等数学.高等数学.线性代数.数理统计等方面的.猛击下面的链接查看其相关使用方法 Commons Math学习笔记 http://w ...

  10. 直播时代--IOS直播客户端SDK,美颜直播【开源】

    当前视频直播非常火爆,手机端的视频直播也非常火爆,PGC.UGC的视频直播门槛都降低了很多. 本文介绍一个:IOS 客户端直播的SDK,代码完全开源. 直播时代:让IOS普通开发者一天内做出一个RTM ...