Docker

Docker 이미지, 컨테이너 명령어 모음

구티맨 2021. 4. 6. 08:10

이미지

이미지 빌드

$ docker build -t <user name>/app-name .

Usage:  docker build [OPTIONS] PATH | URL | -

Options:
	-t		Name and optionally a tag in the 'name:tag' format
    
PATH : dockerfile이 위치한 디렉토리

이미지 목록 보기

$ docker images

REPOSITORY                         TAG                     IMAGE ID            CREATED             SIZE
node                               14.16.0                 abea835c0b3b        11 days ago         943MB
java                               latest                  d23bdf5b1b1b        4 years ago         643MB

이미지 이름 변경

USAGE : docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

$ docker tag java java2
$ docker images

REPOSITORY                         TAG                     IMAGE ID            CREATED             SIZE
java2                              latest                  d23bdf5b1b1b        4 years ago         643MB
java                               latest                  d23bdf5b1b1b        4 years ago         643MB

이미지 삭제

Usage:	docker rmi [OPTIONS] IMAGE [IMAGE...]

Remove one or more images

Options:
  -f, --force      Force removal of the image
      --no-prune   Do not delete untagged parents
      
$ docker images
REPOSITORY                         TAG                     IMAGE ID            CREATED             SIZE
node                               14.16.0                 abea835c0b3b        11 days ago         943MB
java2                              latest                  d23bdf5b1b1b        4 years ago         643MB
java                               latest                  d23bdf5b1b1b        4 years ago         643MB

$ docker rmi java2
Untagged: java2:latest

$ docker images
REPOSITORY                         TAG                     IMAGE ID            CREATED             SIZE
node                               14.16.0                 abea835c0b3b        11 days ago         943MB
java                               latest                  d23bdf5b1b1b        4 years ago         643MB

모든 이미지 삭제

 docker rmi $(docker images -q)

이미지 업로드 및 다운로드

$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: account
Password:
WARNING! Your password will be stored unencrypted in /home/geoapp/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

$docker push NAME[:TAG]

$docker pull NAME[:TAG]

컨테이너

컨테이너 목록 보기

Usage:	docker ps [OPTIONS]

List containers

Options:
  -a, --all             Show all containers (default shows just running)
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print containers using a Go template
  -n, --last int        Show n last created containers (includes all states) (default -1)
  -l, --latest          Show the latest created container (includes all states)
      --no-trunc        Don't truncate output
  -q, --quiet           Only display numeric IDs
  -s, --size            Display total file sizes
  
$ docker ps

CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS                    PORTS                  NAMES
31e5d36091ff        java                   "java -XshowSettings…"   3 days ago          Exited (0) 3 days ago                            kind_buck

(새로운) 컨테이너 생성/시작

: 새로운 컨테이너 생성하여 실행해주는 명령어 입니다.( docker create + start )

: 컨테이너 생성만 하기 위해서는 docker create 명령어를 사용해야 합니다.

: -p 옵션은 컨테이너의 외부와 내부의 port를 매핑해주는 옵션입니다.

  로컬에서 도커 및 컨테이너를 수행 중인 경우, 로컬의 80번 포트로 통신이 발생하면 해당 트래픽을 컨테이너의 8010 포트로 전달해줍니다.( 8010은 반드시 EXPOSE가 되어 있어야 합니다. ) 

Usage:	docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Run a command in a new container

Options:
	-p		publish port/internal port
   	-d		Run container in background and print container ID
    
$ docker run -d -p 80:8010 image

컨테이너 시작

: run 으로 생성된 컨테이너를 시작할 때 사용하는 명령어 입니다.

Usage:	docker start [OPTIONS] CONTAINER [CONTAINER...]

Start one or more stopped containers

컨테이너 중지

docker stop CONTAINER

모든 컨테어너 삭제

: 모든 컨테이너를 중지하고, 삭제 합니다.

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)

컨테이너 이름 변경

docker rename CONTAINER NEW_NAME

컨테이너에 명령어 수행

bash 수행

: exec 명령어로 새로운 프로세스를 수행하여, 실행중인 컨테이너에 /bin/bash를 수행하여 컨테이너 상태를 조회 가능

$ docker exec -it c041fcdc /bin/bash
root@c041fcdc2844:/usr/src/app# ls
Dockerfile    node_modules	 package.json  server.js  webpack.config.js	 webpack.new.config.js
build.gradle  package-lock.json  public        src	  webpack.dev.config.js  yarn.lock

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