본문 바로가기
  • Code Smell
DevOps

[Docker] Docker 기본 명령어

by HSooo 2020. 4. 10.

Docker

이 글은 추가사항이 있으면 계속 업데이트 됩니다.
last updated 2020. 04. 10

Docker 명령어 기본 개념

  • docker는 항상 root로 실행 되어야 한다. (유저 권한이라면 sudo docker ..)
  • docker 기본 명령어는 docker "cmd" 형태로 구성된다. (docker run, docker attach)

Docker 배포판 찾기

Docker Hub에서 찾는다.
docker search "keyword"

docker search amazon

이미지 리스트

docker images

이미지 다운로드

docker pull "image"

위 search 명령어로 찾은 배포판:버전을 합쳐 쓴다.
EX) 배포판 : amazonlinux, 버전(태그) : latest => amazonlinux:latest

Docker 이미지로 컨테이너 생성 및 실행

배포판이 없을 경우 자동으로 다운로드하고, 컨테이너를 생성한다.

docker run -it "amazonlinux:latest"

it 파라미터를 부여하고 구동해야 이후 bash 명령어를 사용 할 수 있다.

The -it instructs Docker to allocate a pseudo-TTY connected to the container’s stdin; creating an interactive bash shell in the container.

이름 지정

이름이 없는 경우 알아서 생성한다.
--name "name"

docker run -it --name amazon "amazonlinux:latest"

백그라운드 실행

run 옵션은 기본이 현재 세션에서 실행한다.
그래서 -d 파라미터를 줘야 백그라운드로 실행한다.

docker run -it -d --name amazon "amazonlinux:latest"

Docker 전체 컨테이너 리스트 출력

docker ps -a

구동 중인 컨테이너만 출력

docker ps

특정 프로그램 실행하며 컨테이너 실행 (bash)

가장 마지막 인자값으로 실행 명령어를 붙여준다.
run 명령어기 때문에 이미지를 실행하면 컨테이너가 생겨나는 구조.
컨테이너명을 붙이면 기존 있는 컨테이너를 실행한다.

docker run -it "image or container" /bin/bash

Docker 컨테이너 삭제

docker rm "컨테이너 명 또는 id"

Docker 이미지 삭제

배포판을 삭제하기 전에 컨테이너를 먼저 삭제해야 한다.

docker rmi "배포판이름 또는 id"

컨테이너 실행

이미지를 한번이라도 run으로 실행해서 컨테이너가 있는 경우 사용 가능하다.

docker start "컨테이너 명 또는 id"

컨테이너 정지

docker stop "컨테이너 명 또는 id"

컨테이너에 붙기 (접속)

docker attach "컨테이너 명 또는 id"

컨테이너 내에서 백그라운드로 동작하지 않는 프로그램은 bash shell이 동작하지만 원래 목적은 이미 실행중인 프로세스(=컨테이너)에 붙는 명령어다.
그래서 종료명령어를 날리게 되면 컨테이너가 종료된다.

그래서 bash를 사용할 목적이라면 새 세션으로 붙는 exec 명령어로 붙어야 한다.

docker exec -it "컨테이너 명 또는 id" /bin/bash

컨테이너 빠져나오기

Ctrl + P, Ctrl +Q

Exit 입력 시 컨테이너가 종료된다.

현재 컨테이너 이미지로 만들기 (commit)

docker commit "컨테이너 명" "이미지 이름"

현재 컨테이너의 상태를 SNAPSHOT 같이 이미지로 만든다.


현재 구동중인 jenkins 이미지 commit


이미지로 만들어진 jenkins 이미지

파일 Host -> Container 로 옮기기

docker cp "host파일 경로" "container파일 경로"

컨테이너 ip보기

docker inspect -f "{{ .NetworkSettings.IPAddress }}" "컨테이너 명"

컨테이너가 내려갔다가 올라오는 경우 IP가 바뀔 수 있다.
그래서 젠킨스를 이용해서 배포하는 경우 IP가 달라지면 매번 확인해야 하므로 링크를 걸 수 있다.

서버(amazon) - 젠킨스(jk) 묶기

젠킨스 IP를 묶은 amazon 컨테이너를 구동

docker run -d --name amazon --link jk amazon:shs

링크로 묶으면 IP가 아닌 컨테이너 명으로 대체 가능하다.

docker exec -t amazon ping jk

'DevOps' 카테고리의 다른 글

[Docker] Dockerfile 정리  (0) 2020.06.21
[Jenkins] Jenkins 기본 명령어  (0) 2020.04.10

댓글