dockerexec-it要加binbash吗

dockerexec-it要加binbash吗,第1张

分两部分看,首先需要理解的是docker exec <container>表示在容器中执行命令,那么在容器中执行什么命令呢,就由 后面的参数决定的.

/bin/bash是Linux的一种常用shell脚本,用于解释执行Linux命令,根据镜像支持的shell的不同,可以使用不同的的shell脚本。

所以结合起来我们知道这个命令是用于在支持/bin/bash脚本的容器中执行相应命令。

例如: 执行docker exec -it ubuntu /bin/bash 就会进入ubuntu容器的/bin/bash脚本执行模式,这时候就相当于登录到容器内部,可以通过shell和这个容器即ubuntu交互,可以执行各种Linux命令了

docker添加挂载目录:先在docker容器里创建目录/import

1.关闭docker

2.sudo su切换到root身份,cd /var/lib/docker/containers/容器id/,进入对应容器目录

3.vi hostconfig.json,修改如下,将容器目录/import绑定到主机/data目录:

4.vi config.v2.json,修改如下,添加MountPoints:

5.启动docker

最后docker ecec -it 容器id /bin/bash进入ls -l /就可以看见import目录

添加端口在这个文件hostconfig.json

首先输入

可以看到我当前的名叫mynginx容器只打开了80端口

在给mynginx容器添加上这条命令:

来设置重启docker之后自动启动该容器。设置完成后再修改hostconfig.json文件中的"PortBindings"就行。

然后停止容器systemctl stop docker

然后进入到该容器的hostconfig.json文件中,增加一个8000的端口

保存后退出

再次启动docker容器systemctl start docker

输入docker ps -a查看

发现已经增加了8000端口

若想要增加容器端口,则需要把config.v2.json中的ExposedPorts也加上你想添加的端口号

docker run指定的命令如果不是那些一直挂起的命令(比如运行top,不断echo),就是会自动退出的。-d命令是设置detach为true,根据官方的文档,意思是让这个命令在后台运行,但并不是一直运行(我们在一个正常的Linux Terminal中运行/bin/bash,运行完了也就完了,不会一直挂着等待响应的,所以确实没办法用daemon方式来跑/bin/bash)。

这个地方官方早期和现在的文档也确实有些前后不一致,现在是detach,早期的文档说指定-d以daemon方式来运行容器,可能存在一定的误解。

另外,如果你需要跑容器里的bash,直接运行docker run -i -t CONTAINER_NAME /bin/bash 就可以了,如果觉得参数比docker attach多,可以设置一个别名(alias)来解决:

alias dockerbash='docker run -i -t CONTAINER_ID /bin/bash'

设置好别名后,直接运行dockerbash就可以进入容器的bash了。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11326167.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存