黒縁眼鏡は海を飛ぶ

IT中心にそこはかとなく

DockerでPostgreSQLコンテナを立ててUnixドメインソケット通信するなど

Dockerを使ってPostgreSQLコンテナをたてたときに、ホストからUnixドメインソケット経由で接続できるの?と思ったので試したメモ。

環境

# cat /etc/centos-release
CentOS Linux release 7.3.1611 (Core) 
# docker version
Client:
 Version:      1.13.0
 API version:  1.25
 Go version:   go1.7.3
 Git commit:   49bf474
 Built:        Tue Jan 17 09:55:28 2017
 OS/Arch:      linux/amd64

Server:
 Version:      1.13.0
 API version:  1.25 (minimum version 1.12)
 Go version:   go1.7.3
 Git commit:   49bf474
 Built:        Tue Jan 17 09:55:28 2017
 OS/Arch:      linux/amd64
 Experimental: false

ざっとコマンドを打ち込む

$ sudo docker pull kiasaki/alpine-postgres
$ sudo docker volume create --name db_vol
$ sudo docker volume create --name socket_vol

$ sudo docker run \
    -e POSTGRES_PASSWORD=mypostgrespassword \
    -v db_vol:/var/lib/postgresql/data \
    -v socket_vol:/tmp \
    -d kiasaki/alpine-postgres

# try to connect
$ psql -U postgres -h /var/lib/docker/volumes/socket_vol/_data

Q&A

接続はできるの?

できるよ

/tmpにデータボリュームマウントしてるけど、セキュリティ大丈夫??

大丈夫じゃない気がするけど、どうなんだろう…
お詳しい方ぜひ教えてください!

わからないならせめてunix_domain_directoryの値を変えたりとかは?

Dockerfileとかいじってみたんだけど、コンテナが動かなくなって…
docker build辛くなっちゃった。

hba.confはいじれなかったの?

Dockerfileとかいじって略
シェルスクリプトがあるのでちゃんと読んでみる。

参考

kiasaki/docker-alpine-postgres