존재하는 container 모두 삭제
docker ps -a --format '{{.ID}}' | xargs docker rm
ubuntu_top 이름의 컨테이너 생성 후 top
명령어 1초마다 실행
docker run -it --name ubuntu_top ubuntu "top" "-d 1"
같은 이름을 재실행 시 오류 발생 다른 이름으로 실행해야 함
ubuntu_top2 이름의 컨테이너 생성
docker run -it --name ubuntu_top2 ubuntu "top" "-d 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
container의 자원을 외부와 연결
일반적으로 입출력과 저장소 연결
port binding : host OS의 port와 container의 port를 바인딩
network : docker network 사용
mount binding : host OS의 directory를 바인딩
volume : docker volume 저장소 사용
device : host OS의 device, GPU 바인딩
shell environment variables 지정
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
background에서 작동시키기
docker run -d --rm -p 8080:80/tcp --name nginx_8080 nginx
log 확인
docker logs nginx_8080
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 image들은 docker hub에서 확인
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
/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 run --rm -it -e LANG=en_US.utf8 --name ubuntu_bash ubuntu bash
docker volume, network
docker-compose와 같이 쓰이는 경우가 많음
개별적으로 쓰기에는 관리가 복잡함
detached mode로 실행 중 외부에서 docker stop으로 정지
-it
를 사용하지 않는 시스템은 signal 혹은 stop으로 정지
docker run --rm을 쓰지 않는 경우 container 잔존
재시작 시 start로 가능