-
도커 (2)명령어 attach, exec...docker 2022. 1. 24. 15:38
===
http://www.pyrasis.com/docker.html
: 이재홍 도커
https://docs.docker.com/engine/reference/commandline/cli/
: 도커 공식문서, 엄한 네이버에서 방황하지 말고 공식봐라
============
:
Build : 이미지 만들기
Ship : 이미지 이동
Run : 이미지 실행
============
윈도우 10 Pro이상부턴 도커데스크탑으로 바로 실행
WSL환경에선 더 쉬워
============
최신 버전의 우분투 이미지를 이용해서 컨테이너를 실행하고 echo 명령어로 Hello Docker를 출력
cd \
mkdir docker
cd docker
docker container run ubuntu /bin/echo/ "Hello Docker"
Hello Docker
: ubuntu라는 운영체제가 있고, 그 운영체제 안에서 명령어를 실행한 것
docker : 명령어
container : 옵션
run : 명령어
ubuntu : 이미지이름
/bin/echo/ "Hello Docker" : 컨테이너 실행 후 실행할 명령어 ▽커맨드와 인자겠지?
내가 컨테이너를 실행하는데 사용할 이미지 이름은 ubuntu
이미지는 실행파일
컨테이너는 프로세스
1)Unable to find image 'ubuntu:latest' locally
2)latest: Pulling from library/ubuntu
3)ea362f368469: Pull complete
4)Digest: sha256:b5a61709a9a44284d88fb12e5c48db0409cfad5b69d4ff8224077c57302df9cf
5)Status: Downloaded newer image for ubuntu:latest
1) : 이미지를 제일 먼저 찾는게 로컬 이미지 저장소
2) : 없으니까 원격 이미지 저장소(여기에서는 도커허브)에서 ubuntu공식 이미지를 로컬로 다운로드
3) : 완료
4) : 이미지의 해시값, 이미지가 변경됐는지 안됐는지를 확인
5) : 다운로드 됐다고
이거하고 실행돼서 Hello Docker가 나옴
*echo : 입력한 문자열을 그대로 출력 = 에코가 메아리잖아
난 윈도우를 쓰는데 우분투가 내 pc에서 실행이됐다
============
docker --help : 명령어 체계
docker : 도커명렁어
그 다음 command가 들어감
container : 컨테이너 관련 명령어
image : 이미지 crud
C:\docker> docker container run --name myubuntu2 -itd ubuntu
b5b6b36f1d5fcdebe17064ba0ed677b1d8bceba8d333c7eec7a121e43775cee3 ⇐ 컨테이너 ID
컨테이너를 실행할 때 --name 이거 옵션 안주면 만들어지고, 주면 지정,
컨테이너의 이름은 유일해야한다
컨테이너의 상태를 알려면
docker container ls 또는
docker container ps
C:\docker> docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b5b6b36f1d5f ubuntu "bash" 2 minutes ago Up 2 minutes myubuntu2
실행중인 컨테이너를 조회하는것, 컨테이너 ID는 다른컨테이너랑 구분할 수 있는 정도만 적어도 알아서 됨
docker container ls(=ps) -a
실행중이지 않은것을 포함 모든 컨테이너 조회
STATUS 가
Up이면 실행상태
Exited 면 종료된것
============
attach : 실행되고 있는 컨테이너에 붙을 때쓰는 명령어
attach 에도 식별자 ID나 이름을 주면 되는데 ID는 중복없이 구별할 수 없는 것까지 만 치면돼 한글자든 두글자든 해도돼
attach : 해당하는 컨테이너의 입출력을 내 host와 연결.
attach Attach local standard input, output, and error streams to a running container
C:\docker> docker attach --help
Usage: docker attach [OPTIONS] CONTAINER
컨테이너 식별자 (= 컨테이너 이름 또는 ID)
어떤 컨테이너에 붙을건지 명시
붙어버린다는건 이 뜻임 이 안에 들어와있는것
uname -a 는 리눅스의 커널정보 불러오는 명령어
항상 이 부분을 잘 봐야, 내가 지금 어디있는지 잘 봐야해
root : 현재 사용자
@다음 : 해당하는 호스트 네임 = 도커컨테이너는 컨테이너 ID가 출력
/# : 현재 디렉토리 위치
============
exec
실행중인 컨테이너 안으로 명령어를 전달할 때
이거하면 attach안해도 되네, 근데 약간 좀 느리네
여기 보면
attach : 실행되고 있는 container에 접속할 때 사용합니다. 웹서버와 같이 백그라운드에서 실행되는 container에 attach로 접속하면 커맨드는 입력할 수 없고 로그만 볼 수 있습니다.
exec : container에 새로운 프로세스를 실행시킬 때 사용합니다. container에 bin/bash를 실행시켜서 쉘을 띄우는 데도 사용합니다. exec를 사용해서 실행되는 명령어는 pid 1이 살아있을 때만 실행되고 container가 재시작 될 때는 같이 재시작되지 않습니다. 그리고 만약 container가 pause되면 docker exec 명령어는 에러를 내고 실행이 실패하게 됩니다.
============
build : 이미지를 만든다
build Build an image from a Dockerfile
이미지를 만드는게 여러가지 방법이 있다
Dockerfile로 만드는게 제일
컨테이너 이미지를 어떻게 만들건지 하는 명세서
============
commit
commit Create a new image from a container's changes
도커파일로 이미지를 만들 수도
실행되고 있는 컨테이너에다가 그 상태그대로 이미지로 만들 수 있다
============
cp : Copy
내 pc에있는 파일, 디렉토리를 컨테이너 내부로, 혹은 반대방향으로
Host = 내 pc, 도커가 실행되는 공간
Guest = Host머신에서 실행되는 가상공간
============
images
docker images 치면
로컬이미지저장소에 있는 이미지목록
docker images
= docker image ls
C:\docker> docker image ls ⇐ 로컬 레지스트리에 저장된 이미지 목록을 출력
============
inspect
도커에서 사용하는 여러 객체들의 정보
myubuntu2 라는 애의 세부 구성
디버깅 할 때 이런식으로 볼 수 있다
============
컨테이너는 create -> run -> stop -> restart -> kill
create :
원래 컨테이너는 create 하고 run하는데
create안해도 내부적으로 처리한다
restart :
docker container restart ~~
: 정지된 컨테이너 재실행
▽
start Start one or more stopped containers
restart Restart one or more containers
stop한것에 둘다 먹힘
▽
kill Kill one or more running containers (강제 종료)
Stop one or more running containers (천천히 종료)
얘네둘도 하는일이 똑같아 상태봐도 Exited야
============
login
로커 레지스트리에 접속
도커허브에 계정 만든거 원격 레지스트리에 로그인하는 것
*레지스트리 : 저장소
도커허브에 접속하려면 인증을 거쳐야되니까
docker login
치면
id pwd 넣으라고 나옴
로그인에 성공하면 HOME디렉토리에
HOME 디렉토리 : c 밑에 사용자 밑에 로그인한 사용자 계정
여기 어딘가에 있대 찾다 포기
저장된 정보로 파일을 올리고 등..
============
logout
============
logs
로그볼 때
이렇게 나오네
============
pause
잠깐 멈춤
============
port
포트매핑
============
ps
컨테이너 목록
docker container ls(=ps)
많이 쓰는 명령어인 경우에 단축형
docker가 나오고 뭐와 관련된건지 구분을 먼저 해야함
docker container
이렇게, 매니지먼트 명령어래
docker container ls라고치면
컨테이너 에서 목록인 것
docker ps라고만 치면 docker container ls라는거랑 똑같이 : 축약형 제공
그냥 풀네임 쓰셔도돼요~
============
pull
가져오고
============
push
올리고
============
rename : 잘 안씀, 컨테이너는 쓰고 버리는거지 수정 잘 안함
============
rm 컨테이너 지우기
============
rmi 이미지 지우기
============
run
============
search
도커허브에 검색
star기준 정렬
============
start
중지된걸 실행
============
stop
실행중인것 멈추게
============
tag
이미지의 이름을 바꿈
============
top
상태보는 것
============
version
============
--help를 적극적으로 활용하기
docker --help
docker image --help 이렇게 서브명령어 쭉 나옴
C:\docker> docker container --help
Usage: docker container COMMAND
Manage containers
Commands:
attach Attach local standard input, output, and error streams to a running container
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
.
.
.
.
.
.
이렇게 나옴
도커는 컨테이너를 다루니까 컨테이너 명령어가 대부분
docker container run --help
라고 쳐도 나와
C:\docker> docker container run --help
Usage: docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]
Run a command in a new container
Options:
--add-host list Add a custom host-to-IP mapping
(host:ip)
-a, --attach list Attach to STDIN, STDOUT or STDERR
--blkio-weight uint16 Block IO (relative weight),
between 10 and 1000, or 0 to
disable (default 0)
OPTION이 나오고 IMAGE가 나온다
OPTION 많이 알면 훌륭한 사람
IMAGE는 식별자, 이미지 ID 또는 이미지 이름
COMMAND : 컨테이너 실행 후 실행된 컨테이너에 안에서 실행할 명령어 + arg는 그 명령어의 인자값
============
run의 옵션
-a : attach, 표준입출력(stdin...)을 컨테이너와 호스트가 공유
-i : stdin을 유지
-it 해당하는 호스트와 입출력을
-t : pseudo-TTY를 Allocate한다
-d : detach모드, 백그라운드에서 돌리는 것
--name 이름지정
-p
--rm
-v
============
다른사람보다 도커 잘하는 법
매일 명령어 이런거 쭉 보기 훑어보기만 해도 매일하면 익숙해진다
============
도커의 라이프 사이클
도커허브와 로컬레지스트리가 있는 것
이미지가 있어야 컨테이너를 만들 수 있다
없으면 외부의 원격 레지스트리에서 이미지를 가져옴. docker pull(다 명령어다)
로컬 레지스트리에 있는 이미지를 갖고 컨테이너를 만든다, 실행상태로 만드는게 docker run(실질적으로는 create+start)
생성된상태 + start 하면 실행됨
docker run이 pull+create+start 를 한번에 해줌
started된 상태에서 컨테이너는 자기가 실행되기로 한게 끝나면 그 컨테이너는 죽어버림
컨테이너 어플리케이션을 만들 땐 이 어플리케이션이 계속 실행될수 있도록 만듦
docker stop하면 exited
docker start 또는 docker restart하면 다시 started
Parused도 마찬가지
============
도커 실행환경 확인
C:\docker> docker system info
Client:
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc., v0.7.1)
compose: Docker Compose (Docker Inc., v2.2.1)
scan: Docker Scan (Docker Inc., v0.11.0)
Server:
Containers: 23
.
.
.
또는
전체 이미지 몇개가 어느정도
C:\docker> docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 1 1 72.78MB 0B (0%)
Containers 23 1 2.311kB 2.294kB (99%)
Local Volumes 1 0 3.435GB 3.435GB (100%)
Build Cache 40 0 1.09GB 1.09GB
'docker' 카테고리의 다른 글
도커 (5)포그백그, -itd, COMMAND&detach key, -p포트하나만주면 (0) 2022.01.25 도커 (4)run하면, detache, -it, logs, tag바꾸기, 일괄삭제, (0) 2022.01.25 도커 (3)Dockerfile, tag, COPY, tag, push (0) 2022.01.24 도커 (1)설치, 개념 (0) 2022.01.24 얄코 Docker (0) 2021.07.21