Docker Cli

Vorhandenheit ·2022년 2월 16일

Docker

목록 보기
2/7

Docker Cli

1. 도커 기본 명령어

run

docker run [OPTIONS] IMAGE[:TAGI@DIGEST] [COMMAND] [ARG...]

restart

- no : 재시작하지않음
- om-failure : 종료 스테이터스가 0이 아닐 때 n번 재시작
- always : 항상 재시작
- unless-stopped : 최근 컨테이너가 정지 상태가 아니라면 항상 재시작

ps

컨테이너 목록 확인하기

docker ps [OPTIONS]
  • -a
    맨 처음 실행했다가 종료된 컨테이너가 추가로 보입니다. (컨테이너는 종료되어도 삭제되지않고 남아있습니다.)

stop

컨테이너 중지하기

docker stop [OPTIONS] CONTAINER [CONTAINER...]

rm

종료된 컨테이너를 완전히 제거

docker rm [OPTIONS] CONTAINER [CONTAINER...]
  • 중지된 컨테이너 ID 가져와서 한번에 삭제
docker rm -v $(docker ps -a -q -f status=exited)

images

이미지 목록 확인하기

docker images [OPTIONS] [REPOSITORY[:TAG]]

이미지 주소와 태그, ID, 생성시점, 용량을 확인할 수 있습니다.

pull

이미지 다운로드하기

docker pull [OPTIONS] NAME[:TAGI@DIGEST]

rmi

이미지를 삭제합니다.

docker rmi [OPTIONS] IMAGE [IMAGE...]

단 컨테이너가 실행중인 이미지는 삭제되지 않습니다.

logs

컨테이너 로그보기

docker logs [OPTIONS] CONTAINER

exec

실행중인 컨테이너에 들어가거나 컨테이너의 파일을 실행하고 싶을 때가 있습니다.

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

run은 새로 컨테이너를 만들어서 실행하고 exec는 실행중인 컨테이너에 명령어로 실행합니다.

ls

docker 상에서 작동하는 컨테이너 기동 상태를 확인합니다

docker container ls [OPTIONS]
- --all, -a : 실행 중/정지 중인 것도 포함하여 모든 컨테이너 표시
- --filter, -f : 표시할 컨테이너의 필터링
- --format : 표시 포맷을 지정
- --last, -n : 마지막으로 실행된 n건의 컨테이너만 표시
- --lastest, -l : 마지막으로 실행된 컨테이너만 표시
- --no-trunc : 정보를 생략하지 않고 표시
- --quiet, -q : 컨테이너 ID만 표시
- --size, -s : 파일 크기 표시

3. 도커 이미지 만들기

이미지 생성방법은 3가지가 존재합니다.

  • 기본 이미지로 컨테이너 생성
  • Dockerfile을 만들어 이미지 커스터마이징 하기
  • commit을 이용해서 이미지 생성하기

(1) docker commit

이 방법은 우선 기본 이미지를 실행시킨 후, 컨테이너 안에 원하는 패키지나 소스코드 등 작업을 진행합니다. 그 후에, commit 명령어로 원하는 작업이 추가된 새로운 이미지를 얻습니다.

docker commit [OPTIONS] CONTANINER_[저장소이름]/이미지이름[:TAG]

(2) DockerFile

Dockerfile로 이미지를 커스터마이징하여 사용하는 방식, Dockerfile을 build하면, 커스터마이징된 이미지가 생성됩니다.

  • Dockerfile : 컨테이너에 설치해야하는 패키지, 추가해야 하는 소스코드, 실행해야 하는 명령어 등을 기록해 두는 파일
  • Build : Dockerfile을 읽어 이미지를 생성합니다.

도커파일 만들기

vs code에서 확장도구를 설치하면 쉽게 작성할 수 있습니다.

# 1. 우분투 설치
FROM ubuntu:18.04

# 2. 메타데이터 표시
LABEL "purpose"="practice"

# 3. 업데이트 및 아파치 설치
RUN apt-get update
RUN apt-get install apache2 -y

# 4. 호스트에 있는 파일을 추가
ADD test.html /var/www/html

# 5. 작업공간 이동(=cd)
WORKDIR /var/www/html

# 6. 거기서 test2.html 파일생성
RUN ["/bin/bash", "-c", "echo hello > test2.html"]

# 7. 포트 80번 노출 지정
EXPOSE 80

# 8. 컨테이너 생성시 시작명령어
CMD apachectl -DFOREGROUND
  • FROM : 생성할 이미지의 베이스가 될 이미지를 뜻합니다.
  • LABEL : 이미지에 메타데이터를 추가합니다.
  • RUN : 이미지를 만들기 위해 컨테이너 내부에서 명령어를 실행합니다. -y 꼭넣어줘야합니다.
  • ADD : 파일을 이미지에 추가합니다. 여기서는 Dockerfile이 위치한 폴더에 test.html 파일을 가져와서 이미지의 /var/www/html 디렉터리에 추가합니다.
  • COPY : 파일을 이미지에 추가, 로컬 파일 이미지에 추가
  • WORKDIR : 명령어를 실행할 디렉토리
  • EXPOSE : 이미지에서 노출할 포트를 설정합니다.
  • CMD : 컨테이너가 시작될 때마다 실행할 명령어
  • ENTRYPOINT : 컨테이너가 시작될 때마다 실행할 명령어를 설정
  • ENV : 환경변수 지정
  • VOLUME : 호스트와 컨테이너 내부의 디렉토리를 설정하여 데이터를 공유합니다. 도커 실행시 -v 명령어로 지정해야 볼륨이 생성됩니다.

컨테이너 이미지를 빌드

docker build [OPTIONS] 도커파일경로
  • -t : 플래그는 이미지에 태그를 지정해줍니다. 사람이 읽을 수 있는 최종 이미지의 이름으로 생각하면 되고, 이미지 이름을 지정했기 때문에 컨테이너를 실행할 때 해당 이미지를 참조할 수 있습니다.
  • . : 현재 디렉터리에서 Dockerfile을 찾아야한다고 알려줍니다.
  • --no-cache : 빌드 시, 캐시 기능을 사용하지 않습니다.

애플리케이션 실행

docker run -dp 3000:3000 getting-started
  • -dp : 이 플래그는 새 컨테이너를 분리된 모드에서 실행하고 호스트의 포트 3000과 컨테이너 포트 3000간에 매핑을 생성하고 ㅣ있씁니다. 포트 매핑이 없으면 애플리케이션에 접근할 수 없습니다.

Docker 이미지 Push

출처

https://cultivo-hy.github.io/docker/image/usage/2019/03/14/Docker%EC%A0%95%EB%A6%AC/
https://dev-youngjun.tistory.com/3#
https://ryu-e.tistory.com/10
https://code-masterjung.tistory.com/132

profile
읽고 기록하고 고민하고 사용하고 개발하자!

0개의 댓글