2023. 4. 10. 16:28ㆍdocker
기본적인 도커 클라이언트 명령어
도커 이미지 복습
docker run <image이름>
도커 클라이언트 언급 도커 컨테이너 생성 및 실행 이 컨테이너를 위한 이미지
ex) docker run mysql
작동 순서 복습
- 도커 클라이언트에 명령어 입력 후 도커 서버로 보냅니다.
- 도커 서버에서 컨테이너를 위한 이미지가 이미 캐시되어 있는 지 확인합니다.
- 없으면 도커 허브에서 다운 받아오고, 있으면 이미 가지고 있는 이미지로 컨테이너 생성합니다.
명령어
docker run <도커이미지> ls
ls명령어로 현재 디렉토리의 파일리스트 보여줌
- hello-world 이미지로는 ls명령어 사용 불능
Alpine 이미지 파일 스냅샷 안에 이미 ls 사용하게 하는 파일이 있는데 'docker run hello-world'는 excutable not found라며 실행할 수 있는 파일을 못찾는다고 뜸.
도커 컨테이너 명령어
docker ps (process status)
현재 진행중인 컨테이너 나열
- 2개 터미널 준비
- 첫번째 터미널에서 container하나 실행
- 두번째 터미널에서 docker ps로 확인
CONTAINER ID : 컨테이너 고유 아이디 (해시값) 실제로 더 길지만 일부분만 표출됨!
IMAGE : 컨테이너 생성시 사용한 도커 이미지
COMMAND: 컨테이너 시작시 실행될 명령어. 대부분 이미지에 내자외 있어서 별도 설정 필요 x
CREATED : 컨테이너 생성시간 / - **STATUS**: 컨테이너 상태
PORTS : 컨테이너가 개방한 포트와 호스트에 연결한 포트. 특별 설정 없을 경우 출력x
NAMES : 컨테이너 고유 이름. 컨테이너 생성시 --name 옵션으로 설정하지 않으면 도커엔진에서 임의로 형용사 + 명사 조합으로 설정합니다.
id와 마찬가지로 중복 안되고 **"docker rename"** 명령어로 이름 변경 가능합니다.
$ docker rename 원래이름 바꿀이름
특정 항목만 나열하고 싶은 경우
docker ps --format 'table{{.Names}} \t table{{.Image}}'
꺼져있는 모든 컨테이너 나열
$ docker ps -a
도커 컨테이너 생명주기 명령어
[생성 create] - [시작 start] -> [실행 running] -> [중지 stop] -> [삭제 deleted]
$ docker create <이미지 이름>
$ docer start <시작할 컨테이너 id / name>
|---------- $ docker run <이미지 이름> ---------|
$ docker stop <중지할 컨테이너 id/ name >
$ docker rm <삭제할 컨테이너 id/ name>
도커 생성 및 실행
docker run = docker create + docker start
docker run 은 docker create <이미지 이름> + docker start <컨테이너 id / name> 을 한번에 실행하는 것입니다.
$ docker run <image 이름>
$ docker start hello-world
>> ee0f39b8b3d5cd3029ef97651325e10cc607e10ffff03dc8e9b59cbfe5a5ddf
# 생성된 container id로 실행
$ docker start -a ee0f39b8b3d5cd3029ef97651325e10cc607e10ffff03dc8e9b59cbfe5a5ddf
# Hello from Docker!
# This message shows that your installation appears to be working correctly.
# To generate this message, Docker took the following steps:
# 1. The Docker client contacted the Docker daemon.
# 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
# (arm64v8)
# 3. The Docker daemon created a new container from that image which runs the
# executable that produces the output you are currently reading.
# 4. The Docker daemon streamed that output to the Docker client, which sent it
# to your terminal.
#
# To try something more ambitious, you can run an Ubuntu container with:
# $ docker run -it ubuntu bash
#
# Share images, automate workflows, and more with a free Docker ID:
# https://hub.docker.com/
# -a (attach)태그 빼면
$ docker start ee0f39b8b3d5c # 해시값 앞 일부만 넣어도 가능!
>> ee0f39b8b3d5cd3029ef97651325e10cc607e10ffff03dc8e9b59cbfe5a5ddf
도커 중지 및 삭제
도커 생명주기 중 중지하는 부분
docker stop / docker kill로 죽일 수 있습니다.
# 도커 한 터미널에서 우선 실행시키기!
$ docker run alpine ping localhost
# 현재 실행 중인 도커 컨테이너 프로세스 상태
$ docker ps
/*
CONTAINER ID
0e2dd35b98f
e0s0eqlaalf
*/
# ps로 나온 CONTAINER ID들 중 stop할 id넣어서 stop
$ docker stop
Stop 과 Kill 차이는?
공통점은 둘 다 실행중인 컨테이너 중지
- Stop은 자비롭게 그동안 하던 작업들을 완료하고 (메세지를 보내고 있었으면 완료하고) 컨테이너 중지
- Kill은 어떤 기다리는 거 없이 바로 컨테이너 중지
docker rm docker ps -a -q
모든 컨테이너 싹 다 삭제!
docker rmi <이미지 id>
특정 id의 이미지를 삭제!
docker system prune
한 번에 컨테이너, 이미지, 네트워크 모두 삭제
- 도커를 쓰지 않고 모두 정리하려고 할 때 사용하면 좋음
- 하지만 이것도 실행중인 컨테이너에 영향을 주진 않음!
이미 실행중인 컨테이너에 명령어 전달할 때가 있습니다.
docker exec <컨테이너 id>
1. 터미널 2개 실행합니다.
2. 첫 번째 터미널에서 컨테이너 하나 실행 (docker run alpine ping localhost)
3. 두 번째 터미널에서 컨테이너가 잘 작동하나 확인 후 명령어 전달합니다
docker exec <컨테이너 id> ls
docker run <컨테이너 id> ls와 같은데 run은 생성도 해주는 것
'docker' 카테고리의 다른 글
[Docker] Docker 실행 중인 컨테이너에서 터미널로 접근하기 (0) | 2023.04.12 |
---|---|
[Docker] Docker 레디스(redis)로 띄우기 (0) | 2023.04.12 |
[Docker] Docker 정리 (3) - 이미지로 컨테이너 만들기 (0) | 2023.04.08 |
[Docker] Docker 정리 (2) - Docker와 기존 가상화 기술 차이 (0) | 2023.04.08 |
docker로 Mysql Import , Export (0) | 2022.11.23 |