
안녕하세요, Mark입니다.
오늘은 서버 구축기 시리즈에서 잠깐 벗어나서, 회사에서 생긴 일을 하나 소개할게요. 순전히 “이러면 어떻게 되지?” 하는 호기심에서 시작한 실험이었는데, 결과가 꽤 흥미롭게 나왔거든요. ㅎㅎ
⚠️ 한 가지 미리 말씀드리면: 이 방법은 기술적인 원리를 소개하는 글이에요. 실제 활용 전에는 본인 회사의 보안 정책을 꼭 확인하세요. 그 판단은 각자에게 맡길게요 ㅎㅎ
🚧 우리 회사 인터넷, 꽤 촘촘합니다
저희 회사 인터넷에는 차단 목록이 있어요. 특정 사이트에 접속하면 페이지 대신 보안 경고가 뜨면서 막혀요. 사람인 같은 채용 사이트, 네이버 쇼핑 같은 곳들이 대표적이고, 회사에서 블랙리스트로 올려둔 페이지들도 포함돼요.
물품 구매할 때는 전산팀에 “이 사이트 해제 요청”을 먼저 넣고, 승인 나면 그때 들어가서 검색하는 방식이었어요. 번거롭긴 해도 어쩔 수 없다고 생각했는데…
그러다가 전 브레이브(Brave) 브라우저를 주로 썼어요. 광고 차단이 기본이라 유튜브 광고도 안 나오고, 집에서도 주로 쓰는 브라우저거든요. 그리고 회사 보안망이 브레이브 접속을 잘 감지 못하는지 한동안은 차단 페이지가 안 떴어요.
그런데 어느 순간 그것도 막혔습니다. 브레이브에서도 차단 페이지가 뜨기 시작한 거예요. 😅
💡 “도커 안에 브라우저를 넣으면 어떻게 되지?”
바로 그때 갑자기 이런 생각이 들었어요.
“회사 컴퓨터에 Docker Desktop이랑 Portainer가 설치되어 있는데… 혹시 브라우저를 컨테이너로 설치하면?”
결과부터 말씀드리면, 완벽하게 작동했습니다. ㅎㅎ
🧭 왜 이게 되는 걸까요?
원리를 이해하면 “아 그렇구나” 싶어요.
회사 보안 시스템이 사이트를 차단하는 방식은 보통 이렇습니다:
내 브라우저 → 회사 방화벽 → (차단!) → 목적지 사이트
차단 목록에 있는 도메인으로 요청이 나가면, 회사 방화벽이 그걸 잡아서 차단 페이지를 보여주는 거예요.
그런데 컨테이너 브라우저는 다릅니다:
내 브라우저 → localhost:3011 → 컨테이너 브라우저 → 목적지 사이트
회사 브라우저 입장에서는 localhost:3011이라는 로컬 웹페이지에 접속하는 거예요. 외부로 나가는 게 아니라요. 실제 외부 요청은 컨테이너 안의 브라우저가 하는 건데, 이건 회사 방화벽이 어느 사이트인지 잘 감지하지 못해요.
회사 입장에서 보면 그냥 “직원이 로컬 웹페이지 하나 열었네”로 보이는 거죠. ㅎㅎ
📦 설치 방법: 크로미움(Chromium)
포테이너 → Stacks → Add Stack에서 아래 내용을 붙여넣으세요.
services:
chrome-local:
image: lscr.io/linuxserver/chromium:latest
container_name: chrome-local
restart: unless-stopped
shm_size: 512m
ports:
- "3011:3000"
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Seoul
- LANG=ko_KR.UTF-8
- LANGUAGE=ko_KR:ko
Deploy 후 브라우저에서 접속:
http://localhost:3011
회사 크롬 브라우저 안에서 크로미움 브라우저가 열립니다. 브라우저 안의 브라우저예요. ㅎㅎ

📦 설치 방법: 브레이브(Brave)
광고 차단이 필요하다면 브레이브 버전을 쓰세요. 유튜브 광고도 컨테이너 안에서 완벽하게 차단됩니다.
services:
brave-local:
image: lscr.io/linuxserver/brave:latest
container_name: brave-local
restart: unless-stopped
shm_size: 1g
ports:
- "3012:3000"
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Seoul
- LANG=ko_KR.UTF-8
- LANGUAGE=ko_KR:ko
접속:
http://localhost:3012
둘 다 설치해두고 상황에 따라 골라 쓰는 것도 좋아요. 크로미움은 3011, 브레이브는 3012번 포트라 겹치지 않아요.
✨ 장점 정리
| 항목 | 내용 |
|---|---|
| 아키텍처 | ARM64 / AMD64 모두 지원 |
| 광고 차단 | 브레이브 컨테이너 안에서도 완벽 작동 |
| 유튜브 광고 | 없음 ✅ |
| 데이터 유지 | 세션 종료해도 컨테이너 재시작 전까지 유지 |
| 보안망 영향 | localhost 통신이라 방화벽 우회 |
⚠️ 실사용 꿀팁 (이거 모르면 당황합니다)
탭을 전부 닫으면 검은 화면이 됩니다!
일반 브라우저는 탭을 다 닫으면 브라우저 자체가 종료되는데, 이건 브라우저 안의 브라우저라서 달라요. 탭을 다 닫으면 안쪽 브라우저는 꺼지는데 바깥 웹페이지는 살아있어서, 그냥 까만 화면만 남아요.
이 상태에서 복구하는 방법은 Portainer에서 컨테이너 Restart 후 다시 접속하는 것뿐이에요.
💡 탭 하나는 항상 남겨두는 습관을 들이세요. ㅎㅎ
그 외에도:
- 윈도우 네이티브 브라우저보다 약간의 이질감이 있어요. 스트리밍 방식으로 화면을 전송하기 때문이에요.
- 완전 초기화가 필요하면 컨테이너를 재생성하면 됩니다.
✅ 핵심 요약
| 항목 | 내용 |
|---|---|
| 원리 | 컨테이너 브라우저 = 회사 방화벽엔 로컬 웹페이지로 보임 |
| 크로미움 | localhost:3011 |
| 브레이브 | localhost:3012 (광고차단 포함) |
| 주의사항 | 탭 전부 닫으면 검은 화면 → 컨테이너 리스타트 필요 |
| 준비물 | Docker Desktop + Portainer만 있으면 됨 |
마치며
“도커 안에 브라우저를 넣으면 어떻게 되지?”라는 순수한 호기심에서 시작했는데, 생각보다 완벽하게 작동해서 저도 놀랐어요.
기술적으로 보면 이건 컨테이너가 독립적인 네트워크 환경을 갖는다는 도커의 기본 원리가 만들어낸 결과예요. 서버에서 각 서비스가 격리되는 것처럼, 브라우저도 격리된 환경에서 실행되는 거니까요.
오라클 서버 구축하면서 익힌 도커 지식이 회사 컴퓨터에서도 쓸모 있다는 게 새삼 뿌듯하네요. ㅎㅎ
“크롬 안에서 브레이브가 열리는 걸 처음 봤을 때, ‘이게 되네?’ 하고 혼자 웃었습니다. 도커를 배워두길 잘했어요.” — Mark, 브라우저 안에 브라우저를 넣어본 사람