본문 바로가기

두두의 IT

도커 명령어(pull, create, start, attach, commit, run, stop, images, ps, exec, rm, container, volume, inspect, logs)

728x90
> docker pull {이미지명}
> docker pull {이미지명:태그명}
  • 이미지 가져오기
  • 용량 먹음

 

[컨테이너 실행 방법1]

 

> docker create -it --name encore ubuntu:18.04
  • 컨테이너 생성 (실행 X)

 

> docker start encore
  • 컨테이너 실행
  • 컨테이너 종료되었을 때 attach와 같이 사용
  • 컨테이너 안의 실행파일이 남아있음

 

> docker attach {컨테이너ID | 컨테이너명}
  • 컨테이너 접속
  • 컨테이너 종료(exit, stop)되었을 때 start와 같이 사용

 

[컨테이너 실행 방법2]

> docker commit -a 'encore' -m 'first commit' {컨테이너명} {이미지명}:{태그명}
  • 이미지 만들기
  • -a "누가 만들었니"
  • -m "메세지"

 

> docker run {이미지명}:{태그명}
> docker run -it {이미지명}
> docker run -it {이미지명}:{태그명}
> docker run -it --name {컨테이너명} {이미지명}:{태그명}
> docker run -it --name {컨테이너명} -p {로컬PC포트}:{도커포트} {이미지명}:{태그명}
> docker run -it --name {컨테이너명} {사용자명}/{이미지명}

#mysql 컨테이너 실행
> docker run -d --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress mysql:5.7
#wordpress 컨테이너 실행
> docker run -d --name wordpress -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=password -e WORDPRESS_DB_NAME=wordpress --link wordpressdb:mysql -p 80:80 wordpress
  • run : 이미지가 없으면 다운받은 다음 그 이미지를 내 컴퓨터에서 컨테이너로 만듦. 
  • -it : run 명령어의 옵션. 해당 컨테이너를 연 다음 그 환경 안에서 CLI 즉, 명령어를 입력할 수 있게 만들어줌
  • -p : 내 컴퓨터 (80번) 포트와 도커의 (80번) 포트를 연결시켜줘. 도커에 띄워진 (아파치를) 내 컴퓨터에서 확인할 수 있음
  • -d : 백그라운드 실행
  • -e : 파라미터
  • --link : mysql과 묶어주기
run -it == create + start + attach 이므로,
run -it 명령어를 더 자주 씀

 

> docker stop $(docker ps -aq)
> docker stop {컨테이너명}
  • 모든 컨테이너 종료
  • 컨테이너를 종료시키면 그 컨테이너에서 실행되었던 명령어들은 무효가 됨(wget을 설치했는데 삭제됨). 그래서 환경을 세팅하고 바로 이미지로 만들어야 함
  • Ctrl + P + Q로 종료하지 않고 빠져나오는 방법도 있음

[볼륨 방법1]

> docker run --name {컨테이너명} -v %cd%:{도커컨테이너경로} {이미지명}
> docker run --name {컨테이너명} -v {내PC경로}:{도커컨테이너경로} {이미지명}
  • -v : 내PC 폴더를 도커 컨테이너 폴더와 공유(복사)하는 것
  • 내PC 파일 -> 도커 컨테이너 파일

 

[볼륨 방법2]

> docker volume create --name {볼륨명1}
> docker run -it --name {컨테이너명1} -v {볼륨명1}:{도커컨테이너경로} {이미지명}:{태그명}
> docker run -it --name {컨테이너명2} -v {볼륨명1}:{도커컨테이너경로} {이미지명}:{태그명}
  • 볼륨 생성
  • 생성된 볼륨이 공유된 컨테이너 실행
  • 컨테이너1에서 만든 파일이 컨테이너2에 공유됨
  • 컨테이너1을 stop해도 컨테이너2는 실행됨

 

> docker run -it --name vol_from_cont --volumes-from volume_overide
  • ??

 

> docker volume ls
  • 볼륨 리스트 조회

> docker images

  • 내 컴퓨터의 도커 이미지들 확인
  • run 명령어 쓰기 전에 확인

 

> docker ps
> docker ps -a -q

  • 현재 실행중인 컨테이너들 확인
  • -a : 과거에 만들었던 모든 컨테이너들 확인. 컨테이너 삭제하면 안뜸
  • -q : 컨테이너 ID 출력

 

> docker exec -it {컨테이너명} {bash 등 리눅스 명령어}
  • 해당 컨테이너 내에서 bash shell을 실행한다
  • 해당 컨테이너 내부를 통해 가상의 리눅스 환경으로 들어간 것
  • 컨테이너마다 각각의 파일시스템과 네트워크가 있음 (/etc, /bin, /root 등)

docker: Error response from daemon: Conflict. The container name "/{컨테이너명}" is already in use by container "{컨테이너ID}". You have to remove (or rename) that container to be able to reuse that name.
> docker rm {컨테이너명}
> docker rm -f {컨테이너명}
> docker rm $(docker ps -a -q)		#PS에서만 실행됨
  • 컨테이너 삭제
  • -f : 강제 삭제

 

> docker container prune
  • 도커 컨테이너 모두 지우기
  • 복구 안됨

 

> docker images rmi $(docker images -q)
  • 이미지 삭제
  • 이미지를 실행하는 컨테이너부터 삭제해야 함

 

> docker image prune
  • 댕글링 이미지 삭제
  • 댕글링 이미지 : 컨테이너가 사용중인 이미지를 강제로 삭제했을 때 이름이 none인 이미지

 

> docker volume prune
  • 사용되지 않은 볼륨을 한꺼번에 삭제

> docker inspect --type volume {볼륨명}
> docker inspect {이미지명}:{태그명}
  • 볼륨에 대해 자세히 보고싶을 때. 볼륨이 실제로 어디에 저장되는지 알 수 있습니다. 
  • 이미지의 Layer를 알고싶을 때

 

 

> docker container inspect volume_auto
  • 전체 볼륨에 대한 정보

 

> docker logs -f {컨테이너명}
  • 컨테이너 로그 보기