1. attached vs detached
모든 프로세스 확인하기
docker ps -a
다시 시작
docker start 아이디
docker run 과 docker start의 차이
run으로 컨테이너를 실행하면 터미널에 접근할 수 없지만 start는 터미널에 접근할 수 있다.
start는 detached모드가 디폴트이며 run은 attached 모드가 디폴트이기 때문이다.
attached 모드는 그 컨테이너의 출력결과를 수신한다는 것을 의미한다.
예를 들어 콘솔에 출력되는 내용같은 것들이다.
-d 플래그를 이용해 detached 모드로 접근할수 있다.
docker run -d 아이디
실행중인 컨테이너에 attached 모드로 접근하는법
(1) docker attach 이름
(2) docker logs 이름
docker logs -f 이름으로 향후 그 컨테이너의 로그 출력결과를 다시 볼수 있다.
-a 플래그로 attached 모드로 실행할수 있다.
docker start -a 이름
2. 상호작용 모드
컨테이너로 실행중인 애플리케이션은 상호 작용 할 수 없다.
docker run으로 실행하면 디폴트로 컨테이너에 연결된다.
그래서 우리는 컨테이너에 의해 출력된 결과를 받을수 있지만 우리가 어떠한 값을 터미널에 입력할수는 없다.
-i 플래그 : interactive 모드로 실행
-t 플래그 : 터미널 생성
docker run -it 아이디
위 명령어로 실행하면 사용자 입력을 수신하는 컨테이너 프로세스에도 연결된다.
docker start로 재실행 할때는 처음에 -t플래그로 시작했기 때문에 이를 기억한다.
그래서 i플래그와 a플래그만 입력하면 된다.
docker -ai 이름
3. 이미지, 컨테이너 삭제
(1) 컨테이너 삭제
docker rm 이름
실행중인 컨테이너는 제거 할 수 없고 중지된 컨테이너만 제거할 수 있다.
docker rm 이름1 이름2 이름3
여러개의 컨테이너를 한번에 제거할 수도 있다.
(2) 이미지 삭제
docker rmi 이미지아이디
기본적으로 이미지 내부의 모든 레이어를 삭제한다.
이미지를 기반으로 하는 컨테이너가 있는때에는 삭제할 수 없다.
따라서 그 컨테이너들을 모두 삭제한 후 이미지를 삭제할 수 있다.
(3) 사용되지 않는 이미지 제거
docker image prune
모두 제거
docker image prune -a
a플래그를 추가해 모두 제거할 수도 있다.
4. 중지된 컨테이너 자동 제거하기
docker run --rm 이미지아이디
컨테이너를 생성할때 --rm 명령어를 추가해주면 중지할때 자동으로 제거된다.
5. 이미지 검사
docker image inspect 이미지아이디
이미지 전체 아이디, 생성시간, 컨테이너 구성, 노출될 포트, 운영체제, 레이어들 등을 확인할 수 있다.
6. 컨테이너로, 컨테이너로부터 파일 복사하기
docker cp dummy/. 컨테이너이름:/test
로컬의 dummy폴더에 있는 전부를 컨테이너의 test폴더에 복사한다.
docker cp 컨테이너이름:/test dummy
컨테이너의 test폴더를 dummy폴더에 복사한다.
이 명령어를 활용하여 소스코드가 변경되었을때 복사하여 넣을수 있다.
일반적으로 소스코드가 변경되면 이미지를 다시 빌드하고 다시 시작해야하지만 그 번거로움을 줄일수 있다.
하지만 오류가 빈번하고 파일을 잃어버리기 쉽기 때문에 잘 사용하진 않는다.
실행중인 파일을 복사하는것은 불가능하다.
7. 컨테이너, 이미지에 이름과 태그 지정하기
설정을 따로 하지 않으면 랜덤으로 이름이 생성되는데 이를 지정하여 생성할 수 있다.
(1) 컨테이너 이름 지정
docker run --name 이름 이미지아이디
(2) 이미지 이름,태그 지정
이름:태그 형식으로 이미지의 태그와 이름을 지정할 수 있다.
node:14처럼 node이미지의 14버전을 표시하는 형식으로 그 이미지의 특정화된 버전을 정의할 수 있다.
여러개의 특정화된 이미지 그룹을 생성할 수 있는 것이다.
이미지에 태그가 없다면 그 이름만으로도 이미 고유 식별자이다.
docker build -t 이름:태그 .
'개발 > Docker' 카테고리의 다른 글
[Docker] 도커 마운트 경로 오류 (0) | 2022.12.14 |
---|---|
[Docker] DockerHub 사용하기 (0) | 2022.12.13 |
[Docker] Dockerfile (0) | 2022.12.13 |
[Docker] 이미지와 컨테이너 (0) | 2022.12.13 |
[Docker] 도커의 개념 (0) | 2022.12.13 |