docker CLI #2

BERT·2023년 5월 22일
0

Docker

목록 보기
5/7

docker CLI : run #1

존재하는 container 모두 삭제

docker ps -a --format '{{.ID}}' | xargs docker rm

ubuntu_top 이름의 컨테이너 생성 후 top 명령어 1초마다 실행

docker run -it --name ubuntu_top ubuntu "top" "-d 1"

같은 이름을 재실행 시 오류 발생 \rarr 다른 이름으로 실행해야 함

ubuntu_top2 이름의 컨테이너 생성

docker run -it --name ubuntu_top2 ubuntu "top" "-d 1"

docker CLI : exec #1

run 은 새로운 container를 실행하는 명령
exec 은 기존에 존재하는 컨테이너에 실행하는 명령
ubuntu_top 컨테이너에서 0.2초마다 top 명령어 실행

docker exec -it ubuntu_top top "-d 0.2"

ubuntu_top 컨테이너에서 bash 실행

docker exec -it ubuntu_top bash

docker CLI : binding

container의 자원을 외부와 연결
일반적으로 입출력과 저장소 연결

network

port binding : host OS의 port와 container의 port를 바인딩
network : docker network 사용

directory, file, block-device

mount binding : host OS의 directory를 바인딩
volume : docker volume 저장소 사용
device : host OS의 device, GPU 바인딩

environment

shell environment variables 지정

docker CLI : binding : net

port 확인

host port : 8080
container port : 80
--rm 컨테이너 종료 시 자동 삭제
-p 8080:80/tcp 8080으로 들어오면 80으로 보냄

docker run --rm -p 8080:80/tcp --name nginx_8080 nginx

8080 port listen 확인
-n numeric
-l listen
-t tcp

ss -nlt 'sport = 8080'

curl로 테스트

curl 127.0.0.1:8080

net : deteach

background에서 작동시키기

docker run -d --rm -p 8080:80/tcp --name nginx_8080 nginx

log 확인

docker logs nginx_8080

net : attach, deteach

interactive mode & terminal 모두 사용하여 컨테이너 생성
-i interactive : attach, detach 가능
-t terminal
-d detach

docker run --rm -itd --name ubuntu_bash ubuntu bash

컨테이너 진입

docker attach ubuntu_bash

컨테이너 탈출
CTRL P Q

docker CLI : binding : mount #1

docker image들은 docker hub에서 확인

docker CLI : binding : mount #2

nginx docker container 내부 진입
일시적 확인을 위한 bash 실행

docker run --rm -it nginx bash

ls 표시를 위한 색 지정

alias ls='ls --color'

config 파일 확인

vim /etc/nginx/conf.d/default.conf

web document root : /usr/share/nginx/html

container에 binding할 dir의 준비 및 실행
binding directory : ~/nginx_doc_root \rarr /usr/share/nginx/html

nginx_doc_root 파일 생성
binding
hello.txt 파일 생성

mkdir nginx_doc_root
cd nginx_doc_root/
readlink -f ~/nginx_doc_root/
echo "Hello Document root dir" > ~/nginx_doc_root/hello.txt

container 생성

docker run --rm -d -p 8080:80/tcp \
-v /home/bert/nginx_doc_root:/usr/share/nginx/html \
--name nginx_8080 nginx

-v 대신 --mount 사용 방법
type=bind : mount의 bind 기능
type=volume : volume 사용

docker run --rm -d -p 8080:80/tcp \
--mount type=bind,src=/home/bert/nginx_doc_root,dst=/usr/share/nginx/html \
--name nginx_8080 nginx

127.0.0.1:8080 진입 시 403 Forbidden
원래 있던 것을 binding해서 위에 override 되어있는 상태

curl 127.0.0.1:8080

127.0.0.1:8080/hello.txt 진입 시 hello.txt 내용 확인 가능

curl 127.0.0.1:8080

내용 추가 후 추가 내용 확인

echo "Hello world" >> ~/nginx_doc_root/hello.txt
curl 127.0.0.1:8080/hello.txt

docker CLI : binding : Env

docker run --rm -it -e LANG=en_US.utf8 --name ubuntu_bash ubuntu bash

docker CLI : volume, net

docker volume, network
docker-compose와 같이 쓰이는 경우가 많음
개별적으로 쓰기에는 관리가 복잡함

docker CLI : stop, start

stop

detached mode로 실행 중 외부에서 docker stop으로 정지
-it를 사용하지 않는 시스템은 signal 혹은 stop으로 정지

start

docker run --rm을 쓰지 않는 경우 container 잔존
재시작 시 start로 가능

0개의 댓글