Docker에 –link는 곧 사라진다고 합니다..

docker에서 서로 다른 컨테이너간 Link는 참 좋은 기능이다.

WordPress 를 가정하면,

docker run –link mysql […]

이런식으로 설정이 가능하고 그럴경우 공식 wordpress는 진짜 DB 세팅 따위 안해도 되는 장점이 있다

그러나 –link는 앞으로 안쓰인다는 (https://docs.docker.com/network/links/) 것이 정설.

공통의 bridged network를 사용하는 것을 추천한다.

docker network create [브리지이름]

으로 네트워크를 설정하고.

새로 만드는 컨테이너는

 docker run --network=[브리지이름]

으로 서로 연결해준다.

이미 운영중인 컨테이너는

docker network connect [브리지이름] [컨테이너이름]

으로 연결해줄수 있다.

 

이렇게 될 경우 컨테이너이름을 host이름으로 서로 연결할수 있다.

간단한 예시

docker network create dbms
docker run --name=mariadb --restart=always -d --network=dbms -v /srv/mariadb:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=비밀번호 mariadb
docker run --name wordpress --restart=always -d -p 8088:80 --network=dbms wordpress
docker run --name myadmin -d -e PMA_ARBITRARY=1 --restart=always --network=dbms -p 8081:80 phpmyadmin/phpmyadmin

이렇게 하고, wordpress 설정시  mysql 서버를 mariadb 로 정해주면된다. 물론 phpmyadmin 은 localhost 접속이 아니고 접속시 DB를 mariadb로 정해줘야 하고.

 
docker-compose (v2 기준) 으로는 더욱 간단하다.

Service 에 external을 설정하고, Network를 넣는다. 예시

version: '2'

services:
  app:
    image: nextcloud
    ports:
      - 8080:80
    networks:
      - dbms
    external_links:
      - mariadb:mariadb
    volumes:
      - /srv/nextcloud/config:/var/www/html/config
      - /media/data/nextcloud:/var/www/html/data
    restart: always

networks:
  dbms:
    external: true