是否可以在AWS批处理上运行docker-in-docker?
我尝试过通过容器属性安装docker套接字的方法:
container_properties = <<CONTAINER_PROPERTIES
{
"command": ["docker", "run", "my container"],
"image": "docker/compose",
"jobRoleArn": "my-role",
"memory": 2000,
"vcpus": 1,
"privileged": true,
"mountPoints": [
{
"sourceVolume": "/var/run/docker.sock",
"containerPath": "/var/run/docker.sock",
"readOnly": false
}
]
}
Run Code Online (Sandbox Code Playgroud)
但是,在具有默认配置的 SPOT 计算环境中运行此批处理作业会产生一个立即转换为 FAILED 状态的作业,状态转换原因如下:
Status reason
Unknown volume '/var/run/docker.sock'.
Run Code Online (Sandbox Code Playgroud)
解决方案是必须定义volumes两者。mountPoints例如,以下容器属性有效:
{
"command": ["docker", "run", "<my container>"],
"image": "docker/compose",
"jobRoleArn": "my-role",
"memory": 2000,
"vcpus": 1,
"privileged": false,
"volumes": [
{
"host": {
"sourcePath": "/var/run/docker.sock"
},
"name": "dockersock"
}
],
"mountPoints": [
{
"sourceVolume": "dockersock",
"containerPath": "/var/run/docker.sock",
"readOnly": false
}
]
Run Code Online (Sandbox Code Playgroud)
从内部 docker 可以正常访问您的私有 ECR 映像,但是从外部 docker 对 ECR 的身份验证不会继续进行,因此您需要使用以下命令重新进行身份验证
aws ecr get-login-password \
--region <region> \
| docker login \
--username AWS \
--password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com
Run Code Online (Sandbox Code Playgroud)
在运行私有托管的 docker 容器之前。
事实证privileged明甚至不需要,这很好。
| 归档时间: |
|
| 查看次数: |
1371 次 |
| 最近记录: |