Docker:运行--net = host选项更改为容器

时间:2017-11-06 23:25:01

标签: mysql shell ubuntu docker

目标:目前正尝试从容器连接到主机上的MySQL数据库。

操作:我已经看到了这个问题的几个答案,一个是使用--net=host选项以仅主机模式运行容器,因此我可以使用localhost/127.blah访问主机。

结果:通常,当我执行命令

docker run -it [image_id] bash

我收到了[user]@[container_id]的shell提示符(即username@12345abcdef)。但是,当我执行命令

docker run --net=host -it [image_id] bash

它将我带到与主机相同的提示,但不再以粗体显示(特别是提示[user]@[container_id]不再以粗体显示)。由于文件结构的原因,我可以告诉我在容器中。

问题:发生了什么?我是连接主机数据库的正确途径吗?为什么它是相同的提示,字体类型从粗体(主机)更改为非粗体(容器)的重要性是什么?

如果重要,则在Vagrant机器内创建/运行docker容器。

1 个答案:

答案 0 :(得分:2)

通常在shell提示符中看到的容器ID是容器主机名。使用--net=host时,您的容器主机名与主机的主机名相同。您已删除容器具有的常规网络命名空间。因此,使用容器的bash提示符看起来类似于主机上的提示,每个提示符都显示相同的字段。您可以通过检查$PS1

的值来查看提示的格式

编辑:这里是来自不同基本图片的$PS1的不同值的比较(我的主机恰好是Debian):

$ echo $PS1
${debian_chroot:+($debian_chroot)}\u@\h:\w\$

$ docker run -it --rm debian:latest
root@4aca692dc29d:/# echo $PS1
${debian_chroot:+($debian_chroot)}\u@\h:\w\$
root@4aca692dc29d:/# exit
exit

$ docker run -it --rm ubuntu
root@b1eb8e51d672:/# echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
root@b1eb8e51d672:/# exit
exit

$ docker run -it --rm busybox
/ # echo $PS1
\w \$
/ # exit

$ docker run -it --rm centos
[root@abbfa9aa6968 /]# echo $PS1
[\u@\h \W]\$
[root@abbfa9aa6968 /]# exit
exit