야 Docker 이리나와!! [2] - 오류 및 명령어

김진성·2021년 10월 9일
1

Docker

목록 보기
2/6

저번에는 Docker의 기본 개념 및 용어에 대해서 공부를 하고 정리를 했다. 이번에는 Docker에서 자주 사용하는 기본 명령어와 흔히 나타나는 오류에 대해서 공부를 하도록 하겠다.

1. Docker Trouble Shooting

1.1 Docker push: manifest invalid

  • 같은 태그의 Docker 버전을 다시 푸시했을 때 허가되지 않아 실패하는 경우

1.2 Docker pull: missing signature key

  • 이슈를 해결하기 위해 Docker push 명령어를 다시 한 경우

1.3 Docker cp: Error response from daemon: not a directory

  • symbol link 내에 컨테이너 폴더가 있는 경우

1.4 Find process id by container name

docker top $container_id 
혹은
docer top $container_name

1.5 List resource usage by containers

docker stats

1.6 Get dockered storage driver

docker info 에서 Storage Drive 확인하기

1.7 docker-containerd-shim

  • Docker engine, containerd, containerd-shim, runC로 구성된 Docker의 4가지 요소

2. 운영체제 별 Docker 설치 방법

2.1 Ubuntu

apt-get install docker.io

2.2 CentOs

2.3 Debian 10

3. Docker 시작 시 명령어

3.1 Ubuntu test env 시작

docker run ubuntu:16.04 /bin/echo hello world

3.2 Ubuntu 18.04 test env 버전이 다른 것일 때

docker run ubuntu:18.04 /bin/echo hello world

3.3 컨테이너 시작과 동시에 정지

docker run --rm ubuntu:18.04 /bin/echo hello world

3.4 debian9 test env의 경우

docker run debian:9 /bin/echo hello world

3.5 centos test env의 경우

docker run centos:centos6 /bin/echo hello world

3.6 Jenkins 서버

docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts

3.7 nginx 서버

docker run -t -d -p 8080:80 --name nginx-test nginx

3.8 nexus 서버

docker run -d -p 8082:8081 --name nexus -v /data/nexus-data:/nexus-data sonatype/docker-nexus3

3.9 sshd 서버

docker run -t -d --privileged -p 5022:22 denny/sshd:latest /usr/sbin/sshd -D

3.10 ftp 서버

docker run -t -d -p 21:21 -p 20:20 -e USERNAME=${username} -e PASSWORD=${password} denny/proftproftpd:v1

4. Container 기본 명령어

4.1 Docker Container 실행하기

docker run -p 4000:80 imgname

4.2 Docker Container를 Detached 모드로 실행하기

docker run -d -p 4000:80 imgname

4.3 entrypoint 변경하면서 컨테이너 실행하기

docker run -t -d --entrypoint=/bin/sh "$docker_image"

4.4 실행 중인 컨테이너 들어가기

docker exec -it <container-id> sh

4.5 컨테이너 파일 시스템에 로컬 파일 업로드하기

docker cp /tmp/foo.txt mycontainer:/foo.txt

4.6 로컬 파일시스템에서 컨테이너 파일 다운로드 하기

docker cp mycontainer:/foo.txt /tmp/foo.txt

4.7 컨테이너 멈추기

docker stop <hash>

4.8 컨테이너 제거하기

docker rm <hash>

4.9 모든 컨테이너 제거하기

docker rm $(docker ps -a -q)

4.10 컨테이너 강제로 셧다운 하기

docker kill <hash>

4.11 도커 Hub에 로그인하기

docker login

4.11 이미지 Tag하기

docker tag <image> username/repo:tag

4.12 저장소에 태그된 이미지 푸시하기

docker push username/repo:tag

4.13 태그된 이미지 실행하기

docker run username/repo:tag

4.14 도커 이미지 생성하기

docker build -t username/image:test

5. Docker Cleanup(정리하기)

5.1 모든 컨테이너 삭제하기

  • delete-all-containers.sh

5.2 사용하지 않는 도커 이미지 제거하기

  • delete-unused-images.sh

5.3 이름이 없거나 사용하지 않는 이미지 제거하기

docker image prune -f <- -f는 filter의 의미로 조건을 넣어주면 됨

5.4 컨테이너와 연결되지 않거나 사용하지 않는 볼륨 제거하기

docker volume prune -f

5.5 특정 이미지 제거하기

docker rmi <imagename>

5.6 모든 도커 이미지들 제거하기

docker rmi $(docker images -q)

5.7 Orphaned docker volumes 제거하기

docker dvolume rm $(docker volume ls -qf dnagling=true)

5.8 죽은(dead) 컨테이너 제거하기

docker rm $(docker ps --filter status=dead -qa)

5.9 종료된(exited) 컨테이너 제거하기

docker rmn $(docker ps --filter status=exited -qa)
profile
https://medium.com/@jinsung1048 미디엄으로 이전하였습니다.

0개의 댓글