我正在尝试通过 Vagrant Docker 规定运行 docker 容器:
d.run "tomcat:8.0", args: "-it -d -p 8888:8888 --name tomcat8"
Vagrant 可以很好地拉取图像,但是当涉及到运行容器时,我得到:
来自守护程序的错误响应:仅容器名称无效 (tomcat:8.0) 允许 [a-zA-Z0-9][a-zA-Z0-9_.-]
我想保留
:8.0
,以便我确定我运行的是正确的图像版本。
事实证明,Vagrant 默认情况下使用图像名称作为容器名称,即使我使用了
--name
arg。
就我而言,这很不幸,因为我是从 Dockerhub 的官方 Tomcat 存储库中提取数据,因此无法更改映像名称。
我发现 Vagrant 有一个名为
auto_assign_name
的额外设置,必须将其设置为 false
才能使用 --name
arg。
因此,有效的 Vagrant 系列将是:
d.run "tomcat:8.0", args: "-it -p 8080:8080 --name tomcat8", auto_assign_name: false
就我而言,当我尝试使用图像标签设置 Dockerfile 时,Docker 中出现了错误。
我是这样设置的:
version: '3.8'
services:
web:
build:
context: .
dockerfile: Dockerfile
image: easypanel-nextjs:0.0.1
container_name: nextjs-sqlite
env_file:
- .env.production
ports:
- 3000:3000
volumes:
- ./data:/data
有效的是将
image
移动到build
之上。奇怪的自动对焦错误。
version: '3.8'
services:
web:
image: easypanel-nextjs:0.0.1
build:
context: .
dockerfile: Dockerfile
container_name: nextjs-sqlite
env_file:
- .env.production
ports:
- 3000:3000
volumes:
- ./data:/data
这个错误是为了后代:
0.0s 来自守护进程的错误响应:容器名称无效(nextjs-sqlite:0.0.1),仅允许 [a-zA-Z0-9][a-zA-Z0-9_.-]