Docker 공통 명령 알아야 할 사항

11938 단어 dockerprogramming

Docker 공통 명령 알아야 할 사항



Docker CLI 치트시트



도커 빌드

docker build [options] .
  -t "app/container_name"    # name
  --build-arg APP_HOME=$APP_HOME    # Set build-time variables

Create an image from a Dockerfile.

도커 실행

docker run [options] IMAGE
  # see `docker create` for options

예시

$ docker run -it debian:buster /bin/bash

Run a command in an image.

컨테이너 관리

1 . 도커 만들기

docker create [options] IMAGE
  -a, --attach               # attach stdout/err
  -i, --interactive          # attach stdin (interactive)
  -t, --tty                  # pseudo-tty
      --name NAME            # name your image
  -p, --publish 5000:5000    # port map (host:container)
      --expose 5432          # expose a port to linked containers
  -P, --publish-all          # publish all ports
      --link container:alias # linking
  -v, --volume `pwd`:/app    # mount (absolute paths needed)
  -e, --env NAME=hello       # env vars

예시

$ docker create --name app_redis_1 \
  --expose 6379 \
  redis:3.0.2

Create a container from an image.

2. 도커 실행

docker exec [options] CONTAINER COMMAND
  -d, --detach        # run in background
  -i, --interactive   # stdin
  -t, --tty           # interactive

예시

$ docker exec app_web_1 tail logs/development.log
$ docker exec -t -i app_web_1 rails c

Run commands in a container.

3. 도커 시작

docker start [options] CONTAINER
  -a, --attach        # attach stdout/err
  -i, --interactive   # attach stdin

docker stop [options] CONTAINER

Start/stop a container.

4 . 도커 ps

$ docker ps
$ docker ps -a
$ docker kill $ID

Manage containers using ps/kill.

5. 도커 로그

$ docker logs $ID
$ docker logs $ID 2>&1 | less
$ docker logs -f $ID # Follow log output

See what’s being logged in an container.

이미지 관리

1. 도커 이미지

$ docker images
  REPOSITORY   TAG        ID
  ubuntu       12.10      b750fe78269d
  me/myapp     latest     7b2431a8d968
$ docker images -a   # also show intermediate

Manages images.

2. 도커 rmi

docker rmi b750fe78269d

Deletes images.

관리 정리

1. 모두 청소

docker system prune

Cleans up dangling images, containers, volumes, and networks (ie, not associated with a container)

docker system prune -a

Additionally remove any stopped containers and all unused images (not just dangling images)

2. 컨테이너

# Stop all running containers
docker stop $(docker ps -a -q)

# Delete stopped containers
docker container prune

3.Images

docker image prune [-a]

Delete all the images

4. 볼륨

docker volume prune

Delete all the volumes



.

.

docker-compose 치트시트



일반적인 명령

# Starts existing containers for a service.
docker-compose start

# Stops running containers without removing them.
docker-compose stop

# Pauses running containers of a service.
docker-compose pause

# Unpauses paused containers of a service.
docker-compose unpause

# Lists containers.
docker-compose ps

# Builds, (re)creates, starts, and attaches to containers for a service.
docker-compose up

# Stops containers and removes containers, networks, volumes, and images created by up.
docker-compose down


팁과 요령




#!/bin/sh

docker-compose down &&
docker-compose rm &&
docker-compose build &&
docker-compose up -d
sleep 1
docker rmi $(docker images -f "dangling=true" -q)
echo y | docker volume prune
printf "\n... HAPPY CODING ...\n\e[0m"


사용하지 않는 용기 제거



Docker containers have a status field indicating where they are at in their lifecycle. According to the docs, status can be one of created, restarting, running, removing, paused, exited, or dead.

First, we need to get the IDs of the containers with status exited or dead as follows:

docker ps --filter status=exited --filter status=dead -q

Then, we can reuse the above command to delete these containers with the following command:

docker rm $(docker ps --filter=status=exited --filter=status=dead -q)

A one-liner alternative to remove all stopped containers is:

docker container prune


모든 컨테이너 제거



First, we need to stop all running containers. We can get the IDs of the running containers as follows:

docker ps -q

Then, we can stop all the containers with:

docker stop $(docker ps -q)

You can replace docker stop with docker kill in the above command to forcibly stop the containers.

Finally, we can delete all containers:

docker rm $(docker ps -a -q)


매달린 이미지 제거



Dangling images, as mentioned by the documentation, are final images (i.e, not intermediary build layers) that no longer have an associated tag with them.

We can get the image ID for such images as follows:

docker images --filter dangling=true -q

Then, we can delete those images with the following command:

docker rmi $(docker images --filter dangling=true -q)

A one-liner alternative to remove all dangling images is:

docker image prune


모든 이미지 제거



Docker doesn’t allow to remove images that have an associated container, so to really delete all images, it is necessary first to remove all containers.

Similarly to the previous section, we need the IDs of all the images, which we can get using:

docker images -a -q

Then, we can combine it with docker rmi:

docker rmi $(docker images -a -q)

A one-liner alternative to remove all images is:

docker image prune -a


볼륨 제거



Volumes also take space in the host machine. They are never deleted automatically since they may contain data that can be reused by different containers or directly from the host.

Then, to remove all docker volumes use:

docker volume prune


네트워크 제거



Although docker networks don’t consume too much disk space, they create iptables rules, network devices and routing table entries. To prune these objects, you can run:

docker network prune


모든 것을 제거

Instead of manually pruning different types of resources, you may be interested on wiping out everything from your local cache. For that we can leverage the docker system prune command as follows:

To remove containers, images and networks use:

docker system prune

To remove containers, images, networks and volumes, use

docker system prune --volumes

좋은 웹페이지 즐겨찾기