Windows에 도커 우분투에서 C 프로그래밍하기

KimCookieYa·2023년 5월 5일
0

코딩

목록 보기
4/10

Windows 노트북에 우분투 가상환경을 만들기 위해 Docker를 사용해보기로 했다. 과정을 단계별로 정리한다.

준비

WSL

Unix/Microsoft Windows/WSL

WSL(Windows Subsystem for Linux)은 Microsoft에서 제공하는 Windows에서 리눅스 커널을 사용할 수 있게 해주는 기술이다. WSL 1과는 다르게 WSL 2는 Hyper-V 기반의 최신 가상화 기술을 이용하여 실제 리눅스 커널을 직접 탑재하였다. 이에 따라 모든 시스템 콜이 완벽하게 호환되며, 성능 또한 비약적으로 상승하였다.

WSL 2에서는 우분투의 루트 파일시스템이 ext4의 가상 하드디스크(ext4.vhdx)로 마운트되기 때문에, Windows의 File Explorer에서도 WSL에 설치한 우분투의 루트 파일시스템을 수정 및 확인하는 것이 가능하다는 뜻이다.

1. Windows 기능 활성화

  • [윈도우키+s] -> "Windows 기능 켜기/끄기" 검색 -> "Linux용 Winodws 하위 시스템" 켜기

2. Linux 커널 업데이트

Ubuntu 설치

  • Microsoft Store에서 "Ubuntu" 검색 및 설치
  • 최초 설치 시, username과 password를 설정해주어야 한다.
  • 관리자 권한으로 PowerShell을 실행하여 다음 wsl 명령어를 수행해보자.
    wsl -l -v
  • 다음 명령어를 통해 Windows 운영체제에서 리눅스 환경을 이용할 수 있다.
    wsl

Docker Desktop 설치

  • 다음 링크에 접속하여 Docker Desktop on Windows 설치 파일을 받을 수 있다.
    - Docker 공식 사이트
  • Docker Desktop을 열고 설정화면에서 "use the wsl 2 based engine"과 wsl integration 설정은 전부 켠다.
  • PowerShell 관리자 모드 > wsl > docker --version
  • 도커 버전이 제대로 나온다면 준비가 완료된 것이다.

주의사항

  • WSL 우분투에서는 systemd, systemctl이 지원되지 않는다.
  • Genie는 WSL에서 systemd를 사용할 수 있게 해주는 오픈소스 프로젝트이다.

Docker에 Ubuntu 설치

설치 및 실행

  • 도커 허브에서 우분투 이미지를 가져와서(search && pull) ubuntu_server라는 컨테이너를 생성 후(create), 실행(start)시키고 접속(attach)한다.
  • 컨테이너에 접속한 후, 빠져나오기 위해서는 ctrl+p+q.
  • 컨테이너를 정지시키기 위해서는 ctrl+d 또는 exit를 입력한다.

docker version
docker search ubuntu
docker pull ubuntu
docker images // 도커 엔진에 존재하는 이미지 목록을 출력
docker create -it --name ubuntu_server ubuntu
docker ps -a // 모든 컨테이너를 출력
docker start ubuntu_server
docker attach ubuntu_server

우분투 초기 세팅

  • 도커 허브의 우분투 이미지에는 아무것도 없는 순정이기 때문에, 아래의 초기 세팅을 전부 해주어야 한다.
  • 사용자 설정도 없어서 sudo 명령어도 사용할 수 없다.

apt-get update
apt-get upgrade

추가: 컨테이너에서 sudo 사용하기

adduser --disabled-password --gecos "" user  \
    && echo 'user:user' | chpasswd \
    && adduser user sudo \
    && echo 'user ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers

C 프로그래밍 준비

코드 에디터(nano, vim) 설치

앞서, 도커 허브의 우분투 이미지는 순정이기 때문에 아무것도 없다고 말했었다. 따라서 우리가 설치한 우분투 컨테이너에는 코드 에디터 또한 없기 때문에 설치해주어야 한다.

apt-get update
apt-get install nano
apt-get install vim

GCC 설치(Ubuntu 22.04)

GCC(GNU Compiler Collection)은 개발 도구 및 컴파일러 세트이다. 이러한 컴파일러 도구는 Windows, Linux 등 여러 운영체제와 같은 플랫폼에서 사용할 수 있다. GCC는 C, Objective C, C++, D, Go, Ada 및 Fortran과 같은 많은 프로그래밍 언어를 컴파일하는 데 사용할 수 있다.

apt-get update
apt install build-essential
gcc --version

gcc 설치가 완료되면, 간단한 C 프로그램을 만들어 컴파일러가 제대로 작동하는지 확인해보자. vim으로 코드를 작성한다.

  • vim hello.c
int main() {
	print("Hello World!");
    return 0;
}
  • gcc -o hello hello.c
  • ./hello

Ubuntu에 Github CLI 설치

Ubuntu에서 git을 쓸 때 GitHub login 때문에 복잡해지지 않도록 GitHub CLI를 설치한다.

type -p curl >/dev/null || (sudo apt update && sudo apt install curl -y)
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \
&& sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
&& sudo apt update \
&& sudo apt install gh -y

설치 후 gh auth login 명령으로 access token을 생성 혹은 설치한다.

참고

profile
[크래프톤 정글 2기], 티스토리로 이주했습니다:)

0개의 댓글