#docker #kubernetes #container #orchestrator #microservice #infrastructure-as-code #devops #ci #cd

제목git-bash 이용해 docker machine 생성(window11, virtual box설치된 환경)2023-11-02 22:59
작성자

금일 2023.11.02, 실습시간에 docker-machine생성 후에 clustering하는 실습을 했죠.

저는 virtual box와 wsl이 모두 잘 되던 환경이었지만, docker machine이 생성이 안됐습니다.

따라서 git-bash를 활용해 docker machine을 생성했더니 잘 되더군요.(이유는 사실 잘 모르겠습니다. wsl에서 쓰는 커널이 virtual box와 호환되지 않나? 라는 추측만 하고 있습니다.)

여기서 git-bash는 window환경에서 리눅스 커맨드라인을 칠 수 있는 환경을 제공해줍니다.(저는 리눅스 커맨드라인만 알고 윈도우 커맨드 라인을 몰라서 이전에 설치해뒀습니다.)

그럼 바로 ㄱㄱ

git-bash설치 후 실행해 CLI를 띄웁니다.

먼저 docker-machine을 설치해야하죠.

https://github.com/docker/machine/releases 여기의 windows gitbash부분을 치면 됩니다.


$ if [[ ! -d "$HOME/bin" ]]; then mkdir -p "$HOME/bin"; fi && \
curl -L https://github.com/docker/machine/releases/download/v0.16.2/docker-machine-Windows-x86_64.exe > "$HOME/bin/docker-machine.exe" && \
chmod +x "$HOME/bin/docker-machine.exe"


만약 설치가 잘 되었는지 확인하고 싶으시면 docker-machine을 쳐보시면 됩니다.

다음에는 docker machine을 생성하면 되는데, 저는 컴퓨터가 직접 머신의 컴퓨팅 리소스를 정의하라고 에러메세지를 띄우더군요. 그래서 직접 아래와 같이 부여했습니다.


docker-machine create --driver virtualbox --virtualbox-memory=1024 \

    --virtualbox-cpu-count=1 --virtualbox-disk-size=10240 \

    --virtualbox-no-vtx-check default


위에서 default파트를 worker1생성하면 마지막을 worker1으로 manager면은 default를 manager로 수정해서 치시면 됩니다.

위와 같이 memory, cpu의 코어개수, disk사이즈, vtx부여 여부를 적으시면 됩니다.

위와 같이 3개의 docker machine을 생성하면 docker-machine ls로 생성여부를 확인하시면 됩니다.

다음은 강의 노트와 동일하게 manager에 manager임을 알립니다.


docker-machine ssh manager

docker swarm init --advertise-addr {manager ip address}


이때 뒤에 manager에 worker를 붙일 때 필요한 토큰 값과 ip address 그리고 port number가 나오는데 잘 기억하십쇼.

다음으로 manager에 worker1과 worker2를 붙여주면 됩니다. 아래에 방금 기억해둔 token, manager ip, manager port number그대로 쓰십쇼.


docker-machine ssh {worker name}

docker swarm join --token {token}{manager ip}:{manager port number}


위의 과정을 worker1과 worker2에 모두 적용하십쇼.


다음으로 docker-compose.yml을 생성하는데 강의노트에서는 생성 후 manager에 넣어주더라고요.

하지만 저는 아쉽게도 scp가 네트워크 오류로 디버깅에 실패해 그냥 manager안에서 file을 생성했습니다.

코드는 아래와 같습니다.


docker-machine ssh manager(매니저 접속)

touch docker-compose.yml(얌파일 생성)

vi docker-compose.yml(얌파일 vi editor로 접속)


이때 i를 누르면 vi에서 command-mode에서 editting-mode로 전환됩니다.

그때 아래의 코드 적으시면 됩니다.(강의노트 그대로 입니다.)


version: "3.7"

services:

  webserver:

    image: nginx:latest

    deploy:

      replicas: 4

      placement:

        constraints: [node.role!=manager]

    ports:

      - 8080:80


이제 esc를 눌러서 vi의 editor-mode에서 command-mode로 넘어갑니다.

다음에는 :wq를 쳐서 저장합니다.(:wq는 write and quit이라는 뜻입니다. 그리고 콜론 꼭 쓰십쇼)

이제 deploy만 하시면 됩니다.


docker stack deploy -c docker-compose.yml helloswarm


이상하게도 저렇게 치면 helloswarm은 생성되는데 node4개가 생성이 안될 때가 있습니다. 그러면 단순하게 위의 코드를 한번 더 치면 replicas 4로 4개 정상 생성되는 것을 확인할 수 있습니다.


-끝-

댓글