为什么你不能在Docker中使用“service postgres start”启动postgres?
所有的教程都指出以格式运行postgres
docker run -d -p 5432 \ -t <your username>/postgresql \ /bin/su postgres -c '/usr/lib/postgresql/9.2/bin/postgres \ -D /var/lib/postgresql/9.2/main \ -c config_file=/etc/postgresql/9.2/main/postgresql.conf'
为什么我们不能在我们的Docker文件中有:
ENTRYPOINT ["/etc/init.d/postgresql-9.2", "start"]
并简单地通过启动容器
docker run -d psql
这不是Entrypoint的目的,还是我错过了什么?
区别在于/etc/init.d
提供的初始化脚本不是入口点。 它的目的是完全不同的; 在后台获取入口点,然后向调用者报告成功或失败。 该脚本通常间接地通过pg_ctl
启动postgres
进程,从控制terminal分离。
为了使docker工作得最好,它需要直接运行应用程序,连接到docker进程。 这样当用户请求时可以有用并且一般地终止它,或者快速发现并响应进程崩溃。
举例IfLoop说。
将CMD用于Dockerfiles:
USE postgres CMD ["/usr/lib/postgresql/9.2/bin/postgres", "-D", "/var/lib/postgresql/9.2/main", "-c", "config_file=/etc/postgresql/9.2/main/postgresql.conf"]
跑步:
$docker run -d -p 5432:5432 psql
观看PostgeSQL日志:
$docker logs -f POSTGRES_CONTAINER_ID
- 如何从docker连接到本地进程
- 在kubernetes中绑定应用程序窗格和数据库窗格
- 在Kubernetes上运行PhantomJS Selenium节点
- Cassandra docker – 无法通过JMX连接
- 在Windows上通过命名pipe道访问Docker API
- 如何使用/链接远程postgres数据库与Django泊坞窗实施
- 尝试在composer php中运行php内置服务器时,获取“php_network_getaddresses:getaddrinfo失败:名称或服务未知”
- Javascript Date在Karmatesting中给出错误的时区
- 如何在“Docker for Windows”中启用docker remote API