Docker는 컨테이너 런타임 환경으로, 컨테이너화 된 애플리케이션을 패키징하고 배포하는 효율적인 방법을 제공합니다.
도커를 사용하면 패키지를 중앙 저장소(docker hub)로 전송할 수 있으며, 도커를 실행하는 모든 컴퓨터에 전송할 수 있습니다.
이와 관련해서 도커의 세 가지 주요한 개념을 설명하자면,
이미지: 애플리케이션과 해당 환경을 패키지화 한것. 여기에는 애플리케이션에서 사용할 수 있는 파일시스템과 이미작 실행될 때 실행돼야 하는 실행팡일 경로와 같은 메타 데이터가 포함되어 있습니다.
레지스트리: 도커 이미지를 저장하고 다른 사람이나 컴퓨터 간에 해당 이미지를 쉡게 공유할 수 있는 저장소. 이미지를 빌드할 때 빌드하는 컴퓨터에서 이미지를 실행하거나 이미지를 레지스트리로 PUSH(업로드)한 다음 다른 컴퓨터에서 이미지를 PULL(다운로드)할 수 있습니다.
컨테이너: 도커 기반 컨테이너 이미지에서 생성된 일반적인 리눅스 컨테이너입니다. 실행 중인 컨테이너는 도커를 실행하는 호스트에서 실행되는 프로세스이지만 호스트와 호스트에서 실행 중인 다른 프로세스와 완전히 격리되어 있습니다.
docker search: docker의 이미지를 찾을 때 사용하는 명령어
- f 옵션: 필터링 할 때 사용하는 옵션
- limit 옵션: 제한 할 때 사용하는 옵션
- trunc 옵션: 이미지의 설명을 끊기지 않고 다 보여주는 옵션
ex)
docker search -f stars=30 centos = stars 수가 30 이상인 centos 이미지만 보여준다.
docker search -f is-official=true centos = centos 이미지 중 공식적인 이미지만 보여준다.
docker search -f is-automated=true centos:
docker search --limit 10 centos = 보여주는 centos 이미지의 수를 10개로 제한한다.
docker search --no-trunc centos = centos 이미지들의 설명을 생략없이 다 보여준다.
docker pull: 이미지를 가져오는 명령어
ex)
docker pull centos = centos의 최신 버전 이미지를 가져온다.(태그를 안주면 최신버전으로 가져옴)
docker pull centos:7 = 태그 7인 centos 이미지를 가져온다.
docker images: 이미지를 확인하는 명령어
docker rmi [REPOSITORY:tag]: 이미지를 삭제하는 명령어
ex)
docker rmi centos
docker rmi centos:7
docker tag: 이미지의 태그를 변경 하는 명령어
ex)
docker tag centos [repository 이름]:[바꾸고자하는 태그명] = centos 이미지가 repository에 바꾸고자하는 태그명으로 바뀐다.
docker push: 이미지를 repository에 넣는 명령어
ex)
docker push kwonsuhan/http:centos7 = kwonsuhan/http라는 repository에 centos7이라는 태그로 넣어준다.
docker run: 이미지를 실행하는 명령어
- i(interactive) 옵션: 표준 입력(stdin)을 활성화 한다. 쉘에 명령어를 입력하기 위해 필요하다.
- t(tty) 옵션: tty 모드를 활성화 한다.
- d(detach) 옵션: 보통 데몬 모드라고 부르며, 컨테이너가 백그라운드로 실행됩니다.
- p(publish) 옵션: 호스트와 컨테이너의 포트를 연결한다.
ex)
docker run -itd --name n1 nginx = nginx 이미지를 n1이라는 이름으로 컨테이너를 생성하고 실행한다.
docker ps: 실행된 컨테이너 프로세스를 확인하는 명령어
- a 옵션: 모든 컨테이너 프로세스를 보여주는 옵션
ex)
docker ps -a = 모든 컨테이너 프로세스를 보여준다.
docker ps -aq = 모든 컨테이너 프로세스의 ID를 보여준다.
docker exec -it [name or container ID] [bash의 종류]: 컨테이너에 쉘로 접속하는 명령어
ex)
docker exec -it 013e67d7bb24 /bin/bash = 013e67d7bb24 컨테이너에 /bin/bash 쉘로 접속한다.
docker rm [name or container ID]: 컨테이너 프로세스 종료
- f 옵션: 강제로 프로세스 종료
ex)
docker rm -f $(docker ps -aq) = 모든 컨테이너 프로세스 강제 종료
docker attach: 컨테이너 접속
이 때 나올 때는 ctrl + p + q 로 나와야한다.
실제 명령어 결과
docker search
docker pull
tag를 지정하지 않고 [이미지명] 만 입력하면 자동으로 가장 최신 버전으로 받아진다.
docker rmi
docker tag
docker push
docker run
실행하는 프로세스 마다 서비스인지, 쉘인지 확인하기 어렵다면 옵션에 -itd를 다 써주면 자동으로 실행된다.
docker ps
도커 삭제를 할 때 repository명만으로 삭제할 때는 tag가 latest 버전일 때만이다. 그 외에 경우에는 삭제를 할 때 tag까지 같이 써주어야 한다.