작업 환경 분리 구성하기 (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로 끝납니다.
이제 정말 사용할 수 있나요!?!
네!!