我正在寻找一种方法让用户能够在主机上执行一组有限的命令,同时只能从容器/浏览器访问它。目标是防止对主机的SSH需要偶尔运行命令,如make start
,make stop
等。这些make
命令只执行一系列{docker-compose
命令1}}命令,有时在开发中需要。
我能想到的两种可能方式是:
答案 0 :(得分:4)
虽然这可能不是最佳做法,但仍可以从容器内控制主机。如果您正在运行docker-compose命令,则可以使用ubuntu上的Select * from
(select a.*, row_number () over (partition by id order by city desc)rn
From tablename a
) b where rn=1
绑定装载docker socket。
如果您想使用其他系统工具,则必须使用-v /var/run/docker.sock:/var/run/docker.sock
绑定挂载所有必需的卷,当您想要使用使用-v
文件的系统箱时,这会变得非常棘手和乏味。
如果您需要使用/lib.*.so
命令,请不要忘记在运行容器时添加sudo
标志
答案 1 :(得分:-1)
容器不应该爆发并访问主机。 Docker(除其他外)是进程隔离。但是,当您进行设置时,您可能会发现在主机上执行某些代码的各种技巧。
答案 2 :(得分:-1)
这种方法将违背process/resources encapsulation的docker概念。使用docker,您可以完全从主机和彼此封装进程(除非您链接容器/卷)。在docker容器中,由于process namespaces,您无法在主机上看到任何正在运行的进程。当您现在想要在容器内执行主机上的进程时,这些进程将违反docker方法。