개요 내 PC 상에 저장되어 있는 도커 이미지를 다른 사람에게 공유하는 방법 두 가지에 대해 소개합니다. 하나는 도커 이미지를 파일로 만들어서 파일을 전달하는 방법이고, 또 하나는 도커 허브(Docker Hub)에 업로드하고 이로부터 다운로드하도록 하는 방법입니다. 도커 이미지를 파일로 공유하기 1. "save" 옵션을 통해 도커 이미지를 파일로 생성할 수 있습니다. tar 형식의 파일로 생성되므로 확장자는 "tar"로 지정합니다. docker save -o [FILE_NAME.tar] [IMAGE NAME] 2. 생성된 도커 이미지 파일을 공유 받은 쪽에서는 "load" 옵션을 이용하여 파일로부터 도커 이미지를 로딩할 수 있습니다. docker load -i [FILE_NAME.tar] 다음은 ubun..
개요 도커 허브(Docker Hub)에 가입하면, 클라우드 상에 저장소를 생성하여 도커 이미지를 저장해 둘 수 있고 필요 시 로컬 PC 상에 다운로드하여 사용할 수 있습니다. 본 글에서는 도커 허브에 가입하는 방법과 저장소를 생성하는 방법, 도커 이미지를 업로드하고 다운로드하는 방법에 대해 소개합니다. 도커 허브 가입하기 1. 도커 허브 싸이트에 접속합니다. Docker Hub Build and Ship any Application Anywhere Docker Hub is the world's easiest way to create, manage, and deliver your teams' container applications. hub.docker.com 2. 메인 페이지에서 "Sign Up" 버튼을..
개요 일반적으로 도커 컨테이너 상에서 작업한 내용(예: 인터넷으로부터 파일을 다운로드하거나 파일의 내용을 변경하는 등)들은 컨테이너가 종료되면 함께 사라집니다. 도커 컨테이너 상에서 작업한 내용을 이미지로 커밋(Commit)하여 나중에 해당 이미지로부터 다시 컨테이너를 실행함으로써 작업했던 내용을 다시 사용할 수 있습니다. 도커 이미지 커밋하기 특정 도커 컨테이너의 상태를 이미지로 커밋하는 방법은 다음과 같습니다. 1. 실행 중인 도커 컨테이너를 종료합니다. 2. 종료된 도커 컨테이너의 ID를 확인합니다. G:\>docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1a0a902554ba ubuntu:16.04 "/bin/bash" 9 d..
도커 컨테이너 내에서 TUN 디바이스를 사용하기 위해서는, 도커 컨테이너 실행 시에 "--device" 옵션을 함께 입력한다. docker run --device /dev/net/tun [IMAGE NAME] [OTHER OPTIONS...] 해당 옵션과 함께 실행 시, 도커 컨테이너 내에 다음과 같이 /dev/net/tun 디바이스가 생성된 것을 확인할 수 있다.
도커(Docker) : 사용자 계정으로 리눅스 컨테이너 실행하기 본 글에서는 리눅스 도커 컨테이너를 실행할 때 특정 사용자 계정으로 컨테이너를 실행하는 방법에 대해 소개한다. 기본 명령으로 리눅스 도커 컨테이너를 실행하면 다음과 같이 root 계정으로 컨테이너가 실행된다. C:\Users>docker run -it ubuntu:14.04 root@8d377bfb3ae0:/# 리눅스를 root 계정으로 사용하면 일부 제약 사항이 있을 수 있으므로, 일반 사용자 계정으로 실행해야 하는 경우가 있다. 도커 컨테이너 실행 시에 "-u " 옵션을 사용하면 원하는 사용자 계정으로 컨테이너를 실행할 수 있다. 물론 이 경우에 해당 사용자 계정이 도커 이미지 내에 이미 생성되어 있어야 한다. 다음은 초기 도커 컨테이너..
도커(Docker) : 공유 디렉토리(폴더) 연결하기 본 글에서는 도커 컨테이너를 구동하는 로컬 호스트 시스템과 도커 컨테이너 간에 공유 디렉토리(폴더)를 연결(마운트)하는 방법을 설명한다. 기본적으로, 도커 컨테이너가 종료되면 그 동안 발생한 컨테이너 내부의 변경사항이 모두 손실된다(도커 이미지로 커밋하지 않는 이상). 따라서, 변경사항이 저장될 수 있도록 로컬 호스트 시스템의 디렉터리를 도커 컨테이너 내부에 마운트한 공유 디렉토리 상에서 작업을 수행하는 경우가 많다. 다음과 같이 "-v" 또는 "--volume" 옵션을 추가하여 도커 컨테이너를 실행하면 공유 디렉터리를 연결할 수 있다. host system directory : 공유하고자 하는 호스트 시스템 디렉토리 절대 경로 container di..
도커(Docker) : 쉘 사용하기 본 글에서는 도커 컨테이너 실행 시 쉘을 사용할 수 있도록 실행하는 방법을 소개한다. 경우에 따라 도커 컨테이너에서 쉘을 이용해야 할 경우가 있다. 본인의 경우, 도커를 주로 임베디드 플랫폼 개발을 위한 리눅스 개발환경으로 사용하고 있기 때문에 쉘을 항상 사용하고 있다. 다음과 같은 명령으로 도커 컨테이너를 실행하면, 컨테이너 실행 후 바로 종료되어 버린다. docker run [IMAGE NAME] 하지만 "-it" 또는 "-i -t" 옵션을 추가하여 도커 컨테이너를 실행하면 쉘을 이용한 입출력이 가능하다. docker run -it [IMAGE NAME] 보다 자세한 내용은 아래 공식 문서 사이트에서 확인 가능하다. | Docker Documentation Dock..
도커(Docker) : 종료된 컨테이너 제거하기 본 글에서는 종료된 도커 컨테이너를 제거하는 방법에 대해 소개한다. 종료된 단일 도커 컨테이너 제거하기 종료된 도커 컨테이너를 제거하는 방법은 보통 다음과 같다. "docker ps -a" 명령을 입력하여 종료된 도커 컨테이너의 "CONTAINER ID"를 확인한다. "docker rm " 명령으로 컨테이너를 제거한다. 다음은 종료된 도커 컨테이너를 제거하는 화면이다. 종료된 다수의 도커 컨테이너를 한번에 제거하기 종료된 도커 컨테이너의 개수가 많을 경우 위와 같은 방법으로 일일이 제거하기에는 너무 번거롭다. 이럴 경우 "docker rm $(docker ps -a -q)" 명령을 입력하여 한번에 제거할 수 있다. docker rm $(docker ps -..
도커(Docker) : MAC 주소 설정(변경)하기 본 글에서는 도커 컨테이너 내부에서 사용되는 네트워크 인터페이스의 MAC(Medium Access Control) 주소를 설정하는 방법에 대해 설명한다. 도커 컨테이너를 실행하면, 기본적으로 "eth0"라는 네트워크 인터페이스가 생성되며 해당 인터페이스를 통해 도커 외부와 통신을 수행한다. 해당 네트워크 인터페이스에는 MAC 주소가 할당되는데, 도커에서 임의로 MAC 주소를 부여한다. 다음 화면은 "02:42:ac:11:00:03"이라는 MAC 주소가 할당된 모습이다. MAC 주소 설정 방법 상황에 따라 컨테이너 내부 네트워크 인터페이스의 MAC 주소를 원하는 대로 변경할 수 있으며, 그 방법은 다음과 같다. ifconfig을 이용하여 MAC 주소를 설..
도커(Docker) : 포트 포워딩 설정(포트 맵핑)하기 본 글에서는 도커 컨테이너 내부에서 동작하는 서버로 컨테이너 외부에서 접속할 수 있도록 포트 포워딩(Port forwarding) 설정 또는 포트 맵핑(Port mapping)하는 방법을 소개한다. NAT가 적용되는 도커 컨테이너 도커 컨테이너를 실행하면 기본적으로 NAT(Network Address Translation) 환경이 적용된다. 도커 컨테이너가 실행되는 호스트 시스템에 NAT 기능이 구동되며, 도커 컨테이너는 네트워킹을 위해 NAT 내부 망 IP 주소를 할당받게 된다. 다음 화면은 도커 컨테이너에서 네트워크 인터페이스의 정보를 확인한 화면이다. root@5f26874d8117:/workspace# ifconfig eth0 Link en..
도커(Docker) : IPv6 기능 활성화 하기 본 글에서는 도커(Docker) 컨테이너에서 IPv6 기능을 활성화 하는 방법을 소개한다. IPv6 를 지원하지 않는 도커 컨테이너 도커 컨테이너를 실행하면, 기본적으로는 IPv6 기능이 활성화 되지 않는다. 다음 화면은 도커 컨테이너를 실행한 후 ifconfig 명령을 통해 네트워크 인터페이스의 상태를 확인해 본 화면이다. IPv6 기능이 지원될 경우, 각 네트워크 인터페이스의 MAC 주소를 기반으로 한 링크-로컬 IPv6 주소가 자동으로 할당되어야 하는데, 그렇지 않은 것을 확인할 수 있다. root@ff6676c91fa4:/workspace# ifconfig eth0 Link encap:Ethernet HWaddr 02:42:ac:11:00:02 i..
도커(Docker) : Privileged 모드로 실행하기 본 글에서는 도커(Docker) 컨테이너를 Privileged 모드로 실행하는 방법을 소개한다. Unprivileged 모드 도커 컨테이너 도커 컨테이너는 기본적으로 Unprivileged 모드로 실행되며, 이 모드에서는 시스템 주요 자원에 접근할 수 있는 권한이 부족하기 때문에, 특정 장치 등의 시스템 자원에 접근할 수 없다. 도커 공식 문서에서는 다음과 같이 표현하고 있다. By default, Docker containers are “unprivileged” and cannot, for example, run a Docker daemon inside a Docker container. This is because by default a co..