티스토리 뷰
Docker 기반으로 실행되는 기능을 사용할때 꼭 알아야할 간단한 명령어를 알아야 활용하기 좋다.
가장 기초적인 명령어를 알아보자
1. 이미지 목록확인
로컬에 받아진 도커 이미지를 확인하는 명령어이다. 처음 설치했다면 아래와 같이 아무것도 조회가 안된다.
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
2. 이미지 가져오기 (pull)
docker-registry 에 올려진 도커 컨테이너 이미지를 로컬로 가져오는 명령어이다.
기본적으로는 docker hub 의 이미지를 사용하기 때문에, 여기서 가져올땐 "이미지:버전" 만 기입하지만, 별도의 private docker reigistry 를 사용할때는 도메인이나 아이피를 지정해야하는 차이가 다르다.
$ docker pull centos:7
7: Pulling from library/centos
2d473b07cdd5: Already exists
Digest: sha256:c73f515d06b0fa07bb18d8202035e739a494ce760aa73129f60f4bf2bd22b407
Status: Downloaded newer image for centos:7
docker.io/library/centos:7
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 7 eeb6ee3f44bd 11 months ago 204MB
사실 run 명령을 사용할때, 이미지가 로컬에 있으면 자동으로 다운로드를 받기 때문에 상대적으로 덜 쓰는 명령이긴하다. 하지만 명시적으로 가져오는 명령어이므로 알아둬서 나쁠거 없다.
3. 이미지 삭제하기 (rmi)
안쓰는 이미지는 다 용량만 잡아 먹을뿐이고, 개인적으로 빌드하고 업로드된 과거버전의 이미지가 필요없어질때 필요한 명령어이다. 삭제할때 images id 를 입력하기 때문에 images 목록을 확인하고 삭제하는게 일반적이다.
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 7 eeb6ee3f44bd 11 months ago 204MB
$ docker rmi -f eeb6ee3f44bd
Untagged: centos:7
Untagged: centos@sha256:c73f515d06b0fa07bb18d8202035e739a494ce760aa73129f60f4bf2bd22b407
Deleted: sha256:eeb6ee3f44bd0b5103bb561b4c16bcb82328cfe5809ab675bb17ab3a16c517c9
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
4. 이미지 실행하기 (run)
도커 컨테이너 이미지를 실행하는 명령어로 가장 많이 사용하게되는 명령어이다.
run 을 사용할때 다양한 옵션이 존재하는데, 자주 쓰는 옵션은 다음과 같다.
- -d : 데몬형태로 실행
- -v : 볼륨 마운트, 로컬의 폴더를 컨테이너에 맵핑 (예: -v 로컬경로:도커안에서의경로)
- -p : 포트맵핑, 보통 웹페이지를 띄울때 사용된다 (예: -p 5000:5000)
4.1 이미지 실행 (기본)
docker run 을 통해 실행 가능하며, 맨 마지막에 명령어를 입력하면 해당 명령어를 CMD 값으로 사용해서 실행한다.
아래 예시는 centos 이미지에서 ls 명령을 실행하도록 하는 예제이다.
$ docker run centos:latest ls
bin
dev
etc
...
tmp
usr
var
4.2 이미지 실행시 bash 를 통해 접근하기 (run -t)
명령어를 하나만 입력하는것이 아니라, docker 컨테이너 환경에 다양한 명령어를 입력해보기 위해 쉘형태로 접근하고 싶을때는 /bin/bash 를 넣고, -it 옵션을 넣으면 우리가 해당 컨테이너안에 접속한것 같이 다양한 명령어를 직접 입력하는게 가능하다.
[user@LOCAL ~]$ docker run -it centos:latest /bin/bash
[root@bc4a56fd67d1 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@bc4a56fd67d1 /]# exit
exit
[user@LOCAL ~]$
위에서 root@bc4a56fd67d1 같은 프롬포트는 컨테이너 안의 환경에서 실행되는것이고, user@LOCAL 은 컨테이너안이 아닌 공간인 차이가 있다.
5. 프로세스 확인 / 로그확인
실행한 docker 컨테이너의 프로세스가 잘 돌고 있는지 확인하기위해서는 프로세스 상태와 sysout 내용을 확인해봐야 알수 있다. 이를 위해 docker 에서는 프로세스를 확인하거나 화면결과를 확인하는걸 눈으로 볼수 있다.
5.1 실행중인 프로세스 확인 (ps)
데몬형태로 실행중이거나 종료되지 않은 프로세스는 다음과 같이 docker ps 명령으로 실행상태 확인이 가능하다.
여기서 확인된 container id 를 참고하여 로그확인도 가능하다.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ce99c12aaf5e registry "/entrypoint.sh /etc…" 3 days ago Up 3 days 0.0.0.0:5000->5000/tcp local-registry
5.2 로그 확인하기 (logs)
로그라고 했지만, docker 자체의 로그가 아니라 실행중인 컨테이너의 화면출력내용을 확인하는 명령어이다.
docker ps 로 확인한 container id 를 이용해서 해당 내용을 확인할 수 있다.
$ docker logs ce99c12aaf5e
time="2022-08-18T08:27:04.534336494Z" level=warning msg="No HTTP secret provided - generated random secret. This may cause problems with uploads if multiple registries are behind a load-balancer. To provide a shared secret, fill in http.secret in the configuration file or set the REGISTRY_HTTP_SECRET environment variable." go.version=go1.16.15 instance.id=0e31ce31-7a0d-414d-8da1-f8d151db7cd4 service=registry version="v2.8.1+unknown"
time="2022-08-18T08:27:04.536708508Z" level=info msg="redis not configured" go.version=go1.16.15 instance.id=0e31ce31-7a0d-414d-8da1-f8d151db7cd4 service=registry version="v2.8.1+unknown"
time="2022-08-18T08:27:04.547536071Z" level=info msg="Starting upload purge in 54m0s" go.version=go1.16.15 instance.id=0e31ce31-7a0d-414d-8da1-f8d151db7cd4 service=registry version="v2.8.1+unknown"
time="2022-08-18T08:27:04.559891986Z" level=info msg="using inmemory blob descriptor cache" go.version=go1.16.15 instance.id=0e31ce31-7a0d-414d-8da1-f8d151db7cd4 service=registry version="v2.8.1+unknown"
time="2022-08-18T08:27:04.560175147Z" level=info msg="listening on [::]:5000" go.version=go1.16.15 instance.id=0e31ce31-7a0d-414d-8da1-f8d151db7cd4 service=registry version="v2.8.1+unknown"
...
'docker & k8s > docker' 카테고리의 다른 글
[Docker] 디스크 용량 차지하는 문제 해결법 2가지 (0) | 2023.02.15 |
---|---|
[Docker] 윈도우용 도커 오류 : This error may indicate that the docker daemon is not running (0) | 2022.09.29 |
[Docker] server gave HTTP response to HTTPS client 오류 (0) | 2022.09.27 |
[Dockerfile] 초보자를 위한 build 와 push 하는 방법 (0) | 2022.09.26 |
초간단 Private Docker Registry 설치하기 (0) | 2022.09.23 |