0

随着的到来

docker volume create

对于仅存储容器,我仍在使用旧方法在我的机器上运行 postgres,用于没有 dockerfile 的小型应用程序:

# MAKE MY DATA STORE
STORAGE_DIR=/home/username/mydockerdata/pgdata
docker create -v $STORAGE_DIR:/var/lib/postgresql/data --name mypgdata ubuntu true

# CREATE THE PG
docker run --name mypg -e POSTGRES_PASSWORD=password123 -d -p 5432:5432 --volumes-from mypgdata library/postgres:9.5.4

# RUN IT
docker start mypg
# docker stop mypg

我有4个问题:

  1. 如何将旧的方式将数据存储在本地持久容器中转移到现代卷?
  2. 我的权限似乎总是很奇怪: 我应该以不同的方式做这件事吗? $ ls -lah $STORAGE_DIR/.. drwx------ 19 999 root 4.0K Aug 28 10:04 pgdata
  3. 我的网络在这里看起来正确吗?这将仅在托管 docker 的机器上可见,或者这是否也发布到我的 wifi 网络上的所有机器上?
  4. 除了弱密码、标准端口、默认用户名(例如这里)之外,是否还有其他我应该知道的仅供个人使用的安全担忧?
4

1 回答 1

1
  1. 创建一个新卷并复制数据。然后使用新的卷定义运行您的容器。

    docker volume create --name mypgdata
    docker run --rm \
      -v $STORAGE_DIR:/data \
      -v mypgdata:/datanew ubuntu \
      sh -c 'tar -C /data -cf - . | tar -C /datanew -xvf -'
    docker run --rm -v mypgdata:/data ubuntu ls -l /data
    
  2. 权限正常。UID 999 是postgres 映像创建postgres的用户。

  3. 端口 5432 将可在您的所有 docker 主机接口上访问。如果您只希望它在 localhost 上可用,请使用--port 127.0.0.1:5432:5432

  4. 转向监听 localhost 可以缓解大多数安全问题,直到有人可以访问您的 docker 主机。一般安全性对于一个点来说有点过于宽泛。

于 2016-08-29T21:54:03.337 回答