Post

작업 환경 분리 구성하기 (feat. code-server)

작업 환경 분리?

시작에 앞서..

코드 서버도, 도커도, 원래 이러라고 만들어진게 아니지만, 이전 포스트에 적었던 웹 브라우저 번역을 이용하고 싶어서 직접 구성한 겁니다. 불여우 브라우저로 코딩시 생기는 문제로 빈번히 브라우저가 멈추거나 하는 등의 이슈가 있으므로, 그걸 감내하면서까지 쓰고 싶은게 아니라면 글을 읽고 즐기시면 될 것 같습니다.

그냥 VsCode를 바로 사용하지 왜 굳이…

이걸 구축할 당시에는 vscode에서 쉽고 편한 번역이 없었고, 막상 이 구성을 써보니 이 방식 나름의 이점이 있다고 생각하여 쓰고 있습니다.
앞서 말씀드렸듯, 안정적인 작업환경이 중요하다면 그냥 재미로 읽어주세요 👍

가상환경 구성하기

가상머신이라는 개념이 생긴 후 좀 더 가벼운 형태의 가상머신 개념으로 도커가 나온 걸로 알고 있습니다. 윈도우에서는 도커 홈페이지를 통해 설치할 수 있습니다만 윈도우는 공식적으로 WSL 을 제공하고 있으니 굳이 도커를 안쓰셔도 됩니다.

docker-compose 설치하기

도커는 설정할 것이 꽤 많아서, 귀찮음에 설명서를 안읽고 있습니다 ^^;
대신 docker-compose를 이용해 빠르게 구축하고 있어요.
윈도우에서 도커 홈페이지를 통해 설치하면 docker-compose 가 같이 설치되지만 리눅스는 아닙니다. 패키지 관리자에서 docker와 docker-compose 를 둘 다 지정해줘야 합니다.

이런 식으로 말이죠

1
2
# 아치리눅스 패키지 설치 명령 예시
sudo pacman -S docker docker-compose

docker-compose 의 동작방식은 아주 간단한데, docker-compose.yml 이라는 파일이 있는 폴더에서 해당 파일 내용을 설정삼아 도커 구성을 완성시켜줍니다. 삭제도 똑같은 방식으로 진행합니다.

docker-compose.yml 파일 생성하기

docker-compose.yml 파일은 아래와 비슷한 방식으로 구성됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
services:
  code-server:
    image: ubuntu
    container_name: code-server
    volumes:
      - ./myblog:/root/myblog
    environment:
      USER: root
      DISPLAY: :1
      PATH: /root/Android/Sdk/platform-tools:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin
      GODOT_SILENCE_ROOT_WARNING: 1
    ports:
      - "4000:4000"
      - "5901:5901"
      - "8080:8080"
    command: tail -F /dev/null

docker-compose 설정에 대해서는 나중에 다른 포스트에서 알려드릴께요, 지금은 docker-compose.yml 문서 파일을 생성하여 위 내용을 붙여넣어봅시다.

docker-compose 실행하기

해당 폴더에서 터미널을 열고 다음과 같이 입력하면 됩니다.

1
docker-compose up -d

그러면 위 설정(docker-compose.yml) 을 따라 컨테이너(가상환경)가 생성됩니다.

컨테이너를 삭제하고 싶다면 아래 명령을 입력하면 됩니다.

1
docker-compose down

그러면 위 설정으로 생성된 모든 객체를 삭제합니다.
docker-compose로 생성한 다음 yml 파일을 삭제하게 되면 docker-compose로 컨테이너를 삭제할 수 없게 되니, yml 파일을 섣불리 수정하거나 삭제하지는 말아주세요.


도커 사용하기

근데 도커가 생성되면 뭘 하냐구요?

아무 것도 안합니다

약간 거짓말을 섞자면 컨테이너를 생성했다 = 가상머신을 생성했다와 같습니다.

도커는 지금…

이전 내용을 가져오면,

1
2
3
4
5
services:
  code-server:
    image: ubuntu
    container_name: code-server
    ...

yml 파일에 대놓고 ubuntu라 적혀있으니 이 도커는 지금 우분투가 설치된 것을 예상할 수 있습니다. 그럼 이 우분투를 어떻게 사용하느냐..

터미널에 docker ps를 입력해봅시다.

1
2
3
4
> docker ps

CONTAINER ID   IMAGE     COMMAND               CREATED        STATUS       ...
fa93f0a75a94   ubuntu    "tail -F /dev/null"   44 hours ago   Up ...

현재 활성중인 도커를 보여주는데, 컨테이너 ID(fa93f0a75a94)가 보이네요

아래 명령을 입력하면 터미널로 접근할 수 있습니다.

1
2
3
docker exec -it fa93f0a75a94 /bin/bash

root@fa93f0a75a94:/# 

관리자 계정인데요?

사용자가 관리자 계정이긴 하지만 이제부터는 우분투를 사용하는 것과 동일합니다.
apt update -y; apt upgrade -y 를 실행한 후 이 가상머신에서 사용하고 할 것 같은 일부 기본 유틸(nano, git, wget 등)을 설치하시면 됩니다. (시작할 때 sudo가 설치되어있지 않음)

code-server 설치

적당히 준비가 되었으면 아래 명령어를 입력하여 코드 서버를 설치합니다.

1
curl -fsSL https://code-server.dev/install.sh | sh

드디어 코드 서버가 생겼네

바로 실행해보기

1
2
3
4
5
root@fa93f0a75a94:~# code-server

...
...
... info    - Not serving HTTPS

와 실행 성공!
그럼 이제 Ctrl + C 를 눌러 꺼주세요

접근 설정 변경

1
nano ~/.config/code-server/config.yaml 

코드 서버 설정 파일에 접근하면 아래와 같은 내용이 준비되어 있을텐데

1
2
3
4
bind-addr: 127.0.0.1:8080
auth: password
password: waefskgrdbf3w45egltrhalvk
cert: false

bind-addr: 진입할 수 있는 주소와 포트
password: 진입할 때 사용할 비밀번호

일단 비밀번호만 먼저 입맛에 맞게 바꾸면 됩니다.

네트워크 이야기

컴퓨터 주소 중 127.0.0.1 는 네트워크에서 “나(해당 기기)“를 의미합니다.
그러니까 위 설정으로는 ““만 이 서버에 들어갈 수 있는데, 코드 서버가 도커 안에서 돌고 있고, 도커는 일종의 가상머신이므로 명백히 ““가 아닙니다. 그건 “내 안에 있는 흑염룡“과 같은, 다른 존재이므로 저 설정으로는 접근할 수 없습니다.

접근하기 위해서는 컴퓨터 기준에서 도커의 주소를 입력해주어야 합니다.

도커 터미널에 net-tools를 설치하여 도커 주소를 확인해주면 됩니다.

1
2
3
4
5
apt install net-tools

... # 설치가 완료되면

ifconfig

보통 172.18.0.2 같은 식으로 맨 뒤가 2로 끝납니다.

이제 정말 사용할 수 있나요!?!

네!!

done

This post is licensed under CC BY 4.0 by the author.