首页 > 解决方案 > Docker撰写两次创建服务

问题描述

我有一组 docker-compose 文件,可以在一台笔记本电脑上完美运行。我现在已经在一台新笔记本电脑上尝试了它们,它尝试两次启动相同的服务:

Creating gamersplane-mysql ... 
Creating gamersplane-mysql ... error

ERROR: for gamersplane-mysql  Cannot start service mysql: driver failed programming external connectivity on endpoint gamersplane-mysql (b34a05daf391646eb679288eefcaf855c20e62c4413289854388bfa0944de480): Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use

如果我运行 a docker ps -a,它会将服务显示为CREATED,但运行docker ps不会将容器显示为正在运行。

我的主要码头工人组成:

version: '3.6'

volumes:
  mysql_db:
    driver: local
    name: gp_mysql_db

services:
  mysql:
    container_name: gamersplane-mysql
    image: mysql:5.7
    env_file:
      - ./.env
    volumes:
      # - ./docker/mysql:/docker-entrypoint-initdb.d
      - mysql_db:/var/lib/mysql

使用扩展文件:

version: '3.6'

services:
  mysql:
    ports:
      - 3306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=test123
      - MYSQL_PASSWORD=test123

由于 docker 无论在哪个系统上都应该表现相同,所以我不知道出了什么问题。

标签: docker

解决方案


正如评论中所建议的,我跑了sudo isof -i :3306. 起初它没有显示任何内容,但重新启动后,mysqld出现在该端口上。我将其关闭,再次重新启动以确保安全,现在我的撰写文件正在启动。


推荐阅读