LaradockでWARNING: Host is already in use by another container

Laradockのロゴ画像
  • URLをコピーしました!

久しぶりに新しくLaradockプロジェクトを立ち上げようと思い、gitで最新のLaradockをクローンして実行したらこんなエラーが。

 

$ docker-compose up -d nginx mysql phpmyadmin
Recreating laradock_docker-in-docker_1 ... done
Recreating laradock_mysql_1            ... done
Recreating laradock_workspace_1        ... 
Recreating laradock_workspace_1        ... error
WARNING: Host is already in use by another container

ERROR: for laradock_workspace_1  Cannot start service workspace: driver failed programming external connectivity 
on endpoint laradock_workspace_1 (32b48ac6bc41c6c8e5e4bcc2d5be2ff8b6b252732ca175cd2a0b3bc07257cf9f): 
Bind for 0.0.0.0:8080 failRecreating laradock_phpmyadmin_1       ... done

ERROR: for workspace  Cannot start service workspace: driver failed programming external connectivity on endpoint 
laradock_workspace_1 (32b48ac6bc41c6c8e5e4bcc2d5be2ff8b6b252732ca175cd2a0b3bc07257cf9f): Bind for 0.0.0.0:8080 failed: 
port is already allocated
ERROR: Encountered errors while bringing up the project.

 

なんか、laradock_workspace_1 コンテナのポートがすでに使われてるみたいなことを言われてる…?

8080番ポートにバインドされているけど、phpmyadminが使ってるよ的な?

 

 

結論から言うと、workspaceコンテナで使うポートとphpmyadminで使うポートが被っているのが原因でした。

 

なので、.envファイルで指定されているworkspaceコンテナのポート番号を別の番号に変更したら解決できました。

 

 

以下、解決までの流れを自分用にメモしておきます。

 

 

 

目次

Dockerを再起動するも変化なし

 

ちょっと調べてみたところ、以下の記事を発見。

docker-compose up したらdriver failed programming external connectivity on endpointが出てきた

 

記事の通りに早速Dockerを再起動してみましたが、特に変化なし。

 

 

ポート番号を変更

 

今まではコンテナを立ち上げるときは、以下のサービスを立ち上げていました。

 

docker-compose up -d nginx mysql phpmyadmin

 

なので今回も同じようにコンテナを立ち上げてみましたが、うまく立ち上がりません。

 

今回はこれを解決して、nginx、mysql、phpmyadminを同時に立ち上げることがゴールです。

 

 

以下のエラー文を見る限り、原因はどうやらポートが被ってるのがいけないっぽい。

 

$ docker-compose up -d nginx mysql phpmyadmin
... 省略 ...
Recreating laradock_workspace_1 ... error
WARNING: Host is already in use by another container
... 省略 ...

 

なので、ポート番号がどのように割り当てられているか確認。

 

$ docker-compose ps -a
           Name                          Command                State                   Ports              
-----------------------------------------------------------------------------------------------------------
laradock_docker-in-docker_1   dockerd-entrypoint.sh            Up         2375/tcp, 2376/tcp               
laradock_mysql_1              docker-entrypoint.sh mysqld      Up         0.0.0.0:3306->3306/tcp, 33060/tcp
laradock_phpmyadmin_1         /docker-entrypoint.sh apac ...   Up         0.0.0.0:8080->80/tcp             
laradock_workspace_1          /sbin/my_init                    Exit 128

 

nginxとか立ち上がってないじゃん…。

それはさておき、やはりworkspaceコンテナに問題がありそう。

 

手順を間違えたのかな?と思い、Laradockのドキュメントを読み返しているとこんな一文が。

 

(Please note that sometimes we forget to update the docs, so check the docker-compose.yml file to see an updated list of all available containers).

 

なのでとりあえず、docker-compose.yml ファイルを見てみることに。

 

...省略...

57### Workspace Utilities ##################################
58     workspace:
59       build:
60         context: ./workspace
61         args:
62           - CHANGE_SOURCE=${CHANGE_SOURCE}
63           - UBUNTU_SOURCE=${UBUNTU_SOURCE}

...省略...

154       ports:
155         - "${WORKSPACE_SSH_PORT}:22"
156         - "${WORKSPACE_VUE_CLI_SERVE_HOST_PORT}:8080"
157         - "${WORKSPACE_VUE_CLI_UI_HOST_PORT}:8000"
158       tty: true
159       environment:
160         - PHP_IDE_CONFIG=${PHP_IDE_CONFIG}

...省略...

 

なるほど、WORKSPACE_SSH_PORT が、コンテナの22番ポートに割り当てられるということか、多分。

 

WORKSPACE_SSH_PORTの値が何か知るために、次は .env を見てみることに。

 

...省略

85 ### WORKSPACE #############################################
86  
87 WORKSPACE_COMPOSER_GLOBAL_INSTALL=true
88 WORKSPACE_COMPOSER_AUTH=false
89 WORKSPACE_COMPOSER_REPO_PACKAGIST=

...省略...

155 WORKSPACE_CHROME_DRIVER_VERSION=2.42
156 WORKSPACE_TIMEZONE=UTC
157 WORKSPACE_SSH_PORT=2222
158 WORKSPACE_INSTALL_FFMPEG=false
159 WORKSPACE_INSTALL_WKHTMLTOPDF=false
160 WORKSPACE_INSTALL_GNU_PARALLEL=false
161 WORKSPACE_INSTALL_AST=true
162 WORKSPACE_AST_VERSION=1.0.3
163 WORKSPACE_VUE_CLI_SERVE_HOST_PORT=8080
164 WORKSPACE_VUE_CLI_UI_HOST_PORT=8001
165 WORKSPACE_INSTALL_GIT_PROMPT=false

...省略...

 

WORKSPACE_SSH_PORT=2222 ってことが判明。

 

でもよく見てみると、それよりも気になる一行が…

 

163 WORKSPACE_VUE_CLI_SERVE_HOST_PORT=8080

 

なんで、ここに8080番ポートが割り当てられてるんだ?

さっき docker-compose ps で確認した時は、8080番はphpmyadminが使ってたはず。

 

ってことで、この行の8080番を別のポート番号(安直に8081番)にしてみることに。

 

その後、docker-compose down -v でコンテナを削除してから、再び docker-compose up で立ち上げてみたら、

 

$ docker-compose down -v
Stopping laradock_phpmyadmin_1       ... done
Stopping laradock_mysql_1            ... done
Stopping laradock_docker-in-docker_1 ... done
Removing laradock_phpmyadmin_1       ... done
Removing laradock_workspace_1        ... done
Removing laradock_mysql_1            ... done
Removing laradock_docker-in-docker_1 ... done
Removing network laradock_frontend
Removing network laradock_backend
Removing network laradock_default
Removing volume laradock_mysql
Removing volume laradock_percona
Removing volume laradock_mssql
Removing volume laradock_postgres
Removing volume laradock_memcached
Removing volume laradock_redis
Removing volume laradock_neo4j
Removing volume laradock_mariadb
Removing volume laradock_mongo
Removing volume laradock_minio
Removing volume laradock_rethinkdb
Removing volume laradock_phpmyadmin
Removing volume laradock_adminer
Removing volume laradock_aerospike
Removing volume laradock_caddy
Removing volume laradock_elasticsearch
Removing volume laradock_mosquitto
Removing volume laradock_confluence
Removing volume laradock_sonarqube
Removing volume laradock_cassandra
Removing volume laradock_graylog
Removing volume laradock_docker-in-docker

$ docker-compose up -d nginx mysql phpmyadmin
Creating network "laradock_frontend" with driver "bridge"
Creating network "laradock_backend" with driver "bridge"
Creating network "laradock_default" with the default driver
Creating volume "laradock_mysql" with local driver
Creating volume "laradock_percona" with local driver
Creating volume "laradock_mssql" with local driver
Creating volume "laradock_postgres" with local driver
Creating volume "laradock_memcached" with local driver
Creating volume "laradock_redis" with local driver
Creating volume "laradock_neo4j" with local driver
Creating volume "laradock_mariadb" with local driver
Creating volume "laradock_mongo" with local driver
Creating volume "laradock_minio" with local driver
Creating volume "laradock_rethinkdb" with local driver
Creating volume "laradock_phpmyadmin" with local driver
Creating volume "laradock_adminer" with local driver
Creating volume "laradock_aerospike" with local driver
Creating volume "laradock_caddy" with local driver
Creating volume "laradock_elasticsearch" with local driver
Creating volume "laradock_mosquitto" with local driver
Creating volume "laradock_confluence" with local driver
Creating volume "laradock_sonarqube" with local driver
Creating volume "laradock_cassandra" with local driver
Creating volume "laradock_graylog" with local driver
Creating volume "laradock_docker-in-docker" with local driver
Creating laradock_docker-in-docker_1 ... done
Creating laradock_mysql_1            ... done
Creating laradock_workspace_1        ... done
Creating laradock_phpmyadmin_1       ... done
Creating laradock_php-fpm_1          ... done
Creating laradock_nginx_1            ... done

 

うまくいきました!

 

ポート番号も確認してみると、

 

$ docker-compose ps
           Name                          Command               State                                  Ports                                
-------------------------------------------------------------------------------------------------------------------------------------------
laradock_docker-in-docker_1   dockerd-entrypoint.sh            Up      2375/tcp, 2376/tcp                                                  
laradock_mysql_1              docker-entrypoint.sh mysqld      Up      0.0.0.0:3306->3306/tcp, 33060/tcp                                   
laradock_nginx_1              /bin/bash /opt/startup.sh        Up      0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:81->81/tcp        
laradock_php-fpm_1            docker-php-entrypoint php-fpm    Up      9000/tcp                                                            
laradock_phpmyadmin_1         /docker-entrypoint.sh apac ...   Up      0.0.0.0:8080->80/tcp                                                
laradock_workspace_1          /sbin/my_init                    Up      0.0.0.0:2222->22/tcp, 0.0.0.0:8001->8000/tcp, 0.0.0.0:8081->8080/tcp

 

ちゃんと、8080番はphpmyadminコンテナ、8081番はworkspaceコンテナに割り当てられてるのが確認できます。

 

 

補足 前ver.のLaradockとの比較

 

一応、今まで使ってたLaradockプロジェクトの方でもポートを確認してみました。

 

$ docker-compose ps
           Name                          Command               State                    Ports                  
---------------------------------------------------------------------------------------------------------------
laradock_docker-in-docker_1   dockerd-entrypoint.sh            Up      2375/tcp, 2376/tcp                      
laradock_mysql_1              docker-entrypoint.sh mysqld      Up      0.0.0.0:3306->3306/tcp, 33060/tcp       
laradock_nginx_1              /bin/bash /opt/startup.sh        Up      0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
laradock_php-fpm_1            docker-php-entrypoint php-fpm    Up      9000/tcp                                
laradock_phpmyadmin_1         /docker-entrypoint.sh apac ...   Up      0.0.0.0:8080->80/tcp                    
laradock_workspace_1          /sbin/my_init                    Up      0.0.0.0:2222->22/tcp

 

そして、今回がこれ↓(再掲載)

 

$ docker-compose ps
           Name                          Command               State                                  Ports                                
-------------------------------------------------------------------------------------------------------------------------------------------
laradock_docker-in-docker_1   dockerd-entrypoint.sh            Up      2375/tcp, 2376/tcp                                                  
laradock_mysql_1              docker-entrypoint.sh mysqld      Up      0.0.0.0:3306->3306/tcp, 33060/tcp                                   
laradock_nginx_1              /bin/bash /opt/startup.sh        Up      0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:81->81/tcp        
laradock_php-fpm_1            docker-php-entrypoint php-fpm    Up      9000/tcp                                                            
laradock_phpmyadmin_1         /docker-entrypoint.sh apac ...   Up      0.0.0.0:8080->80/tcp                                                
laradock_workspace_1          /sbin/my_init                    Up      0.0.0.0:2222->22/tcp, 0.0.0.0:8001->8000/tcp, 0.0.0.0:8081->8080/tcp

 

これをみる限り、今までのLaradockのworkspaceコンテナのポートは2222番だけですが、なぜか今回は8000番と8080番が追加されています。

 

今回のwoekspaceコンテナに関して .envの設定を見てみると、今までとは違うポートも割り当てられていました。

 

...省略... 
156         - "${WORKSPACE_VUE_CLI_SERVE_HOST_PORT}:8080"
157         - "${WORKSPACE_VUE_CLI_UI_HOST_PORT}:8000"
...省略...

 

アップデートした際に追加されたのかな?

 

この記事を書いた人

コメント

コメント一覧 (2件)

コメントする

目次