본문으로 건너뛰기
피드

애플 컨테이너에 ‘맥 안의 지속형 리눅스 머신’이 들어옴

devops 약 8분
vote
0
댓글
북마크

애플의 container 도구에 컨테이너 머신이라는 개념이 추가돼, 맥에서 지속형 리눅스 환경을 빠르게 띄우고 쓸 수 있게 됨. 일반 컨테이너가 앱 단위라면, 컨테이너 머신은 init 시스템과 서비스, 홈 디렉터리 공유까지 포함한 리눅스 개발 환경에 가까움.

  • 1

    컨테이너 머신은 앱이 아니라 리눅스 환경 자체를 모델링함

  • 2

    맥의 사용자명과 홈 디렉터리가 리눅스 환경에 자동 매핑됨

  • 3

    systemd가 들어간 이미지라면 PostgreSQL 같은 장기 실행 서비스를 테스트할 수 있음

  • 4

    Alpine, Ubuntu, Debian 등 배포판별 개발 환경을 따로 만들 수 있음

  • 5

    CPU, 메모리, 홈 마운트 권한 같은 설정을 디스크에 저장하고 재시작 후 적용할 수 있음

  • 애플의 container 도구가 ‘컨테이너 머신’이라는 리눅스 개발 환경 모델을 제공함

    • 일반 컨테이너가 앱 하나를 실행하는 데 초점이 있다면, 컨테이너 머신은 리눅스 환경 자체를 띄우는 쪽임
    • 빠르고 가볍고 지속형이며, 표준 OCI 이미지로 만들고 공유할 수 있음
    • 이미지의 init 시스템을 실행할 수 있어서 장기 실행 서비스나 프로세스 슈퍼바이저 기반 테스트도 가능함
  • 맥에서 편집하고, 리눅스 안에서 빌드하는 흐름을 노골적으로 겨냥함

    • 맥의 $HOME에 있는 저장소가 컨테이너 머신 안에서는 /Users/<username> 또는 리눅스 홈 경로로 마운트됨
    • 맥의 에디터나 IDE로 코드를 고치고, 빌드와 실행은 리눅스 환경 안에서 돌리는 식임
    • 빌드 산출물을 다시 복사하지 않아도 맥 네이티브 프로파일러, 브라우저, 스크린샷 도구, GUI 디버거가 같은 파일을 볼 수 있음
  • 사용자 계정 매핑도 개발자 친화적으로 잡혀 있음

    • container machine run -n dev whoami를 실행하면 root가 아니라 호스트의 사용자명이 나옴
    • 컨테이너 머신을 실행하면 맥 계정과 같은 사용자로 셸에 들어가고, 홈 디렉터리와 dotfile도 공유됨
    • ‘컨테이너 안이라 권한 꼬임’ 같은 로컬 개발 특유의 귀찮음을 줄이려는 설계로 보임
  • 배포판별 리눅스 테스트 환경을 여러 개 만들 수 있음

    • container machine create alpine:latest --name dev처럼 Alpine 기반 환경을 만들 수 있음
    • Ubuntu, Debian 같은 타깃 배포판마다 컨테이너 머신을 따로 만들고 같은 홈 디렉터리와 설정 파일을 공유할 수 있음
    • 특정 배포판에서만 깨지는 빌드나 패키지 의존성 문제를 로컬에서 바로 확인하기 좋아짐
  • 실행 명령은 꽤 단순함

    • container machine run -n dev는 대화형 셸을 열고, 컨테이너 머신이 꺼져 있으면 먼저 부팅함
    • container machine run -n dev uname -a처럼 단일 명령만 실행하고 빠져나올 수도 있음
    • 기본 머신을 container machine set-default dev로 지정하면 -n 플래그 없이 container machine run, container machine ls, container machine inspect dev 같은 명령을 쓸 수 있음
    • container machinem 별칭도 있어서 m ls, m run처럼 짧게 호출 가능함

💡

> 맥에서 코드 편집 도구를 그대로 쓰면서 실행 환경만 리눅스로 맞추고 싶다면 이 모델이 꽤 잘 맞음. 특히 배포 타깃이 리눅스인데 개발 장비는 맥인 팀에 실용적임.

  • 리눅스 서비스 테스트도 현실적인 수준까지 들어옴

    • systemd가 설치된 이미지라면 systemctl start postgresql 같은 명령으로 데이터베이스나 필요한 서비스를 띄울 수 있음
    • 컨테이너 하나에 프로세스 하나만 넣는 전통적인 앱 컨테이너 감각과는 조금 다름
    • 로컬에서 ‘작은 리눅스 개발 머신’을 켜놓고 테스트하는 방식에 가까움
  • 리소스와 마운트 설정도 바꿀 수 있음

    • container machine set -n dev cpus=4 memory=8G처럼 CPU와 메모리를 조정할 수 있음
    • 변경 사항은 디스크 설정에 저장되고, 다음 stop/start 이후 적용됨
    • 메모리 기본값은 호스트 메모리의 절반이고, 홈 마운트는 기본 읽기쓰기(rw), 읽기전용(ro), 없음(none) 중 고를 수 있음
  • 커스텀 이미지 조건은 /sbin/init이 있는 리눅스 이미지임

    • 문서 예시는 Ubuntu 24.04 기반 이미지에 dbus, systemd, openssh-server, 네트워크 도구, curl, wget, vim-tiny, man, sudo 등을 설치함
    • systemctl set-default multi-user.target로 기본 타깃을 잡고, 컨테이너 환경에서 불필요하거나 문제될 수 있는 일부 systemd 유닛을 마스킹하거나 비활성화함
    • 빌드는 container build -t local/ubuntu-machine:latest ., 생성은 container machine create local/ubuntu-machine:latest --name ubuntu 흐름임
  • 첫 부팅 때 사용자 프로비저닝도 자동화돼 있음

    • 기본적으로 container가 내장 setup script를 실행해 호스트와 맞는 사용자를 만들어줌
    • 직접 제어하고 싶으면 이미지에 /etc/machine/create-user.sh 실행 파일을 넣으면 됨
    • 이 스크립트는 최초 부팅 때 root로 한 번 실행되고, CONTAINER_UID, CONTAINER_GID, CONTAINER_HOME, CONTAINER_USER, CONTAINER_MACHINE_ID 같은 변수를 받음

기술 맥락

  • 여기서 애플이 고른 방향은 ‘앱 컨테이너’가 아니라 ‘개발용 리눅스 머신’이에요. 맥에서 코드를 편집하는 경험은 유지하되, 실제 빌드와 실행은 리눅스에 붙이고 싶다는 문제가 있었기 때문이에요.

  • 홈 디렉터리와 사용자명을 자동 매핑하는 것도 꽤 중요한 선택이에요. 로컬 개발에서 권한, 경로, dotfile이 엇갈리면 생산성이 바로 떨어지거든요. 같은 파일을 맥 도구와 리눅스 환경이 동시에 보게 만들면 복사 단계가 사라져요.

  • systemd를 허용하는 건 단순 컨테이너보다 한 단계 더 무거운 대신, 테스트 현실성이 올라가요. 데이터베이스나 백그라운드 서비스를 실제 배포 환경과 비슷하게 띄워야 하는 스택에서는 프로세스 하나만 실행하는 모델이 답답할 수 있거든요.

  • OCI 이미지를 기반으로 한 것도 실용적인 선택이에요. 완전히 새로운 이미지 포맷을 만들면 생태계와 멀어지는데, 기존 컨테이너 빌드 흐름을 유지하면 팀이 이미 가진 Dockerfile이나 배포판 기반 이미지를 활용하기 쉬워요.

이건 Docker Desktop 대체 한 줄 요약으로 끝낼 물건이 아니라, 맥 개발자의 ‘로컬은 맥, 실행은 리눅스’ 루틴을 애플식으로 정리하려는 시도에 가까움. 홈 디렉터리 공유와 systemd 지원이 같이 들어가면, 단순 빌드 컨테이너보다 훨씬 실제 개발 머신처럼 굴릴 수 있음.

댓글

댓글

댓글을 불러오는 중...

devops

티베로와 오케스트로, 공공 AI 인프라 사업 같이 뛴다

티맥스티베로와 오케스트로 클라우드가 공공 AI·클라우드 시장을 겨냥해 전략적 업무협약을 맺었다. 티베로의 데이터베이스 기술과 오케스트로의 풀스택 AI 인프라 역량을 묶어 공공 시스템 구축, 매니지드 서비스, 기술검증과 성능검증까지 같이 추진하겠다는 내용이다.

devops

포항 AI 데이터센터, 300메가와트까지 키운다는데 환경 검토는 어디 갔나

포항환경운동연합이 네오AI클라우드 글로벌 AI 데이터센터의 환경영향 검토 결과를 공개하라고 요구했다. 1단계 40메가와트에서 장기적으로 300메가와트까지 확대되는 사업인데, 전력과 용수, 냉각 설비의 소음·진동·열배출에 대한 검토 근거가 시민에게 충분히 공개되지 않았다는 문제 제기다.

devops

티베로와 오케스트로, 공공 AI·클라우드 인프라 같이 판다

티맥스티베로와 오케스트로클라우드가 공공 부문 AI·클라우드 사업을 함께 추진하기로 했다. 티베로의 DBMS와 오케스트로의 클라우드 인프라 역량을 묶어 AI 워크로드용 데이터 플랫폼과 인프라를 패키지처럼 제안하겠다는 그림이다.

devops

SKT, AI 데이터센터 자회사 ‘SK하이퍼’ 만든다…2030년까지 7500억원 투입

SK텔레콤이 AI 데이터센터 사업개발 전문 자회사 SK하이퍼를 설립하고 2030년까지 7500억원을 출자하기로 했다. 2029년 5기가와트 규모 AI 데이터센터를 1단계로 열고, 2035년까지 총 15기가와트 규모로 확대하는 게 목표다.

devops

SKT, AI 데이터센터 전담 자회사 ‘SK하이퍼’ 만든다…2030년까지 7,500억 투입

SK텔레콤이 AI 데이터센터 사업개발 전담 자회사 SK하이퍼를 신설하고 2030년까지 7,500억 원을 출자하기로 했다. SK하이퍼는 부지 확보, 변전소 구축·운영, 고객 유치와 사업화를 맡고, 2029년 5GW를 시작으로 2035년 총 15GW 규모까지 확장하는 계획을 내놨다.