이하의 내용은 요즘에는 잘 쓰이지 않는 복잡한 방법에 대한 설명이라서 다음 문서를 참고할 것
macOS에서_Docker_container_설치하기
개념
- process isolation
- hypervisor 기반의 VM이 아님
Benchmark
https://www.slideshare.net/BodenRussell/kvm-and-docker-lxc-benchmarking-with-openstack
Installation
VirtualBox가 따로 설치되어 있지 않다면 cask와 VirtualBox를 설치
homebrew cask 설치
cask로 설치
brew install caskroom/cask/brew-cask
cask는 CLI로 Mac OS X 애플리케이션을 설치할 수 있는 도구
VirtualBox 설치
brew cask install virtualbox
이미 설치되어 있다면 필요없음
Mac OS X에서는 직접 docker를 실행할 수 없어서 VM 위에 올려야 함
docker 설치
brew install docker
boot2docker 설치
brew install boot2docker
환경설정을 .bashrc에 등록
boot2docker 초기화
boot2docker init
boot2docker 시작
boot2docker up
Tutorial
Docker가 설치된 이후에는 macOS 뿐만 아니라 Linux에서도 동일한 명령으로 Docker를 사용할 수 있음
ubuntu 이미지 검색
docker search ubuntu
centos 이미지 검색
docker search centos
Docker 공통 저장소에 업로드되어 있는 이미지 가져오기
docker pull learn/tutorial
centos 컨테이너에서 bash를 실행
docker run -i -t centos /bin/bash
- centos 이미지를 다운로드하여 실행(docker pull의 과정도 포함됨)
- centos 이미지 안에서 /bin/bash 실행 (종료하려면 Ctrl-D)
- -i -t 옵션은 interactive/tty
컨테이너 조회
docker ps
최신 컨테이너 조회
docker ps -l
모든 컨테이너 조회
docker ps -a
컨테이너에서 exit로 빠져나오면 ps 명령의 결과에 Exited라고 표시됨
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2dc0f67ec730 centos "bash" 44 seconds ago Exited (0) 2 seconds ago elastic_hodgkin
컨테이너 재시작하기
docker restart 2dc0f67ec730
컨테이너에 연결하기(내부로 접속하기)
docker attach 2dc0f67ec730
컨테이너를 재시작하면서 연결하기
docker exec -i -t 컨테이너ID /bin/bash
컨테이너 종료
docker kill 컨테이너아이디
컨테이너 삭제
docker rm 컨테이너아이디
컨테이너 이미지 삭제
docker rmi 이미지이름
이미지를 실행하여 컨테이너 내부에서 실행
docker run learn/tutorial echo hello world
docker run learn/tutorial apt-get install -y ping
컨테이너 내부에서 ping을 설치
새로운 이름의 이미지로 커밋
docker commit 컨테이너아이디 새로운이미지이름
docker commit 6982 learn/ping
commit 후에 나오는 아이디를 가지고 검사 가능함
docker inspect efe
새롭게 커밋된 이미지 내부에서 명령 실행
docker run learn/ping ping google.com
이미지 목록 조회
docker images
내 이미지를 공통 저장소에 업로드(push)
docker push learn/ping
부모 이미지로부터 변경된 내역 확인하기
docker diff 2dc0f67ec730