[LG CNS AM CAMP 1기] 백엔드 II 13 | Docker

letthem·2025년 2월 13일
0

LG CNS AM CAMP 1기

목록 보기
29/31
post-thumbnail

도커 네트워크

c:\docker> docker network ls
NETWORK ID 	NAME  	DRIVER	SCOPE
3f136e1ec867   bridge	bridge	local	⇒ 도커 컨테이너가 기본적으로 연결되는 네트워크 
					   내부 IP 주소 할당 및 컨테이너 간 통신을 지원 
9505699bab3c   host  	host  	local	⇒ 컨테이너가 호스트의 네트워크 스택을 공유하므로
					   호스트와 동일한 네트워크에서 실행	
ff4d6edba532   none  	null  	local	⇒ 네트워크 연결을 생성하지 않고, 
					   컨테이너는 완전히 격리된 상태로 실행 
                      overay		⇒ 멀티 호스트 환경에서 컨테이너간 통신을 가능하게 하는 도커 네트워크
					   여러 도커 호스트 간에 컨테이너를 연결하고, 컨테이너 간의 통신을 지원 

####컨테이너가 사용하고 있는 네트워크를 확인

c:\docker> docker container run -d --name my-todo-app myanjini/react-todo-app:v1

c:\docker> docker container ls
CONTAINER ID   IMAGE                    	COMMAND               	CREATED     	STATUS     	PORTS               	NAMES
713569cf00a6   myanjini/react-todo-app:v1   "/docker-entrypoint.…"   9 seconds ago   Up 7 seconds   80/tcp              	my-todo-app

c:\docker> docker container inspect my-todo-app
[
	{
    	"Id": "713569cf00a684cd81ed49df7c728d44f3cf8063f3b7f5e1e0a161d41a408be5",
    	"Created": "2025-02-13T00:44:12.773153238Z",
    	"Path": "/docker-entrypoint.sh",
    	"Args": [
        	"nginx",
        	"-g",
        	"daemon off;"
    	],
    	"State": {
        	"Status": "running",
        	"Running": true,
        	"Paused": false,
        	"Restarting": false,
        	"OOMKilled": false,
        	"Dead": false,
        	"Pid": 30912,
        	"ExitCode": 0,
        	"Error": "",
        	"StartedAt": "2025-02-13T00:44:13.594716978Z",
        	"FinishedAt": "0001-01-01T00:00:00Z"
    	},
    	"Image": "sha256:3799680c990545bb83c1c56d07cbee49679a1a9d5923abbf4ffb3f2ba82e6555",
    	"ResolvConfPath": "/var/lib/docker/containers/713569cf00a684cd81ed49df7c728d44f3cf8063f3b7f5e1e0a161d41a408be5/resolv.conf",
    	"HostnamePath": "/var/lib/docker/containers/713569cf00a684cd81ed49df7c728d44f3cf8063f3b7f5e1e0a161d41a408be5/hostname",
    	"HostsPath": "/var/lib/docker/containers/713569cf00a684cd81ed49df7c728d44f3cf8063f3b7f5e1e0a161d41a408be5/hosts",
    	"LogPath": "/var/lib/docker/containers/713569cf00a684cd81ed49df7c728d44f3cf8063f3b7f5e1e0a161d41a408be5/713569cf00a684cd81ed49df7c728d44f3cf8063f3b7f5e1e0a161d41a408be5-json.log",
...(생략)...    	

    	"NetworkSettings": {
        	"Bridge": "",
        	"SandboxID": "a96d20a976d378b4635587500a2accf4fdc3501eb0220002cf0f3b4df0337825",
        	"SandboxKey": "/var/run/docker/netns/a96d20a976d3",
        	"Ports": {
            	"80/tcp": null
        	},
        	"HairpinMode": false,
        	"LinkLocalIPv6Address": "",
        	"LinkLocalIPv6PrefixLen": 0,
        	"SecondaryIPAddresses": null,
        	"SecondaryIPv6Addresses": null,
        	"EndpointID": "0b2bda8203d21dfb62db3c9adfffe7f3b462a6bf965d55ada78a7272dd94429f",
        	"Gateway": "172.17.0.1",
        	"GlobalIPv6Address": "",
        	"GlobalIPv6PrefixLen": 0,
        	"IPAddress": "172.17.0.4",
        	"IPPrefixLen": 16,
        	"IPv6Gateway": "",
        	"MacAddress": "02:42:ac:11:00:04",
        	"Networks": {
            	"bridge": {				⇐ 컨테이너가 사용하고 있는 네트워크 이름
                	"IPAMConfig": null,
                	"Links": null,
                	"Aliases": null,
                	"MacAddress": "02:42:ac:11:00:04",
                	"DriverOpts": null,
                	"NetworkID": "3f136e1ec867000c9d4201f39a2f75473acf250a8143db030aeb71d6743e7540",
                	"EndpointID": "0b2bda8203d21dfb62db3c9adfffe7f3b462a6bf965d55ada78a7272dd94429f",
                	"Gateway": "172.17.0.1",
                	"IPAddress": "172.17.0.4",
                	"IPPrefixLen": 16,
                	"IPv6Gateway": "",
                	"GlobalIPv6Address": "",
                	"GlobalIPv6PrefixLen": 0,
                	"DNSNames": null
            	}
        	}
    	}
	}
]

네트워크 상세 정보

c:\docker> docker network inspect bridge
[
	{
    	"Name": "bridge",
    	"Id": "3f136e1ec867000c9d4201f39a2f75473acf250a8143db030aeb71d6743e7540",
    	"Created": "2025-02-10T23:02:45.633271593Z",
    	"Scope": "local",
    	"Driver": "bridge",
    	"EnableIPv6": false,
    	"IPAM": {
        	"Driver": "default",
        	"Options": null,
        	"Config": [
            	{
                	"Subnet": "172.17.0.0/16", ⇒ 172.17.0.0 ~ 172.17.255.255 ⇒ 2^16 호스트

                	"Gateway": "172.17.0.1"
            	}
        	]
    	},
    	"Internal": false,
    	"Attachable": false,
    	"Ingress": false,
    	"ConfigFrom": {
        	"Network": ""
    	},
    	"ConfigOnly": false,
    	"Containers": {
        	"713569cf00a684cd81ed49df7c728d44f3cf8063f3b7f5e1e0a161d41a408be5": {
            	"Name": "my-todo-app",
            	"EndpointID": "0b2bda8203d21dfb62db3c9adfffe7f3b462a6bf965d55ada78a7272dd94429f",
            	"MacAddress": "02:42:ac:11:00:04",
            	"IPv4Address": "172.17.0.4/16",
            	"IPv6Address": ""
        	},
        	"a9db188f04b24aa7885bfc113ec4fa553b39dd333069663b616c111a974f2a1e": {
            	"Name": "wordpressdb",
            	"EndpointID": "62e160f79bb4de33b4ffb581cd9616b62e7889cffea5fb5a615b450df11b9251",
            	"MacAddress": "02:42:ac:11:00:02",
            	"IPv4Address": "172.17.0.2/16", 
            	"IPv6Address": ""
        	},
        	"e29f099f192cacecd2256f8885745adeb205ebe4cccea81988a8ddc585e5d215": {
            	"Name": "recursing_beaver",
            	"EndpointID": "519108d3c1ee0b6db8ec95257d8a2db891ef4390835acfcf921d23e8f399bb2b",
            	"MacAddress": "02:42:ac:11:00:03",
            	"IPv4Address": "172.17.0.3/16",
            	"IPv6Address": ""
        	}
    	},
    	"Options": {
        	"com.docker.network.bridge.default_bridge": "true",
        	"com.docker.network.bridge.enable_icc": "true",
        	"com.docker.network.bridge.enable_ip_masquerade": "true",
        	"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
        	"com.docker.network.bridge.name": "docker0",
        	"com.docker.network.driver.mtu": "1500"
    	},
    	"Labels": {}
	}
]

네트워크 생성

c:\docker> docker network create --driver=bridge web-network
                                 ~~~~~~~~~~~~~~~ ~~~~~~~~~~~
                                 종류            이름 
b7d6c9060165ed5ac87a7c624b803743af9778d872348258fd0950c20b595e35

c:\docker> docker network ls
NETWORK ID 	NAME      	DRIVER	SCOPE
3f136e1ec867   bridge    	bridge	local
9505699bab3c   host      	host  	local
ff4d6edba532   none      	null  	local
b7d6c9060165   web-network   bridge	local

c:\docker> docker network inspect web-network
[
	{
    	"Name": "web-network",
    	"Id": "b7d6c9060165ed5ac87a7c624b803743af9778d872348258fd0950c20b595e35",
    	"Created": "2025-02-13T01:01:08.29466813Z",
    	"Scope": "local",
    	"Driver": "bridge",
    	"EnableIPv6": false,
    	"IPAM": {
        	"Driver": "default",
        	"Options": {},
        	"Config": [
            	{
                	"Subnet": "172.18.0.0/16",
                	"Gateway": "172.18.0.1"
            	}
        	]
    	},
    	"Internal": false,
    	"Attachable": false,
    	"Ingress": false,
    	"ConfigFrom": {
        	"Network": ""
    	},
    	"ConfigOnly": false,
    	"Containers": {},
    	"Options": {},
    	"Labels": {}
	}
]

네트워크 연결

c:\docker> docker network connect web-network my-todo-app

c:\docker> docker container inspect my-todo-app
[
		...(생략)
       	"Networks": {
            	"bridge": {
                	"IPAMConfig": null,
                	"Links": null,
                	"Aliases": null,
                	"MacAddress": "02:42:ac:11:00:04",
                	"DriverOpts": null,
                	"NetworkID": "3f136e1ec867000c9d4201f39a2f75473acf250a8143db030aeb71d6743e7540",
                	"EndpointID": "0b2bda8203d21dfb62db3c9adfffe7f3b462a6bf965d55ada78a7272dd94429f",
                	"Gateway": "172.17.0.1",
                	"IPAddress": "172.17.0.4",
                	"IPPrefixLen": 16,
                	"IPv6Gateway": "",
                	"GlobalIPv6Address": "",
                	"GlobalIPv6PrefixLen": 0,
                	"DNSNames": null
            	},
            	"web-network": {
                	"IPAMConfig": {},
                	"Links": null,
                	"Aliases": [],
                	"MacAddress": "02:42:ac:12:00:02",
                	"DriverOpts": {},
                	"NetworkID": "b7d6c9060165ed5ac87a7c624b803743af9778d872348258fd0950c20b595e35",
                	"EndpointID": "abf4ce311ccf7963b6bbee00e5b1b0982fbdd2252c41a8e5a2e8f172cf271eaa",
                	"Gateway": "172.18.0.1",
                	"IPAddress": "172.18.0.2",
                	"IPPrefixLen": 16,
                	"IPv6Gateway": "",
                	"GlobalIPv6Address": "",
                	"GlobalIPv6PrefixLen": 0,
                	"DNSNames": [
                    	"my-todo-app",
                    	"713569cf00a6"
                	]
            	}
        	}
    	}
	}
]

네트워크 삭제

c:\docker> docker network rm web-network
Error response from daemon: error while removing network: network web-network id b7d6c9060165ed5ac87a7c624b803743af9778d872348258fd0950c20b595e35 has active endpoints
⇐ 해당 네트워크를 사용하고 있는 컨테이너가 존재하기 때문에 삭제할 수 없음
   컨테이너를 네트워크에서 분리한 후 네트워크를 삭제
c:\docker> docker network disconnect web-network my-todo-app

c:\docker> docker network rm web-network
web-network

c:\docker> docker network ls
NETWORK ID 	NAME  	DRIVER	SCOPE
3f136e1ec867   bridge	bridge	local
9505699bab3c   host  	host  	local
ff4d6edba532   none  	null  	local

컨테이너를 시작할 때 사용할 네트워크를 지정

c:\docker> docker container run -d -p 80 --name my-todo-app-2 --net=mybridgenetwork myanjini/react-todo-app:v1
43d03698e919fcb8677033cfc2e1296902d28b8db40370776a8eef46832e264a	     	⇐ 컨테이너는 생성(create)되었으나
docker: Error response from daemon: network mybridgenetwork not found.	   실행(start) 시 오류로 종료

c:\docker> docker network create --driver=bridge mybridgenetwork		⇐ 네트워크 생성
d3d89b30834c5575b1bf2e8a75d57e3ce9ae7b999596efaa309d48e0228eb1cc

c:\docker> docker network ls							⇐ 네트워크 생성 확인
NETWORK ID 	NAME          	DRIVER	SCOPE
3f136e1ec867   bridge        	bridge	local
9505699bab3c   host          	host  	local
d3d89b30834c   mybridgenetwork   bridge	local
ff4d6edba532   none          	null  	local

c:\docker> docker container run -d -p 80 --name my-todo-app-2 --net=mybridgenetwork myanjini/react-todo-app:v1
docker: Error response from daemon: Conflict. The container name "/my-todo-app-2" is already in use by container "43d03698e919fcb8677033cfc2e1296902d28b8db40370776a8eef46832e264a". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.

c:\docker> docker container run -d -p 80 --name my-todo-app-3 --net=mybridgenetwork
 myanjini/react-todo-app:v1							⇐ 이름을 변경해서 컨테이너 실행
6e18ca3ec346eb128b17aa99a0092c06b8ad2ad2644939667a087d1fe8261582

c:\docker> docker container inspect my-todo-app-3
[
		... (생략)...
        	"Networks": {
            	"mybridgenetwork": {
                	"IPAMConfig": null,
                	"Links": null,
                	"Aliases": null,
                	"MacAddress": "02:42:ac:12:00:02",
                	"DriverOpts": null,
                	"NetworkID": "d3d89b30834c5575b1bf2e8a75d57e3ce9ae7b999596efaa309d48e0228eb1cc",
                	"EndpointID": "fdce172a2fd12795c55f2103afc5bbaede76f30341598e06fae0e7a1bf388cc1",
                	"Gateway": "172.18.0.1",
                	"IPAddress": "172.18.0.2",
                	"IPPrefixLen": 16,
                	"IPv6Gateway": "",
                	"GlobalIPv6Address": "",
                	"GlobalIPv6PrefixLen": 0,
                	"DNSNames": [
                    	"my-todo-app-3",
                    	"6e18ca3ec346"
                	]
            	}
        	}
    	}
	}
]

centos 이미지를 이용해서 mycentos 이름의 컨테이너를 실행

c:\docker> docker container run -itd --name mycentos centos

c:\docker> docker container ls
CONTAINER ID   IMAGE                    	COMMAND               	CREATED      	STATUS      	PORTS               	NAMES
aa66bcd1f0fc   centos                   	"/bin/bash"           	13 seconds ago   Up 11 seconds                       	mycentos
6e18ca3ec346   myanjini/react-todo-app:v1   "/docker-entrypoint.…"   6 minutes ago	Up 6 minutes	0.0.0.0:55733->80/tcp   my-todo-app-3
713569cf00a6   myanjini/react-todo-app:v1   "/docker-entrypoint.…"   33 minutes ago   Up 33 minutes   80/tcp              	my-todo-app
e29f099f192c   wordpress                	"docker-entrypoint.s…"   18 hours ago 	Up 18 hours 	0.0.0.0:55438->80/tcp   recursing_beaver
a9db188f04b2   mysql:5.7                	"docker-entrypoint.s…"   18 hours ago 	Up 18 hours 	3306/tcp, 33060/tcp 	wordpressdb

centos, my-todo-app, my-todo-app-3 컨테이너가 사용하고 있는 네크워크를 확인

C:\docker> docker container inspect -f "{{range .NetworkSettings.Networks}}{{print .IPAddress}} ({{print .NetworkID}}){{end}}" mycentos
172.17.0.5 (3f136e1ec867000c9d4201f39a2f75473acf250a8143db030aeb71d6743e7540)

C:\docker> docker container inspect -f "{{range .NetworkSettings.Networks}}{{print .IPAddress}} ({{print .NetworkID}}){{end}}" my-todo-app
172.17.0.4 (3f136e1ec867000c9d4201f39a2f75473acf250a8143db030aeb71d6743e7540)

C:\docker> docker container inspect -f "{{range .NetworkSettings.Networks}}{{print .IPAddress}} ({{print .NetworkID}}){{end}}" my-todo-app-3
172.18.0.2 (d3d89b30834c5575b1bf2e8a75d57e3ce9ae7b999596efaa309d48e0228eb1cc)

⇒ centos, my-todo-app 컨테이너는 동일 네트워크(172.17.x.x)를 사용하고 있음

mycentos 컨테이너에서 my-todo-app 컨테이너와 my-todo-app-3 컨테이너로 접속 여부를 확인

PS C:\docker> docker container exec mycentos ping -c 3 172.17.0.4	
                                                       ~~~~~~~~~~
PING 172.17.0.4 (172.17.0.4) 56(84) bytes of data.     my-todo-app 컨테이너의 IP 주소
64 bytes from 172.17.0.4: icmp_seq=1 ttl=64 time=0.062 ms
64 bytes from 172.17.0.4: icmp_seq=2 ttl=64 time=0.081 ms
64 bytes from 172.17.0.4: icmp_seq=3 ttl=64 time=0.080 ms

--- 172.17.0.4 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2046ms
rtt min/avg/max/mdev = 0.062/0.074/0.081/0.011 ms


PS C:\docker> docker container exec mycentos ping -c 3 172.18.0.2
                                                       ~~~~~~~~~~
                                                       my-todo-app-3 컨테이너의 IP 주소  
PING 172.18.0.2 (172.18.0.2) 56(84) bytes of data.

--- 172.18.0.2 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2092ms

mycentos 컨테이너를 my-todo-app-3 컨테이너가 연결되어 있는 mybridgenetwork 네트워크로 연결

PS C:\docker> docker network connect mybridgenetwork mycentos

PS C:\docker> docker container exec mycentos ping -c 3 172.17.0.4
PING 172.17.0.4 (172.17.0.4) 56(84) bytes of data.
64 bytes from 172.17.0.4: icmp_seq=1 ttl=64 time=0.091 ms
64 bytes from 172.17.0.4: icmp_seq=2 ttl=64 time=0.059 ms
64 bytes from 172.17.0.4: icmp_seq=3 ttl=64 time=0.079 ms

--- 172.17.0.4 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2052ms
rtt min/avg/max/mdev = 0.059/0.076/0.091/0.015 ms

PS C:\docker> docker container exec mycentos ping -c 3 172.18.0.2
PING 172.18.0.2 (172.18.0.2) 56(84) bytes of data.
64 bytes from 172.18.0.2: icmp_seq=1 ttl=64 time=0.411 ms
64 bytes from 172.18.0.2: icmp_seq=2 ttl=64 time=0.094 ms
64 bytes from 172.18.0.2: icmp_seq=3 ttl=64 time=0.074 ms

--- 172.18.0.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2110ms
rtt min/avg/max/mdev = 0.074/0.193/0.411/0.154 ms

Docker Compose

https://docs.docker.com/compose/

Docker Compose is a tool for defining and running multi-container applications.

명령어

PS C:\docker> docker-compose --help			⇐ 이전 버전에는 docker-compose 명령어가 별도로 존재

Usage:  docker compose [OPTIONS] COMMAND

Define and run multi-container applications with Docker

Options:
  	--all-resources          	Include all resources, even those not
                               	used by services
  	--ansi string            	Control when to print ANSI control
                               	characters ("never"|"always"|"auto")
                               	(default "auto")
  	--compatibility          	Run compose in backward compatibility mode
  	--dry-run                	Execute command in dry run mode
  	--env-file stringArray   	Specify an alternate environment file
  -f, --file stringArray       	Compose configuration files
  	--parallel int           	Control max parallelism, -1 for
                               	unlimited (default -1)
  	--profile stringArray    	Specify a profile to enable
  	--progress string        	Set type of progress output (auto,
                               	tty, plain, json, quiet) (default "auto")
  	--project-directory string   Specify an alternate working directory
                               	(default: the path of the, first
                               	specified, Compose file)
  -p, --project-name string    	Project name

Commands:
  attach  	Attach local standard input, output, and error streams to a service's running container
  build   	Build or rebuild services
  commit  	Create a new image from a service container's changes
  config  	Parse, resolve and render compose file in canonical format
  cp      	Copy files/folders between a service container and the local filesystem
  create  	Creates containers for a service
  down    	Stop and remove containers, networks
  events  	Receive real time events from containers
  exec    	Execute a command in a running container
  export  	Export a service container's filesystem as a tar archive
  images  	List images used by the created containers
  kill    	Force stop service containers
  logs    	View output from containers
  ls      	List running compose projects
  pause   	Pause services
  port    	Print the public port for a port binding
  ps      	List containers
  pull    	Pull service images
  push    	Push service images
  restart 	Restart service containers
  rm      	Removes stopped service containers
  run     	Run a one-off command on a service
  scale   	Scale services
  start   	Start services
  stats   	Display a live stream of container(s) resource usage statistics
  stop    	Stop services
  top     	Display the running processes
  unpause 	Unpause services
  up      	Create and start containers
  version 	Show the Docker Compose version information
  wait    	Block until containers of all (or specified) services stop.
  watch   	Watch build context for service and rebuild/refresh containers when files are updated

Run 'docker compose COMMAND --help' for more information on a command.

docker-compose.yaml 파일 구조


wordpress 애플리케이션을 docker-compose.yaml 파일로 정의

version: "3.3"
services:
  wordpressdb:
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_DATABASE=wordpress
    volumes:
      - wordpressdb_data:/var/lib/mysql
  wordpress:
    depends_on:
      - wordpressdb
    image: wordpress
    ports:
      - 8888:80
    environment:
      WORDPRESS_DB_HOST: wordpressdb:3306
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: password
volumes:
  wordpressdb_data: {}      

컨테이너 실행

c:\docker\docker_compose> docker compose up -d
time="2025-02-13T11:07:41+09:00" level=warning msg="c:\\docker\\docker_compose\\docker-compose.yaml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion"
[+] Running 4/4
 ✔ Network docker_compose_default        	Created                      	0.1s
 ✔ Volume "docker_compose_wordpressdb_data"  Created                      	0.0s
 ✔ Container docker_compose-wordpressdb-1	Started                      	1.0s
 ✔ Container docker_compose-wordpress-1  	Started                      	1.3s


c:\docker\docker_compose> docker compose ls
NAME            	STATUS          	CONFIG FILES
docker_compose  	running(2)      	c:\docker\docker_compose\docker-compose.yaml

c:\docker\docker_compose> docker container ls
CONTAINER ID   IMAGE                    	COMMAND               	CREATED          	STATUS          	PORTS               	NAMES
087867b72319   wordpress                	"docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:8888->80/tcp	docker_compose-wordpress-1
418020410ad6   mysql:5.7                	"docker-entrypoint.s…"   About a minute ago   Up About a minute   3306/tcp, 33060/tcp 	docker_compose-wordpressdb-1

브라우저로 확인

실행 중지 ⇒ 중지와 함께 삭제

c:\docker\docker_compose> docker compose down
time="2025-02-13T11:12:13+09:00" level=warning msg="c:\\docker\\docker_compose\\docker-compose.yaml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion"
[+] Running 3/3
 ✔ Container docker_compose-wordpress-1	Removed                        	1.6s
 ✔ Container docker_compose-wordpressdb-1  Removed                        	2.2s
 ✔ Network docker_compose_default      	Removed                        	0.2s

--scale 옵션을 이용해서 여러 개의 컨테이너를 동시에 실행

c:\docker\docker_compose> docker compose up -d --scale wordpress=3
time="2025-02-13T11:14:32+09:00" level=warning msg="c:\\docker\\docker_compose\\docker-compose.yaml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion"
[+] Running 4/5
 ✔ Network docker_compose_default      	Created                        	0.0s
 ✔ Container docker_compose-wordpressdb-1  Started                        	0.7s
 ✔ Container docker_compose-wordpress-3	Created                        	0.2s
 - Container docker_compose-wordpress-1	Starting                       	1.0s
 ✔ Container docker_compose-wordpress-2	Started                        	1.0s
Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:8888 -> 0.0.0.0:0: listen tcp 0.0.0.0:8888: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.

c:\docker\docker_compose> docker compose down
time="2025-02-13T11:15:43+09:00" level=warning msg="c:\\docker\\docker_compose\\docker-compose.yaml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion"
[+] Running 5/5
 ✔ Container docker_compose-wordpress-3	Removed                        	0.1s
 ✔ Container docker_compose-wordpress-2	Removed                        	1.6s
 ✔ Container docker_compose-wordpress-1	Removed                        	0.1s
 ✔ Container docker_compose-wordpressdb-1  Removed                        	1.8s
 ✔ Network docker_compose_default      	Removed                        	0.2s

docker-compose.yaml 파일을 수정 ⇒ 호스트 포트를 지정하지 않음

version: "3.3"
services:
  wordpressdb:
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_DATABASE=wordpress
    volumes:
      - wordpressdb_data:/var/lib/mysql
  wordpress:
    depends_on:
      - wordpressdb
    image: wordpress
    ports:
      - 80
    environment:
      WORDPRESS_DB_HOST: wordpressdb:3306
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: password
volumes:
  wordpressdb_data: {}  	



c:\docker\docker_compose> docker compose up -d --scale wordpress=3
time="2025-02-13T11:17:34+09:00" level=warning msg="c:\\docker\\docker_compose\\docker-compose.yaml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion"
[+] Running 5/5
 ✔ Network docker_compose_default      	Created                        	0.0s
 ✔ Container docker_compose-wordpressdb-1  Started                        	0.5s
 ✔ Container docker_compose-wordpress-3	Started                        	1.8s
 ✔ Container docker_compose-wordpress-1	Started                        	0.8s
 ✔ Container docker_compose-wordpress-2	Started                        	1.3s

c:\docker\docker_compose> docker compose ls
NAME            	STATUS          	CONFIG FILES
docker_compose  	running(4)      	c:\docker\docker_compose\docker-compose.yaml

c:\docker\docker_compose> docker container ls
CONTAINER ID   IMAGE                    	COMMAND               	CREATED         	STATUS         	PORTS               	NAMES
0c9fac5fe3e0   wordpress                	"docker-entrypoint.s…"   29 seconds ago  	Up 28 seconds  	0.0.0.0:59700->80/tcp   docker_compose-wordpress-1
7d03337339f8   wordpress                	"docker-entrypoint.s…"   29 seconds ago  	Up 27 seconds  	0.0.0.0:59701->80/tcp   docker_compose-wordpress-2
24221b705cfb   wordpress                	"docker-entrypoint.s…"   29 seconds ago  	Up 27 seconds  	0.0.0.0:59704->80/tcp   docker_compose-wordpress-3
569b0af1ef00   mysql:5.7                	"docker-entrypoint.s…"   29 seconds ago  	Up 28 seconds  	3306/tcp, 33060/tcp 	docker_compose-wordpressdb-1


c:\docker\docker_compose> docker compose up -d --scale wordpress=10
time="2025-02-13T11:19:25+09:00" level=warning msg="c:\\docker\\docker_compose\\docker-compose.yaml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion"
[+] Running 11/11
 ✔ Container docker_compose-wordpressdb-1  Running                        	0.0s
 ✔ Container docker_compose-wordpress-1	Running                        	0.0s
 ✔ Container docker_compose-wordpress-2	Running                        	0.0s
 ✔ Container docker_compose-wordpress-3	Running                        	0.0s
 ✔ Container docker_compose-wordpress-10   Started                        	0.6s
 ✔ Container docker_compose-wordpress-7	Started                        	2.7s
 ✔ Container docker_compose-wordpress-4	Started                        	2.3s
 ✔ Container docker_compose-wordpress-8	Started                        	3.2s
 ✔ Container docker_compose-wordpress-9	Started                        	1.9s
 ✔ Container docker_compose-wordpress-5	Started                        	1.4s
 ✔ Container docker_compose-wordpress-6	Started                        	1.1s

c:\docker\docker_compose> docker container ls
CONTAINER ID   IMAGE                    	COMMAND               	CREATED         	STATUS         	PORTS               	NAMES
89892a7915a8   wordpress                	"docker-entrypoint.s…"   42 seconds ago  	Up 41 seconds  	0.0.0.0:59815->80/tcp   docker_compose-wordpress-10
29fed68f8ca3   wordpress                	"docker-entrypoint.s…"   42 seconds ago  	Up 40 seconds  	0.0.0.0:59816->80/tcp   docker_compose-wordpress-6
67fe632f2d6c   wordpress                	"docker-entrypoint.s…"   42 seconds ago  	Up 40 seconds  	0.0.0.0:59817->80/tcp   docker_compose-wordpress-5
62b739319ff6   wordpress                	"docker-entrypoint.s…"   42 seconds ago  	Up 40 seconds  	0.0.0.0:59818->80/tcp   docker_compose-wordpress-9
e781eb0e1de7   wordpress                	"docker-entrypoint.s…"   42 seconds ago  	Up 39 seconds  	0.0.0.0:59820->80/tcp   docker_compose-wordpress-4
2b61ea86ea0c   wordpress                	"docker-entrypoint.s…"   42 seconds ago  	Up 39 seconds  	0.0.0.0:59821->80/tcp   docker_compose-wordpress-7
edb93732edb9   wordpress                	"docker-entrypoint.s…"   42 seconds ago  	Up 38 seconds  	0.0.0.0:59822->80/tcp   docker_compose-wordpress-8
0c9fac5fe3e0   wordpress                	"docker-entrypoint.s…"   2 minutes ago   	Up 2 minutes   	0.0.0.0:59700->80/tcp   docker_compose-wordpress-1
7d03337339f8   wordpress                	"docker-entrypoint.s…"   2 minutes ago   	Up 2 minutes   	0.0.0.0:59701->80/tcp   docker_compose-wordpress-2
24221b705cfb   wordpress                	"docker-entrypoint.s…"   2 minutes ago   	Up 2 minutes   	0.0.0.0:59704->80/tcp   docker_compose-wordpress-3
569b0af1ef00   mysql:5.7                	"docker-entrypoint.s…"   2 minutes ago   	Up 2 minutes   	3306/tcp, 33060/tcp 	docker_compose-wordpressdb-1


c:\docker\docker_compose> docker compose up -d --scale wordpress=5
time="2025-02-13T11:20:45+09:00" level=warning msg="c:\\docker\\docker_compose\\docker-compose.yaml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion"
[+] Running 11/11
 ✔ Container docker_compose-wordpressdb-1  Running                        	0.0s
 ✔ Container docker_compose-wordpress-1	Running                        	0.0s
 ✔ Container docker_compose-wordpress-2	Running                        	0.0s
 ✔ Container docker_compose-wordpress-3	Running                        	0.0s
 ✔ Container docker_compose-wordpress-4	Running                        	0.0s
 ✔ Container docker_compose-wordpress-5	Running                        	0.0s
 ✔ Container docker_compose-wordpress-10   Removed                        	2.1s
 ✔ Container docker_compose-wordpress-6	Removed                        	2.6s
 ✔ Container docker_compose-wordpress-8	Removed                        	2.2s
 ✔ Container docker_compose-wordpress-7	Removed                        	2.4s
 ✔ Container docker_compose-wordpress-9	Removed                        	2.7s

Why is service/container name resolution not possible on the default bridge network?

There's no technical reason this would not be possible, but a decision to keep backward compatibility.

The default ("bridge") network never supported service discovery through a built in DNS, and when the feature was under development, maintainers of some projects raised concerns that they did not want this added on the default network, as it would block alternative implementations.

기본 브리지 네트워크에서 서비스/컨테이너 이름 확인이 불가능한 이유는 무엇입니까?

기술적으로 이것이 불가능할 이유는 없지만, 이전 버전과의 호환성을 유지하기 위한 결정입니다.

기본("브리지") 네트워크는 내장 DNS를 통한 서비스 검색을 지원하지 않았으며, 해당 기능이 개발 중일 때 일부 프로젝트의 유지 관리자는 이 기능이 기본 네트워크에 추가되면 대체 구현이 차단될 것이라며 우려를 표명했습니다.

또한, 사용자 지정 네트워크는 컨테이너가 통신할 수 있도록 명시적으로 허용하도록 설계되었습니다. 기본 네트워크에서 이는 "컨테이너 간 통신"( --icc=false)을 비활성화하고 --link컨테이너 간에 링크를 설정하는 데 사용하여 달성됩니다. 기본 네트워크에 연결된 모든 컨테이너에 대한 자동 검색을 사용하면 사용하기가 훨씬 더 복잡해집니다.

사용자 지정 네트워크를 만들어서 t_jpa_user 테이블에 하나넣고 진행하니까 잘되는것 같습니다!
https://stackoverflow.com/questions/41400603/dockers-embedded-dns-on-the-default-bridged-network

0개의 댓글

관련 채용 정보