Developer_hong

Docker 기본 명령어 본문

프로그래밍/Docker

Docker 기본 명령어

Developer_hong 2021. 5. 6. 10:33
반응형

[도커 저장소 위치]

$ docker info | grep Root
Docker Root Dir:  /var/lib/docker

[도커 서비스 저장소 위치 변경]
$ service docker status
* docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
-> 실행 파일 위치가 /lib/systemd/system/docker.service 라는 것을 확인

도커 경로 변경은
$ dockerd --help를 통해서 --data-root 를 통해 변경 가능하다는 것을 알수있다
...
--data-root string Root directory of persistent Docker state (default "/var/lib/docker")
...

$ vim  /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --data-root=/data/


[도커 이미지 다운로드 & 실행]

$ docker run ubuntu:18.04

$ docker run ubuntu:latest

run명령어를 사용하면 사용할 이미지가 저장되어 있는지 확인하고 

없다면 다운로드(pull) 컨테이너를 생성(create)하고 시작(start) 합니다.

 

[도커 이미지 검색]

$ docker search ubuntu
-> ubuntu 가 포함된 도커 이미지 검색

[도커 이미지 다운로드]
docker pull open-liberty

-> open-liberty 도커 이미지 다운로드

 

[도커 컨테이너 실행]

$ docker run -d -it --name ubuntu ubuntu_test

-> ubuntu라는 도커 이미지를 ubuntu_test라는 컨테이너 이름으로 실행

 

$ docker run -d -it --name nginx -p 80:80 -p 443:443 nginx_test123

-> nginx 라는 도커 이미지를 nginx_test123라는 컨테이너 이름으로 실행
80 포트로 들어오는 요청 nginx_test123의 80 포트로 연결

443 포트로 들어오는 요청 nginx_test123의 443 포트로 연결

 

[도커 컨테이너 쉘 실행]

$ docker run --rm -it ubuntu:16.04 /bin/bash

$ docker run --rm -it ubuntu:latest /bin/bash

컨테이너 내부에 들어가기 위해 bash 쉘을 실행

키보드 입력을 위해 -it 옵션

프로세스가 종료되면 컨테이너가 자동으로 삭제되도록 --rm 옵션
exit
bash 쉘을 종료하면 컨테이너도 같이 종료

* 기본 접속

docker exec -it server /bin/bash


* 관리자 권한(슈퍼 유저)으로 접속 

docker exec -u root -t -i ubuntu:latest /bin/bash

 

[도커 컨테이너 리스트]

$ docker ps

$ docker ps -all

$ docker ps -aa

도커 컨테이너 리스트
종료된 컨테이너 포함하려면 -all 옵션

 

[도커 컨테이너 실행 방법]

$ docker start {name OR container ID}
ex) docker start test_docker

exit를 통해 나간 docker 이미지 재실행

 

[실행중인 도커 컨테이너 출력]
$ docker attach
실행한 프로세스 Bsah 또는 출력

 

[실행주인 도커 컨테이너 명령문 실행]

$ docker exec {name OR container ID} echo “Hello World”

/bin/bash 통하지 않고 외부에서 컨테이너 안의 명령 실행

 

[도커 컨테이너 정지]

$ docker stop {name OR container ID}
ex) docker stop test_docker

 

[도커 컨테이너 삭제]

$ dokcr rm {name OR container ID}

ex) docker rm test_docker

생선된 컨테이너 삭제

 

[도커 이미지 목록 출력]

$ docker images

도커가 다운로드한 이미지 목록

 

[도커 이미지 삭제]

$ docker rmi {name OR image ID}
ex) docker rmi ubuntu:lateest
이미지 삭제

name으로 삭제하면 이름가진 모든 이미지가 삭제되므로 주의. (ID값으로 진행하는게 좋다)

 

[실행중이지 않은 도커 컨테이너 삭제]

$ docker rm -v $(docker ps -a -q -f status=exited)

중지된 컨테이너를 일일이 삭제 하는 건 귀찮은 일입니다. 

명령어를 입력하면 중지된 컨테이너 ID 가져와서 한번에 삭제합니다.

 

[도커 컨테이너로 이미지 생성]

$ docker commit {name OR image ID} {new name}
ex) docker commit test1 test2
test1 컨테이너를 test2 이미지로 저장

 

[도커 컨테이너 bash 셸 종료]

CTRL + p + q
도커 컨테이너 종료하지 않고 터미널로 나가기

반응형