<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>docker-compose up &#8211; FITSブログ</title>
	<atom:link href="https://blog.fits-inc.jp/tag/docker-compose-up/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.fits-inc.jp</link>
	<description>Webシステムの受託開発でお困りなら</description>
	<lastBuildDate>Sat, 17 Oct 2020 16:37:43 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://blog.fits-inc.jp/wp-content/uploads/2024/06/cropped-image-5-32x32.png</url>
	<title>docker-compose up &#8211; FITSブログ</title>
	<link>https://blog.fits-inc.jp</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>docker-compose up 時にPorts are not available が出る（解決済）</title>
		<link>https://blog.fits-inc.jp/2020/10/17/docker-compose-up-%e6%99%82%e3%81%abports-are-not-available-%e3%81%8c%e5%87%ba%e3%82%8b%ef%bc%88%e8%a7%a3%e6%b1%ba%e6%b8%88%ef%bc%89/</link>
		
		<dc:creator><![CDATA[FITS Admin]]></dc:creator>
		<pubDate>Sat, 17 Oct 2020 16:37:43 +0000</pubDate>
				<category><![CDATA[ブログ]]></category>
		<category><![CDATA[docker-compose up]]></category>
		<category><![CDATA[port is already allocated]]></category>
		<category><![CDATA[Ports are not available]]></category>
		<guid isPermaLink="false">https://blog.fits-inc.jp/?p=787</guid>

					<description><![CDATA[　昨日まで問題なく起動していたdockerのコンテナで、docker-compose upによる起動時に for xxx Cannot start service xxx: Ports are not available [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">　昨日まで問題なく起動していたdockerのコンテナで、docker-compose upによる起動時に for xxx Cannot start service xxx: Ports are not available: listen tcp 0.0.0.0:50100: bind: An attempt was made to access a socket in a way forbidden by its access permissions. が表示されるようになったので、原因を調べてメモにしてみました。</p>



<h2 class="wp-block-heading">他のプロセスにポートが占有されている場合</h2>



<p class="wp-block-paragraph">　例えば HTTPの80やnodeの3000、mysqlの3306などは被りやすいため、ほかのプロセスで既に使用されている可能性があります。dockerのコンテナがそのポートを使用している場合は</p>



<pre class="wp-block-code"><code>ERROR: for mysql  Cannot start service mysql: driver failed programming external connectivity on endpoint mysql (xxxxxxxxx): Bind for 0.0.0.0:3306 failed: port is already allocated</code></pre>



<p class="wp-block-paragraph">というようにわかりやすく出てくれるため、docker ps でポートのマッピングを確認すればよいですが、そうでない場合は netstat -anob や lsof -i などを使って、どのプロセスがポートを使用しているか調べる必要があります。</p>



<h2 class="wp-block-heading">カーネルにポートが占有されている場合</h2>



<p class="wp-block-paragraph">　ネットワーク通信においてエフェメラルポートという、動的に使用されるポート番号があるのですが、実はこのエフェメラルポートは49152から開始することが推奨されています。そのため、冒頭の50000番台のような49152から近いポート番号でエラーが発生した場合は、カーネルがエフェメラルポートとしてそのポートを使用しており衝突した可能性があります。その場合はnetstatやlsofでは確認できない場合があるので、<br>。その場合は、</p>



<pre class="wp-block-code"><code>netsh int ipv4 show dynamicport tcp
netsh int ipv4 show dynamicport udp
netsh int ipv6 show dynamicport tcp
netsh int ipv6 show dynamicport udp</code></pre>



<p class="wp-block-paragraph">で、IPV4/V6、TCP/UDPのそれぞれのエフェメラルポートの設定の確認と、</p>



<pre class="wp-block-code"><code>netsh int ipv4 set dynamicport tcp start=10000 num=1000
netsh int ipv4 set dynamicport udp start=10000 num=1000
netsh int ipv6 set dynamicport tcp start=10000 num=1000
netsh int ipv6 set dynamicport udp start=10000 num=1000</code></pre>



<p class="wp-block-paragraph">などのコマンドで、エフェメラルポートの開始ポート番号を変更し、実際にポートが使用できるかどうかを確認します。今回はこちらの対応方法で問題が解消し、コンテナが起動するようになりました。注意点としてTCPの設定ではなくUDPの方でポートが占有されているようでした。</p>



<p class="wp-block-paragraph">　最近行った変更というと、確かにUDP用のプログラムを検証するため、USB-LANモジュールのインストールや、Wiresharkのインストールを行ったのですが、何が直接作用したのかは不明です。</p>



<p class="wp-block-paragraph">　いずれにせよ、どのプロセスからもポートの使用が確認できない場合は、カーネル側のエフェメラルポートの設定を見直すことで現象が解決する可能性がありますので、その点を知っておくとよいと思います。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
