>> docker run hello-world
1. docker 클라이언트에 명령어 입력 후 docker 서버로 보냅니다.
2. docker 서버에서 컨테이너를 위한 이미지가 이미 cache가 되어 있는지 확인합니다.
3. 이미지가 없으면 docker hub에서 다운로드 받아오고, 있다면 가지고 있던 이미지로 컨테이너를 생성합니다.
1. 먼저 파일 스냅샷을 컨테이너의 하드디스크 부분에 올립니다.
2. 시작 커맨드를 이용하여 애플리케이션을 실행합니다.
>>> docker run 이미지 이름 ls
ex) docker rename original-name changed-name
원하는 항목만 보기
>>> docker ps --format 'table {{.Names}} \t table{{.Image}}'
모든 컨테이너 나열
>>> docker ps -a
docker run <이미지 이름> = docker create <이미지 이름> + docker start <컨테이너 아이디/이름>
>>> docker create <이미지 이름>
: 명령어를 실행하면 이미지 안의 파일 스냅샷이 컨테이너의 하드 디스크로 들어갑니다.
>>> docker start -a <컨테이너 아이디/이름>
: 명령어를 실행하면 컨테이너 ID가 실행 중인 프로세스 들어가서 컨테이너가 실행합니다.
: -a : attach
Stop과 Kill의 공통점과 차이점?
>>> docker stop <컨테이너 아이디/이름>
>>> docker kill <컨테이너 아이디/이름>
삭제
>>> docker rm <아이디/이름>
: 중지된 컨테이너를 삭제할 시
>>> docker rm 'docker ps -a -q'
: 모든 컨테이너를 삭제하고 싶을 시
>>> docker rm <이미지 id>
: 이미지를 삭제하고 싶을 시
>>> docker system prune
: 한번에 사용하지 않는 컨테이너, 이미지, 네트워크 모두를 삭제하고 싶을 시
>>> docker exec <컨테이너 id>
: docker run <이미지 이름> 과 똑같은 결과
: 하나의 터미널에서 Redis run.
: 두번째 터미널에서 Redis-cli 명령어를 시도하지만 실패합니다. 그 이유는,
: Redis 클라이언트가 Redis 서버가 있는 컨테이너 밖에서 실행을 하려 하니 Redis 서버에 접근을 할 수 없어 Redis 클라이언트를 작동하려 할 때 에러가 발생합니다.
어떻게 해결하나요?
-> Redis 클라이언트도 컨테이너 안에서 실행을 시켜야 합니다.
exec 명령어를 실행하기 위해서 docker ps 를 실행하여 redis의 컨테이너 ID를 알아냅니다.
>>> docker exec -it <컨테이너 id> redis-cli
실행합니다.
컨테이너 상세정보 확인
>>> docker inspect <컨테이너 id>
: 컨테이너 상세정보를 확인합니다.
: 상세정보에는 네트워크, 볼륨 등이 포함되어 있습니다.
컨테이너 로깅
>>> docker logs <컨테이너 id>
: 컨테이너의 로그를 확인합니다.
: -f(follow output) 옵션을 사용하면 로그가 생성되는 것을 실시간으로 확인할 수 있습니다.
컨테이너와 호스트간 파일 복사
>>> docker cp <HOST_PATH> <CONTAINER_ID>:<CONTAINER_PATH>
: 컨테이너와 호스트간 파일을 복사하여 주고 받을 수 있습니다.
이미지 태그 삽입
>>> docker tag <OLD_NAME>:<TAG> <NEW_NAME>:<TAG>
: 기존에 존재하는 이미지에 태그를 부여함으로써 새로운 이름을 줄 수 있습니다.
이미지 확인
>>> docker images
: 원격 저장소에서 다운로드하여 로컬에 저장된 이미지 목록을 확인합니다.
이미지 업로드
>>> docker push <USERNAME>/<IMAGE_NAME>
: 로컬에 있는 이미지를 로그인한 도커 허브의 원격 저장소에 업로드합니다.
이미지 다운로드
>>> docker pull <IMAGE_NAME>
: 원격 저장소에 있는 이미지를 다운로드합니다.
: 앞에서 'docker run'을 통해 컨테이너를 실행할 때 로컬에 이미지가 없으면 원격 저장소에서 받아온다고 했습니다.
: 'docker pull' 명령어를 사용하면 컨테이너 생성은 하지 않고 이미지 다운로드만 수행할 수 있습니다.
이미지 삭제
>>> docker rmi <IMAGE_NAME>
: 로컬에 있는 이미지를 삭제합니다.