質問編集履歴

1 追記

docker-man

docker-man score 91

2019/05/17 08:03  投稿

docker-compose up実行時に「Address already in use」でコンテナの起動に失敗する
以下のDockerfile、docker-compose.ymlを基に、
$ docker-compose up
を実行しますと、次のようなエラーでコンテナの起動に失敗してしまいます。
```bash
Successfully tagged tomcat:1.0
WARNING: Image for service tomcat was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Creating tomcat ... error
ERROR: for tomcat Cannot start service tomcat: Address already in use
ERROR: for tomcat Cannot start service tomcat: Address already in use
ERROR: Encountered errors while bringing up the project.
```
「Address already in use」とのことで、ホスト側で
$ lsof -i | grep LISTEN
を実行してみましたが、ホストに割り当てたい8888番ポートは使われておりませんでした。
また、他のコンテナが8888番ポートを使っていることもありませんでした。  
上記のログから、イメージのビルド自体は成功しており、
$ docker run -it --name temp -p 8888:8080 tomcat:1.0
では問題なくコンテナが起動し、外部からアクセスできます。
ちなみにdocker-compose.ymlのports部分をコメントアウトしても上記のエラーが発生しました。portsは本件とは無関係なのでしょうか。
Dockerに詳しい方がおりましたら、原因等ご指摘頂けないでしょうか。
宜しくお願いします。
---
**環境情報**
macOs Mojave 10.14.4
Docker Desktop Community
 Engine: 18.09.2
 Compose: 1.23.2
**docker-compose.yml**
```yaml
version: "3.7"
services:
 tomcat:
   build: ap/
   image: tomcat:1.0
   container_name: tomcat
   tty: true
   ports:
    - "8888:8080"
   networks:
     app_net:
       ipv4_address: xxx.xxx.xxx.xxx
networks:
 app_net:
   ipam:
     driver: default
     config:
      - subnet: "xxx.xxx.xxx.xxx/xx"
```
**Dockerfile**
```
FROM centos:6.10
# Java 8
RUN yum update -y \
&& yum install -y java-1.8.0-openjdk
# Tomcat
WORKDIR /opt/apache-tomcat
RUN curl -O https://www-us.apache.org/dist/tomcat/tomcat-9/v9.0.19/bin/apache-tomcat-9.0.19.tar.gz \
&& tar xzf apache-tomcat-9.0.19.tar.gz \
&& useradd -s /sbin/nologin tomcat \
&& chown -R tomcat:tomcat /opt/apache-tomcat \
&& echo "export JAVA_HOME=$(dirname $(readlink $(readlink $(which java))) | sed -e 's#/bin.*##')" >> ~/.bash_profile \
&& source ~/.bash_profile
ENV CATALINA_HOME /opt/apache-tomcat/apache-tomcat-9.0.19
# Deploy
WORKDIR /opt/apache-tomcat/apache-tomcat-9.0.19/webapps
COPY xxx.war .
CMD $CATALINA_HOME/bin/startup.sh && /bin/bash
```
  • Docker

    1701 questions

    Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

  • docker-compose

    484 questions

    docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る