如何永久重命名docker-compose管理的Docker容器?
解决方案
docker-compose 默认生成容器名称的规则为 [项目名]_[服务名]_[副本序号],默认项目名取docker-compose.yml所在文件夹的名称。你通过docker rename修改的是已创建容器的临时名称,执行docker-compose down会删除原有容器,重新up时会按照compose配置的规则生成新容器,所以名称会复原。
方法1:在docker-compose.yml中指定固定容器名(最稳妥,完全自定义)
直接在对应service配置块中添加container_name参数,指定你想要的永久名称即可,修改后的配置示例如下:
version: "3.7" services: #Laravel App app: build: args: user: mike uid: 1000 context: ./ dockerfile: Dockerfile image: laravel-app container_name: laravel-api-app # 新增指定容器名 restart: unless-stopped working_dir: /var/www/ volumes: - ./:/var/www networks: - mynetwork #Nginx Service nginx: image: nginx:alpine container_name: laravel-api-nginx # 新增指定容器名 restart: unless-stopped ports: - 8000:80 volumes: - ./:/var/www - ./nginx/conf.d:/etc/nginx/conf.d/ networks: - mynetwork networks: mynetwork: driver: bridge
修改完成后执行docker-compose down && docker-compose up -d,之后不管重建多少次,容器都会使用你设置的固定名称。
方法2:修改docker-compose项目名(仅修改前缀,适合多副本部署场景)
默认项目名取yml所在文件夹名,你当前文件夹名为laravel_docker_medium_tut,所以容器前缀为此名称,可二选一修改:
- 直接将yml所在文件夹重命名为你想要的前缀,比如
laravel-api,之后启动的容器名称就会变为laravel-api_app_1、laravel-api_nginx_1 - 每次执行compose命令时添加
-p参数指定项目名,例如:docker-compose -p laravel-api up -d
注意事项
如果使用container_name指定固定名称,要保证该名称全局唯一,不能和本地已存在的其他容器重名,否则会启动失败。
内容的提问来源于stack exchange,提问作者Maik Lowrey
相关产品推荐
相关产品推荐

