タイトルどおりですが、少し新しい使い方を覚えたので忘れないようメモ

DockerでIP指定

DockerでIP指定をするには、docker run実行時に--ip=[IPアドレス]を指定する

$ docker run --privileged -d -it --ip=172.18.0.2 --hostname [CONTAINER] --name [CONTAINER] debian:latest /sbin/init

しかしこれだけでは、

docker: Error response from daemon: User specified IP address is supported on user defined networks only.

と出て、自分で作成したネットワーク以外でIPは使えませんと怒られる

Dockerでブリッジ作成

Dockerでブリッジ作成は、docker network createコマンドを使用

まずは現在のネットワークを確認

$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
75bc40d1ca70        bridge              bridge              local
56534f2dce38        host                host                local
a00e9c324b5b        none                null                local

ブリッジを作る

$ docker network create --subnet=172.18.0.0/16 br0

追加されたか確認

$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
cd132cd1e1b3        br0                 bridge              local
75bc40d1ca70        bridge              bridge              local
56534f2dce38        host                host                local
a00e9c324b5b        none                null                local

$ docker network inspect br0
[
	{
		"Name": "br0",
		"Id": "cd132cd1e1b334ccf3767fe914a3f65068181e2a4d6fb04d8ddcf64ef26a1f60",
		"Scope": "local",
		"Driver": "bridge",
		"EnableIPv6": false,
		"IPAM": {
			"Driver": "default",
			"Options": {},
			"Config": [
				{
					"Subnet": "172.18.0.0/16",
					"Gateway": "172.18.0.1"
				}
			]
		},
		"Internal": false,
		"Containers": {
			"46dccdbcc1cfc77f26dea1c2b0f7041eabef50233c864e21dd79668f588d23c3": {
				"Name": "hoge",
				"EndpointID": "0a830e10cc750c3ef4215a70673424dc43e6ddafa6c8a563d6cdcacf7d7e39e1",
				"MacAddress": "00:00:00:00:00:00",
				"IPv4Address": "172.18.0.100/16",
				"IPv6Address": ""
			}
		},
		"Options": {},
		"Labels": {}
	}
]

作成したブリッジを使うには、--net=[ブリッジ名]を使う

$ docker run --privileged -d -it --net=br0 --ip=172.18.0.2 --hostname [CONTAINER] --name [CONTAINER] debian:latest /sbin/init"