AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[amazon-ecr](server)

Martin Hope
Travis
Asked: 2021-06-29 07:37:19 +0800 CST

为什么我的容器在我提交后不包含数据库数据?

  • 0

我正在尝试创建一个已经包含开发数据的 PostgreSQL 容器。我可以看到我创建的数据,但是当我commit、、push和pull图像时,数据不存在。

下面是我的 Dockerfile:

FROM postgis/postgis:11-2.5
MAINTAINER Me

# Contents of 20-init_db.sql:
# CREATE EXTENSION IF NOT EXISTS btree_gist;
# CREATE EXTENSION IF NOT EXISTS hstore;
COPY ./20-init_db.sql /docker-entrypoint-initdb.d/20-init_db.sql
COPY ./make_data.sh /make_data.sh

我使用下面的脚本创建了容器,并且成功填充了数据。

#!/bin/bash

aws ecr get-login-password --region us-east-1 | \
    docker login --username AWS --password-stdin 23456789JQKA.dkr.ecr.us-east-1.amazonaws.com

aws ecr create-repository --repository-name dev_postgres --region us-east-1

# Make sure the build environment is clean
docker stop dev_postgres_container
docker rm dev_postgres_container
docker rmi dev_postgres_img

# Prepare the container
docker build -f postgres.Dockerfile -t dev_postgres_img .
docker run -d --name dev_postgres_container \
    -e POSTGRES_DB=the_database \
    -e POSTGRES_USER=the_user \
    -e POSTGRES_PASSWORD=the_password \
    -e PGDATA=/var/lib/postgresql/data/pgdata
    dev_postgres_img
docker exec -it dev_postgres_container bash /make_data.sh

###
### This returns the correct number of users, so there is data in the container at this point.
###
docker exec -it dev_postgres_container /usr/bin/psql -U the_user the_database -c "select count(*) from auth_user;"

# Commit the container state and save it to Amazon ECR:
docker commit $(docker ps -q --filter "name=dev_postgres_container") 23456789JQKA.dkr.ecr.us-east-1.amazonaws.com/dev_postgres:11-2.5-with-data

# Also tag it with "latest" and the timestamp
docker tag 23456789JQKA.dkr.ecr.us-east-1.amazonaws.com/dev_postgres:11-2.5-with-data 23456789JQKA.dkr.ecr.us-east-1.amazonaws.com/dev_postgres:latest-with-data
docker tag 23456789JQKA.dkr.ecr.us-east-1.amazonaws.com/dev_postgres:11-2.5-with-data 23456789JQKA.dkr.ecr.us-east-1.amazonaws.com/dev_postgres:$( date -u +%Y%m%d_%H%MZ )-with-data

# Push
docker push 23456789JQKA.dkr.ecr.us-east-1.amazonaws.com/dev_postgres --all-tags

但是,当我在隔离环境中拉容器时,没有数据:

brew install virtualbox
brew install multipass
sudo multipass set local.driver=virtualbox
multipass launch --name ubuntu2
multipass mount ~/.aws ubuntu2:/home/ubuntu/.aws
multipass mount ./db ubuntu2:/home/ubuntu/db
multipass exec ubuntu2 -- bash /home/ubuntu/db/test_db_container.sh

### Contents of test_db_container.sh are below: ###

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

sudo apt-get install -y awscli

# Pull Docker container:
aws ecr get-login-password --region us-east-1 | \
    sudo docker login --username AWS --password-stdin 23456789JQKA.dkr.ecr.us-east-1.amazonaws.com
sudo docker pull 23456789JQKA.dkr.ecr.us-east-1.amazonaws.com/dev_postgres:latest-with-data

sudo docker run -d --name the_db 23456789JQKA.dkr.ecr.us-east-1.amazonaws.com/dev_postgres:latest-with-data

###
### The auth_user table does not exist.
###
sudo docker exec -it the_db /usr/bin/psql -U the_user the_database -c "select count(*) from auth_user;"

sudo docker history 23456789JQKA.dkr.ecr.us-east-1.amazonaws.com/dev_postgres:latest-with-data

## Result:
IMAGE          CREATED        CREATED BY                                      SIZE      COMMENT
854dbef239c2   23 hours ago   postgres                                        70B
4b1bd66a8d33   23 hours ago   COPY ./make_data.sh /make_data.sh               3.03kB    buildkit.dockerfile.v0
<missing>      23 hours ago   COPY ./20-init_db.sql /docker-entrypoint-ini…   188B      buildkit.dockerfile.v0
<missing>      23 hours ago   MAINTAINER Me                                   0B        buildkit.dockerfile.v0
[...]

旁注:我考虑过创建一个数据卷容器,但这种方法似乎更简单且文档更好。

其他注意事项:我无法在 Dockerfile 中添加数据,因为 Postgres 需要在插入数据之前运行。

为什么不docker commit保存我的容器的状态?为什么图像不包含数据?

postgresql docker-registry docker amazon-ecr
  • 1 个回答
  • 388 Views
Martin Hope
MikeVelazco
Asked: 2020-05-27 08:06:19 +0800 CST

是否有可能有一个故障转移/备份 docker 注册表?

  • 2

自从上周quay.io 失败以来,公司里的每个人都认识到服务的重要性。这在我脑海中提出了这个问题:

如果再次发生这种情况,我的基础设施如何准备好使用辅助 docker 容器注册表以防第一个不可用?

amazon-web-services docker-registry docker amazon-ecr
  • 1 个回答
  • 1369 Views
Martin Hope
the_jerryyy
Asked: 2020-03-13 08:41:04 +0800 CST

如何在 Elastic Container Service (ECS) 或 Elastic Container Registry (ECR)、Elastic Beanstalk 和 Lambda 之间进行选择?

  • 5

背景: 我使用过 EC2 和 RDS。最近我收到一位客户的询问,他想使用 Amazon Web Services 开发移动和 Web 应用程序,并且需要关于他应该使用哪种服务的建议?

  • 弹力豆茎
  • 拉姆达
  • 弹性容器服务 (ECS) 或弹性容器注册表 (ECR)

此外,我已经通过 YouTube 和 Google 上的几个教程来了解这些服务,但我仍然无法弄清楚他应该使用哪种服务。

问题: 我没有使用上述服务的任何适当知识和经验。因此,我希望有与他们合作过的人的建议。

请说明使用特定服务的优缺点,以便我提供建议。

amazon-web-services amazon-ecs elastic-beanstalk amazon-lambda amazon-ecr
  • 2 个回答
  • 359 Views
Martin Hope
Moak
Asked: 2020-02-28 17:51:06 +0800 CST

登录 ECR 的正确方法是什么?

  • 3

目前,我的 bash 脚本中有这个命令,用于构建图像并将其推送到 Amazon ECR

docker login -u AWS -p "$(aws ecr get-login-password)" "https://$(aws sts get-caller-identity --query 'Account' --output text).dkr.ecr.us-east-1.amazonaws.com"

这给出了警告“警告!通过 CLI 使用 --password 是不安全的。使用 --password-stdin。”

如何更改此命令以不发出警告?这真的不安全吗?

aws-cli amazon-ecr
  • 4 个回答
  • 7900 Views
Martin Hope
Friedrich 'Fred' Clausen
Asked: 2017-01-30 21:22:01 +0800 CST

AWS ECR - 获取图像的年龄

  • 0

有没有办法找到推送到 AWS ECR 的 Docker 映像的年龄?

当我请求图像清单时,aws ecr batch-get-image --repository some/repo --image-ids "imageDigest=sha256:abcdef..."它会返回带有嵌入式清单的 AWS 回复。样本输出

{
  "images": [
     {
        "registryId": "1234",
        "imageId": {
          "imageDigest": "sha256:abcdef...",
          "imageTag": "latest"
         }
      },
      "imageManifest": "<serialised JSON I'll paste below>"
      "repositoryName": "some/repo"
     }
    ],
   "failures": []
}

AWS 响应中嵌入的序列化 JSON 看起来是这样的:

{
  "schemaVersion": 2,
  "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
  "config": {
    "mediaType": "application/vnd.docker.container.image.v1+json",
    "size": 123456,
    "digest": "sha256:38f08cc551925935e235c5c94ab3fb89568bd286e3335aa2e05d7bd3ceee4574"
  },
  "layers": [
    {
      "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
      "size": 573764,
      "digest": "sha256:06dde66f337b57adcfca48b87d126b99a249765ccf2e09964584befc2890ae79"
    }
  ]
}

我看不到任何元数据表明此图像何时被推送到 ECR。

amazon-web-services amazon-ecr
  • 1 个回答
  • 302 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve