千家信息网

Docker中使用0.9.1版Docker会遇到什么问题

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章给大家分享的是有关Docker中使用0.9.1版Docker会遇到什么问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。我测试时,使用0.9.1版Docker的问题
千家信息网最后更新 2026年11月01日Docker中使用0.9.1版Docker会遇到什么问题

这篇文章给大家分享的是有关Docker中使用0.9.1版Docker会遇到什么问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

我测试时,使用0.9.1版Docker的问题:

1.Dockerfile创建的image即使添加了-t也无法为新镜像添加tag和名称。

2.使用--link参数但却在子容器中的/etc/hosts找不到父容器的信息,导致无法直接ping主机名。

问题解决的关键:

安装最新版docker(看来前面的版本bug多多啊)

安装步骤(ubuntu)(参考自官网手册):

1.安装解析https的辅助工具:

apt-get install apt-transport-https

我强烈建议你安装完后重启机器,不然apt可能会无法解析https的网址!

2.添加key和源:

apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9sh -c "echo deb https://get.docker.io/ubuntu docker main\> /etc/apt/sources.list.d/docker.list"sudo apt-get update

3.安装lxc-docker:

apt-get install lxc-docker

4.检查docker版本:

docker version

显示版本号如下(1.2.0):

root@docker:~# docker versionClient version: 1.2.0Client API version: 1.14Go version (client): go1.3.1Git commit (client): fa7b24fOS/Arch (client): linux/amd64Server version: 1.2.0Server API version: 1.14Go version (server): go1.3.1Git commit (server): fa7b24f

测试Dockerfile:

我pull了一个最小化的ubuntu image:

docker pull dbehnke/ubuntu1404

在本地目录创建了一个名为Dockerfile的文件,:

vi Dockerfile#添加以下内容#my test imageFROM dbehnke/ubuntu1404:latest   #从现有的image创建一个新的imageMAINTAINER Hochikong             #维护者信息RUN mkdir -p /home/backup        RUN mv /etc/apt/sources.list /home/backupRUN wget http://172.16.77.157/sources.list -P /etc/apt        #从宿主机(172.16.77.157)的apache2服务器下载本地化的sources.list文件,因为国外源太慢RUN apt-get update

执行build:

docker build -t="hochikong/local:v1" .          #不要忘了后面的那一点,指代本地的Dockerfile文件;另外hochikong必须小写,之前我输入的是大写提示"only [a-z0-9_] are allowed, size between 4 and 30"

看看我的image有没有被创建好:

之前这篇的问题终于被解决了

测试--link参数的使用:

先启动一个名为base的容器(父容器):

docker run -d -p 1000:5000 --name base training/webapp python app.py

查看状态:

root@docker:~# docker psCONTAINER ID        IMAGE                    COMMAND             CREATED             STATUS              PORTS                    NAMES928ebabc26eb        training/webapp:latest   "python app.py"     32 seconds ago      Up 31 seconds       0.0.0.0:1000->5000/tcp   base

可以看到容器已经启动,主机的1000端口被绑定到容器的5000端口,容器名为base

再启动一个名为web的子容器:

docker run -d -p 2000:5000 --name web --link base:base training/webapp python app.py

再次检查状态:

root@docker:~# docker psCONTAINER ID        IMAGE                    COMMAND             CREATED             STATUS              PORTS                    NAMES21f82b33c27a        training/webapp:latest   "python app.py"     30 seconds ago      Up 29 seconds       0.0.0.0:2000->5000/tcp   web                 928ebabc26eb        training/webapp:latest   "python app.py"     2 minutes ago       Up 2 minutes        0.0.0.0:1000->5000/tcp   base,web/base

可以看到,web容器已经启动。同时base容器的NAMES一栏多了web/base这个内容,实际上,"web/base"中,web指的是连接到base的子容器,但是"/"后面的是这个链接的别名(推荐和父容器的容器名相同,接下来你会知道为什么)

我再启动一个名为web2的子容器,同样连接到base上:

docker run -d -p 3000:5000 --name web2 --link base:connection2 training/webapp python app.py

看看docker ps的结果:

root@docker:~# docker psCONTAINER ID        IMAGE                    COMMAND             CREATED             STATUS              PORTS                    NAMESd180046639f4        training/webapp:latest   "python app.py"     57 seconds ago      Up 56 seconds       0.0.0.0:3000->5000/tcp   web2                             21f82b33c27a        training/webapp:latest   "python app.py"     5 minutes ago       Up 5 minutes        0.0.0.0:2000->5000/tcp   web                              928ebabc26eb        training/webapp:latest   "python app.py"     8 minutes ago       Up 8 minutes        0.0.0.0:1000->5000/tcp   base,web/base,web2/connection2

在base的NAMES栏多了"web2/connection2"(对此你可以参考https://docs.docker.com/userguide/dockerlinks/,看看"--link name:alias"的含义)

我们通过nsenter连接一下web2,先获取PID号:

root@docker:~# docker inspect web2 | grep Pid                      #docker inspect CONTAINERNAME能以JSON格式输出指定容器的详细信息,我直接用grep过滤出来        "Pid": 21275,

连接web2:

nsenter --target 21275 --mount --uts --net --ipc --pid                     #使用那个PID值

查看该容器的/etc/hosts文件:

我再查看下base的IP地址:

root@docker:~# docker inspect base | grep IP        "IPAddress": "172.17.0.11",        "IPPrefixLen": 16,

你是不是觉得很残念!实际上,172.17.0.11正是base的IP地址,但是在web2中,显示的却是该链接的名称,你ping主机connection2实际上是ping容器base。但是我认为这很不合理!为什么hosts文件写的不是父容器的容器名而是链接的名称?

ping下base容器:

ping是ping得通。

正是因为不合理,我才强烈建议你这样写:

docker run -d -p 2000:5000 --name web --link base:base training/webapp python app.py

使链接的名(":"后的base)和父容器名(":"前的base)相同!

连接上web容器,可以看到hosts中的信息,这样的话,ping父容器名也更合理:

注意:

在base容器中不包含子容器的信息:

在设计应用的时候,尤其要注意这一点(不可能使web服务为父容器,数据库为子容器吧?)

感谢各位的阅读!关于"Docker中使用0.9.1版Docker会遇到什么问题"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

容器 问题 信息 文件 内容 链接 主机 名称 实际 实际上 版本 参考 测试 不合理 相同 参数 地址 建议 更多 状态 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手冲咖啡和咖啡机区别 互联网的科技 互联网科技公司怎么样 成都互联网科技公司 易通互联网络科技有限公司 人人互联网科技是培训 四个字互联网科技公司取名 中国最先进互联网科技公司 互联网校园科技培训 苏州铭阳互联网科技有限公司 米聚互联网科技南京有限公司排面 广西互联网科技孵化中心 天津腾达互联网科技有限公司 互联网科技大赛获奖感言 华中科技大学互联网的牛人 陕西云淼互联网科技公司 互联网科技包装股份有限公司上市 北京互联网科技类企业分布 深圳互联网科技园地址 互联网科技企业文化 关于新基建和互联网科技 北京互联网科技公司 互联网金融和金融科技 美国互联网前沿科技 重庆威客帮互联网科技 青海科技产业互联网发展 半导体是互联网高科技吗 互联网科技新闻 互联网金融运营模式中的金融科技 现代科技的标志之一的互联网
0