Docker CLI 명령어에 대한 설명이다.
Child commands
Command | Description |
docker attach | Attach local standard input, output, and error streams to a running container |
docker build | Build an image from a Dockerfile |
docker builder | Manage builds |
docker checkpoint | Manage checkpoints |
docker commit | Create a new image from a container’s changes |
docker config | Manage Docker configs |
docker container | Manage containers |
docker context | Manage contexts |
docker cp | Copy files/folders between a container and the local filesystem |
docker create | Create a new container |
docker diff | Inspect changes to files or directories on a container’s filesystem |
docker events | Get real time events from the server |
docker exec | Run a command in a running container |
docker export | Export a container’s filesystem as a tar archive |
docker history | Show the history of an image |
docker image | Manage images |
docker images | List images |
docker import | Import the contents from a tarball to create a filesystem image |
docker info | Display system-wide information |
docker inspect | Return low-level information on Docker objects |
docker kill | Kill one or more running containers |
docker load | Load an image from a tar archive or STDIN |
docker login | Log in to a Docker registry |
docker logout | Log out from a Docker registry |
docker logs | Fetch the logs of a container |
docker manifest | Manage Docker image manifests and manifest lists |
docker network | Manage networks |
docker node | Manage Swarm nodes |
docker pause | Pause all processes within one or more containers |
docker plugin | Manage plugins |
docker port | List port mappings or a specific mapping for the container |
docker ps | List containers |
docker pull | Pull an image or a repository from a registry |
docker push | Push an image or a repository to a registry |
docker rename | Rename a container |
docker restart | Restart one or more containers |
docker rm | Remove one or more containers |
docker rmi | Remove one or more images |
docker run | Run a command in a new container |
docker save | Save one or more images to a tar archive (streamed to STDOUT by default) |
docker search | Search the Docker Hub for images |
docker secret | Manage Docker secrets |
docker service | Manage services |
docker stack | Manage Docker stacks |
docker start | Start one or more stopped containers |
docker stats | Display a live stream of container(s) resource usage statistics |
docker stop | Stop one or more running containers |
docker swarm | Manage Swarm |
docker system | Manage Docker |
docker tag | Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE |
docker top | Display the running processes of a container |
docker trust | Manage trust on Docker images |
docker unpause | Unpause all processes within one or more containers |
docker update | Update configuration of one or more containers |
docker version | Show the Docker version information |
docker volume | Manage volumes |
docker wait | Block until one or more containers stop, then print their exit codes |
docker login
Docker registry(dockerhub)에 login하는 명령어로 docker registry에 등록된 이미지를 pull하거나 push를 위해 login한다. docker login은 패스워드를 직접 입력하는 방식과 STDIN 을 사용해서 로그인하는 방식이 있는데 보안을 위해 STDIN 방식으로 로긴하는 것을 권장한다.
1) STDIN을 사용하면 shll history나 로그파일에 남는 것을 방지
아래 예제는 pass.txt 파일에서 패스워드를 읽어서 login하는 방식이다.
$ cat pass.txt | docker login -u <username> --password-stdin
2) 패스워드 직업 입력 login
$ docker login -u <username> -p <password>
docker serarch
Docker registry(dockerhub)에 등록된 이미지를 검색하는 명령어이다.
아래는 oracle19 라는 이름이 포함된 이미지를 검색하는 명령어이다.
$ docker search oracle19
docker pull
docker pull 명령어로 oracle datbase 19c 이미지를 다운로드한다.
$ docker pull banglamon/oracle193db:19.3.0-ee
docker images
다운로드한 이미지 목록을 조회한다.
docker run
다운로드한 도커 이미지파일을 이용해서 컨테이너를 실행한다.
$ docker run -d --name oracle19db \
-p 1521:1521 \
-e ORACLE_SID=MONGO \
-e ORACLE_PDB=MONGOPDB \
-e ORACLE_PWD=Oracle123 \
-v /u01/app/oracle/oradata:/opt/oracle/oradata \
banglamon/oracle193db:19.3.0-ee
-d : deatach mode를 나타내며, -d=true 는 detached mode(background mode), -d=false는 foreground mode 로 수행
-d 옵션만 쓸 경우는 -d=true와 동일
--name : 컨테이너 이름을 지정
-p, --publish : host port를 컨테이너 port로 게시, 앞쪽 port가 host port이고 뒤쪽 port가 컨테이너 port이다.
( 예, -p 1621:1521 로 설정하면 호스트에 1621 TCP port로 유입되는 모든 traffic은 컨테이너의 1521 port로 전달)
-e : 컨테이너의 환경변수를 설정. -e 옵션을 사용하면 Dockerfile의 ENV 설정도 덮어쓰게 된다.
(예, -e ORACLE_SID=MONGO 는 오라클 컨테이너 환경변수 ORACLE_SID를 MONGO로 설정)
-v : 호스트와 컨테이너 간의 볼륨(volumn) 설정을 위해서 사용.
호스트(host) 컴퓨터의 파일 시스템의 특정 경로를 컨테이너의 파일 시스템의 특정 경로로 마운트(mount)를 해준다.
(Window : -v d:\temp )
(Linux : )
위 예제는 oracle193db 이미지로 detached mode로 컨테이너를 실행하고
host에 1521 port로 유입되는 traffic을 컨테이너의 1521 port로 전달한다는 명령어이다. (1521은 오라클 리스너 port )
docker run 명령어 실행
컨테이너 조회 - docker ps
docker ps는 현재 실행중인 도커 컨테이너를 조회한다.
docker ps -a는 실행중인 컨테이너와 중지된 컨테이너 모두를 조회한다. 컨테이너가 생성된 것을 확인 할 수 있다.
컨테이너 로그 조회 - docker logs
컨테이너 실행 명령어 수행 후 바로 컨테이너를 사용할 수 있는 것은 아니다. 컨테이너에 따라 컨테이너를 생성하는데 필요한 설정을 하고 컨테이너를 생성하는데 시간이 소요된다. 오라클 데이터베이스는 오라클 인스턴스와 데이터베이스에 필요한 파일들을 생성하는데 일정 시간이 소요된다. 컨테이너 생성 과정을 모니터링 하기 위해
docker logs <container name or cotainer id> 명령어를 수행한다. 아래 화면은 DB 설치가 진행 중인 것을 보여주고 있다.
log의 마지막 줄에 "XDB initialized" 가 보이면 정상 설치된 것이다.
컨테이너 접속 - docker exec
컨테이너 생성이 "XDB initialized" 메시지와 함께 정상적으로 완료되면,
docker exec -i -t <ontainer name or cotainer id> /bin/bash 명령어로 컨테이너에 접속할 수 있다.
$ docker exec -it oracle19db bash
- -i, --interactive=false : 표준 입력(stdin)을 활성화하며 컨테이너와 연결(attach)되어 있지 않더라도 표준 입력을 유지한다.
- -t, --tty=false : TTY 모드(pseudo-TTY)를 사용한다. Bash를 사용하려면 이 옵션을 설정해야 한다. 이 옵션을 설정하지 않으면 명령을 입력할 수는 있지만 셸이 표시되지 않는다.
- ontainer name 을 oracle19db 로 입력한다.
- bash : 컨테이너 안의 /bin/bash를 실행하여 Bash 셸에 연결한다
컨테이너 중지 - docker stop
실행 중인 Docker 컨테이너를 중지하려면
docker stop <container name or cotainer id> 명령어를 사용한다. 중지하고 싶은 컨테이너 ID나 NAME을 입력한다.
컨테이너 시작 - docker start
중지된 Docker 컨테이너를 시작하려면
docker start <container name or cotainer id> 명령어를 사용한다. 시작하고 싶은 컨테이너 ID나 NAME을 입력한다.
컨테이너 재시작 - docker restart
실행 중인 Docker 컨테이너를 재시작하려면
docker restart <container name or cotainer id> 명령어를 사용한다. 재시작하고 싶은 컨테이너 ID나 NAME을 입력한다.애
컨테이너 접속 - docker attach
실행 중인 Docker 컨테이너에 접속하려면
docker attach <container name or cotainer id> 명령어를 사용한다. 접속하고 싶은 컨테이너 ID나 NAME을 입력한다.
컨테이너 삭제 - docker rm
중지된 Docker 컨테이너를 삭제하려면
docker rm <container name or cotainer id> 명령어를 사용한다. 삭제하고자 하는 컨테이너 ID나 NAME을 입력한다.
실행 중인 Docker 컨테이너를 삭제하려면
docker rm -f <container name or cotainer id> 명령어를 사용한다. 삭제하고자 하는 컨테이너 ID나 NAME을 입력한다.
이미지 삭제 - docker rmi
Docker 이미지를 삭제하려면
docker rmi <image name or image id> 명령어를 사용한다. 삭제하고자 하는 이미지 ID나 NAME을 입력한다.
단, Docker 이미지 삭제 시 이미지를 사용하는 컨테이너가 없어야 한다. 이미지를 사용하는 컨테이너가 먼저 모두 삭제되어야 한다.
컨테이너가 존재하는 상태에서 컨테이너와 이미지를 삭제하려먼
docker rmi -f <image name or image id> 명령어를 사용한다. 삭제하고자 하는 이미지 ID나 NAME을 입력한다.
'Docker' 카테고리의 다른 글
헷갈리는 Docker - 수정 (0) | 2021.12.26 |
---|---|
Docker Commands for Managing Container Lifecycle (0) | 2021.12.25 |
Docker run, start, create 차이 (0) | 2021.12.25 |
window10에 도커 설치하기 (1) | 2021.12.25 |
도커란 (0) | 2021.12.25 |