이미지로 컨테이너를 생성하면 해당 이미지의 목적에 맞는 파일이 들어 있는 파일 시스템과 격리된 시스템 자원 및 네트워크를 사용할 수 있는 독립된 공간이 생성되고, 이것이 도커 컨테이너가 된다.
컨테이너는 이미지를 읽기 전용으로 사용한다.
이미지에서 변경된 사항만 컨테이너 계층에 저장하므로, 컨테이너에서 무엇을 하든이 원래 이미지는 영향을 받지 않는다.
각기 독립된 파일 시스템을 제공받으며 호스트와 분리돼 있으므로 특정 컨테이너에서 어떤 애플리케이션을 설치하거나 삭제해도 다른 컨테이너와 호스트는 변화가 없다.
run
명령어는
pull, create, start
명령어를 일괄적으로 실행한 후 attach
가 가능한 컨테이너라면 컨테이너 내부로 들어간다.
(attach
는 -i -t
옵션을 사용했을 때)
docker run 이미지이름
docker run --name 컨테이너이름 이미지이름
docker run -i -t 이미지이름
i-
상호 입출력 옵션-t
tty 활성화// 생성 (이미지가 없으면 pull + create)
docker create 이미지이름
// 컨테이너 시작
docker start 컨테이너이름
// 컨테이너 내부로 들어가기
docker attach 컨테이너이름
컨테이너를 대상으로 하는 명령어에 컨테이너 이름 대신 ID를 쓸 수 있고,
ID의 앞의 3~4자만 입력해도 된다.
하나의 이미지는 여러 개의 컨테이너를 만들 수 있다.
// docker ps
// 방법 1.
exit
//방법 2.
Ctrl + D 동시에 입력
단순히 컨테이너의 셸에서만 빠져나온다.
Ctrl + P, Q
docker ps
docker ps -a
COMMAND
- 컨테이너가 시작될 때 실행될 명령어, 대부분의 이미지에 미리 내장돼있기 때문에 별도로 설정할 필요는 없다.
- 이미지에 내장된 커맨드는
docker run
이나create
명령어의 맨 끝에 입력해서 덮어쓸 수 있다.
CREATED
- 컨테이너가 생성되고 난 뒤 흐른 시간
NAMES
- 컨테이너의 고유한 이름
- 컨테이너를 생성할 때
--name
옵션으로 설정하지 않으며 임의로 형용사+명사를 조합해 설정된다.- 중복 불가!
docker rename
으로 변경 가능
docker stop 컨테이너이름
스탑했다고 컨테이너가 삭제된 것은 아니다! docker ps -a
명령어를 쓰면 stop한 컨테이너도 출력되는 것을 볼 수 있다.
stop한 컨테이너를 다시 실행시키려면 run이 아닌 start ~!
docker start 컨테이너 이름
start 했을 때는, 로그는 출력되지 않는다.
docker logs 컨테이너 이름
이렇게 하면 한번만 찍히고 만다.
계속해서 보려면 👇🏻
docker logs -f 컨테이너 이름
삭제하면 복구할 수 없다.. 신중하게..!
docker rm 컨테이너 이름
실행중인 컨테이너를 삭제하면 에러가 난다.
docker stop 컨테이너이름
으로 스탑하고 삭제하거나,
docekr rm -f 컨테이너이름
으로 강제로 삭제한다.
docker container prune
-a
컨테이너 상태와 관계 없이 모든 컨테이너 출력-q
컨테이너의 ID만 출력// 실행 상태와 관계 없이 모든 컨테이너 정지/삭제
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)