-
컨테이너 머신 살펴보기
Container에 포함된 새로운 도구인 컨테이너 머신을 만나 보세요. 이 도구는 Mac에서 가볍고 영속적인 Linux 환경을 제공합니다. 컨테이너 머신이 작동하는 방법과 macOS에서 Linux용 개발 시 Containerization 설계로 효과적이고 원활한 경험을 제공하는 방법을 알아보세요.
챕터
- 0:00 - Introduction
- 1:19 - Containerization
- 2:14 - Design principles
- 3:36 - Container machine
- 4:36 - Demo
- 10:33 - Next steps
리소스
관련 비디오
WWDC25
-
비디오 검색…
안녕하세요, 저는 Michael이고 오늘은 Containerization을 기반으로 한 새로운 기능을 소개하겠습니다
Containerization은 Linux 컨테이너를 실행하기 위한 Swift 프레임워크로 보안, 개인 정보 보호 성능에 중점을 두고 있습니다
Linux 컨테이너는 서버 사이드 애플리케이션을 빌드, 테스트, 배포하기 적합합니다
이 기반 위에 구축된 Container machine은 고도로 통합된 Linux 환경을 제공하는 새로운 기능입니다 Mac에서 원활하게 작동합니다 Container machine은 컨테이너처럼 빠르고 가볍습니다 그리고 가상 머신처럼 지속적입니다 호스트 통합을 통해 Container machine은 macOS에 기본처럼 느껴집니다 Container machine에 대해 더 알아보기 전에 Containerization 프레임워크를 살펴보는 시간을 갖겠습니다 그런 다음 Container machine을 만든 설계 원칙을 살펴보겠습니다
마지막으로 Container machine이 크로스 플랫폼 개발을 위한 원활한 워크플로를 제공하는 방법을 살펴봅니다
WWDC 25에서 우리는 Containerization을 오픈 소스로 공개했습니다
Containerization은 macOS에서 Linux 컨테이너를 실행하는 Swift 프레임워크입니다 스토리지, 네트워킹, 실행 및 Linux init 시스템용 API를 제공합니다
각 컨테이너에 가상 머신 기반 격리를 제공하도록 설계되었습니다 이러한 경량 가상 머신은 성능이 뛰어나고 1초 미만의 시작 시간을 제공합니다
Containerization과 함께 container 도구도 오픈 소스로 공개되었습니다 이미지 생성, 배포를 위한 CLI 명령을 제공합니다 그리고 Linux 컨테이너의 수명 주기 관리도 지원합니다 Containerization의 전체 아키텍처에 대해 더 알고 싶다면 container 도구를 포함해 WWDC 25의 "Meet Containerization"을 시청하세요 이제 Container machine의 설계 원칙을 살펴보겠습니다 이러한 환경은 빠르고 가벼워야 합니다 기존 워크플로에 통합하기 위해서입니다 macOS와 Linux 간 전환이 쉬워야 합니다
사용자는 새 환경을 빠르게 사용자 지정하고 만들 수 있어야 합니다 빠른 생성으로 여러 프로젝트가 각자 전용 환경을 가질 수 있습니다 의존성 또는 툴체인 충돌 걱정 없이
개발 수명 주기 동안 다양한 도구와 의존성이 필요한 경우가 많습니다 지속적인 환경을 갖추면 시간이 지나도 추가 도구를 계속 추가하고 활용할 수 있습니다 마지막으로 이러한 Linux 환경은 기존 워크플로에 통합되어야 합니다 여러 플랫폼 개발 시 큰 컨텍스트 전환이 필요하지 않아야 합니다 새로운 도구를 배울 필요가 없어야 합니다 다른 환경을 대상으로 할 때도 마찬가지입니다
Container machine을 구축할 때 이러한 설계 원칙을 염두에 두었습니다 Container machine은 빠르고 가벼워야 합니다 관리가 간단해야 합니다 지속성을 제공하여 사용자가 언제든 다시 접근할 수 있어야 합니다 그리고 Container machine은 macOS의 확장처럼 느껴져야 합니다 이러한 설계 원칙을 염두에 두고 Container machine이 크로스 플랫폼 워크플로를 개선하는 방법을 살펴봅니다 Containerization을 기반으로 구축되어 각 Container machine은 자체 경량 가상 머신 내에서 실행됩니다 그리고 컨테이너와 동일한 이미지 형식을 사용합니다
container 도구의 일급 기능이며 친숙한 UX를 갖추고 있습니다 container 도구로 빌드한 이미지는 새 Container machine의 시작점으로 사용할 수 있습니다
Container machine은 상태를 유지하며 변경 사항을 지속합니다 작업하는 동안 필요에 따라 프로젝트를 시작하고 중지하세요 Container machine은 중단한 곳부터 계속할 수 있도록 환경을 유지합니다
자동 사용자 매핑, 공유 파일 시스템 지원 그리고 Linux 환경에 진입하는 기능을 통해 터미널 어디에서든 관계없이 Container machine은 원활한 전환을 제공합니다 macOS에서 Linux로, 그리고 다시 되돌아올 수 있습니다 이제 Container machine이 작동하는 모습을 살펴봅시다 container machine부터 시작하겠습니다
수행할 수 있는 작업의 개요를 보여줍니다 create, run, stop 등이 포함됩니다 새 Container machine을 생성하려면 container machine create를 사용합니다
이름을 제공하고 Mac에서 기본 머신으로 설정합니다 이렇게 하면 모든 명령에서 이름을 제공하지 않아도 됩니다
Container machine은 컨테이너가 사용하는 동일한 OCI 이미지를 사용합니다 일반적인 컨테이너 이미지는 alpine입니다
좋아요, Container machine이 생성되었습니다
다음으로 이 Container machine 내에서 명령을 실행하겠습니다 container machine run을 사용하여 echo 명령을 실행합니다
좋아요, uname으로 시도해 보겠습니다
macOS에서 uname은 Darwin을 출력합니다
container machine run uname은 Linux를 출력하여 런타임 환경을 반영합니다
Container machine은 자동으로 사용자 이름을 미러링합니다 Mac의 현재 작업 디렉토리도 함께 Mac에서 whoami를 실행하면 Michael을 반환합니다
pwd를 실행하면 macOS의 사용자 홈 디렉토리에 있음을 보여줍니다
Container machine 내부에서 인터랙티브 셸을 실행해 봅시다 container machine run을 추가 인수 없이 실행하면 인터랙티브 세션이 시작됩니다
container machine 내부에서 whoami와 pwd를 실행하면 Mac의 동일한 사용자 이름과 경로를 반환합니다
좋아요!
자동 사용자 생성, 파일 시스템 공유 일관된 작업 디렉토리 유지가 원활한 경험을 제공합니다 제가 구축 중인 애플리케이션을 보며 더 살펴봅시다 Linux에서 실행 및 배포할 Vapor 기반 웹 서버가 있습니다 제 워크플로에서는 Mac의 Xcode를 사용해 프로젝트를 편집합니다 macOS 도구로 애플리케이션의 이미지를 편집합니다 Linux에서 빌드하고 실행한 다음 Safari에서 웹 서버에 접속하여 macOS에서 변경 사항을 테스트합니다 이 애플리케이션을 작업해 봅시다 터미널에서 ls를 실행하면 프로젝트 파일이 표시됩니다
Package.swift, 소스 코드, 에셋이 있는 Public 디렉토리가 있습니다 swift 툴체인이 설치된 Container machine이 있습니다 container machine list는 이름을 표시합니다 모든 Container machine의 IP 주소와 리소스 정보도 함께 표시됩니다
IP 주소를 나중에 사용하기 위해 복사합니다
Linux에서 애플리케이션을 테스트할 준비가 되었습니다 인터랙티브 셸로 시작하겠습니다 Container machine 내부에서 container machine run을 실행하여
자동 디렉토리 공유를 통해 모든 프로젝트 파일에 접근할 수 있습니다
Container machine은 격리된 네트워크를 갖습니다 Mac의 Safari에서 웹 서버에 접속하려면 Container machine 내에서 실행 중인 Vapor가 외부 인터페이스에서 수신 대기하도록 해야 합니다 Xcode에서 서버 설정을 업데이트해 봅시다
설정의 호스트 이름을 Container machine의 IP 주소로 설정합니다 이 값은 앞서 복사해 두었습니다 Mac의 Xcode에서 이 파일을 편집했지만 이러한 변경 사항은 이미 Container machine에서 사용할 수 있습니다 터미널로 돌아가서 애플리케이션을 컴파일하고 실행할 준비가 되었습니다
서버가 실행 중이니 Safari에서 사이트를 확인해 봅시다 Safari를 열고 container machine의 IP를 붙여넣겠습니다 주소 표시줄에 포트 8080도 추가하겠습니다
접속이 잘 됩니다 계속 보고 싶을 정도입니다!
마지막 변경을 해보겠습니다 화면의 스토리지 아이콘을 만들기 위해 Icon Composer를 사용했습니다 아이콘 배경을 그라데이션으로 변경하고 싶습니다 기존 아이콘 파일을 Icon Composer에서 열어 이 변경을 진행합니다
이제 이 아이콘을 프로젝트에 내보내고 기존 파일을 덮어씁니다
파일을 Container machine에 복사하지 않고도 Safari에서 페이지를 새로 고침하면 업데이트된 아이콘이 자동으로 표시됩니다 Safari로 돌아가 봅시다
업데이트가 작동하고 있습니다!
Container machine은 컨테이너의 사용성과 속도를 기반으로 구축되며 가상 머신의 지속성을 더합니다 원활한 통합으로 Linux 환경을 제공합니다 Mac의 확장처럼 느껴지는 Container machine을 사용해 보시길 기대하고 있습니다 Github에서 container 도구의 최신 릴리스를 다운로드하세요 여러분의 피드백을 기다리겠습니다 시청해 주셔서 감사합니다!
-
-
4:41 - Viewing container machine commands
container machine -
5:00 - Creating a new container machine
container machine create --name demo --set-default alpine -
5:39 - Echo hi
container machine run echo hi -
5:57 - Running uname
container machine run uname -
6:28 - Start interactive shell
container machine run -
8:01 - List container machines
container machine list -
8:22 - Start interactive shell
container machine run -
9:13 - Run the application
swift run
-
-
- 0:00 - Introduction
Introduces Container machine, a new feature built on the Containerization framework that provides a fast, lightweight, and persistent Linux environment seamlessly integrated with macOS.
- 1:19 - Containerization
Reviews the open-source Containerization Swift framework — its architecture, VM-based isolation, sub-second start times, and the companion container CLI tool.
- 2:14 - Design principles
Outlines the four principles that shaped Container machine: fast and lightweight, simple to create and operate, persistent across sessions, and a seamless extension of macOS.
- 3:36 - Container machine
Explores how Container machine builds on Containerization with OCI image support, first-class integration into the container tool, stateful persistence, and automatic user and filesystem mirroring.
- 4:36 - Demo
Demonstrates creating and running a Container machine, executing commands with automatic user and directory mirroring, and building and testing a Vapor web server from macOS using Xcode, Icon Composer, and Safari.
- 10:33 - Next steps
Recaps Container machine key strengths and encourages viewers to download the latest container 1.0 release from GitHub to try it in their workflow.