public registry( dockerhub) 에서 파일 가져오기
docker pull ubuntu:latest
가져온 이미지 확인
docker images
docker start <name> //도커 실행
도커 컨테이너 실행
docker run -it ubuntu:14.04 echo "hello" //hello 찍기
docker run -it ubuntu:14.04 /bin/bash // ubuntu 14.04로 컨테이너에 접속( 컨테이너 down 안시키고 나올때 ctrl +p +q)
docker run -it ubuntu:14.04 ifconfig //인터페이스 확인
docker ps //컨테이너 up된 것 확인
docker ps -a //컨테이너 up/down 된것 까지 확인
docker inspect <name> // 도커 속성 정보
docker exec -it <name> bash //도커 컨테이너에 접속(-i :표준입출력, -t: 터미널)
도커 mysql 실행
docker run -it -e MYSQL_ROOT_PASSWORD=password mysql:latest bash
$/etc/init.d/mysql start
$mysql -uroot
password : password
show databases;
도커 cadvisor 설치 및 실행( 컨테이너 모니터링(cpu,mem,disk) 툴)
docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker:/var/lib/docker:ro --publish=8008:8080 --detach=true --restart:always --name=cadvisor google/cadvisor:latest
nginx 설치(-d 옵션은 계속 up 되어 있게)
docker run --name nginx1 -d -p 8001:80 nginx:1.19
도커 리소스 사용량 체크
docker stats nginx1
도커 파일 복사
docker cp index.html nginx1:/usr/share/nginx/html/index.html
Dockerfile을 이용한 build
vi Dockerfile
FROM nginx:1.19
COPY index.html /user/share/nginx/html/index.html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"] //데몬을 백그라운드로 시작
:wq!
docker build -t mynginx:1.0 . //현재 폴더에서 도커 빌드
------------------------
docker history nginx:1.19 // 도커 다운로드 히스토리
docker image rm -f <name> // 도커 이미지 삭제
dockr rm <id> // 도커 컨테이너 삭제
docker 컨테이너 전체 삭제
docker ps -a -q
docker 컨테이너 중지 및 삭제
docker stop <id>
docker rm <id>
docker 컨테이너 전체 삭제 및 중지
docker stop $(docker ps -q)
docker rm $(docker ps -a -q)
image 전체 삭제
docker rmi $(docker images -q)
사용하지 않는 도커 이미지 삭제
docker image prune
dockerhub에 접속
docker login
docker logout
dockerhub에 이미지 올리기
docker login
docker tag nginx:1.0 <자신 id>/nginx_test:1.0
docker push <자신id>/nginx_test:1.0
모니터링
docker start nginx_test
docker attach nginx_test //모니터링 명령어(내가 컨피그 한게 따라 보임)
-----------------
브릿지 확인
brctl show
docker network ls
옵션 | 내용 |
--add-host(host명:ip_address) | 컨테이너 /etc/hosts에 host명과 ipaddress 설정 |
--dns=ip_address | dns서버 ip 설정 |
--expose=port num | 컨테이노 노출 포트 설정 |
--net=(bridge|nonee|container:<name|id>|host) | 컨테이너 네트웍 설정 |
-h host명 | 컨테이너 호스트 이름 설정 |
-P(임의의 포트), -publish-all=(true|false) | 임의의 포트를 컨테이너에 할당 (32768 이후부터 임의 포트) |
-p (host포트넘버:컨테이너 포트넘버) | 호스트 포트와 컨테이너 포트를 매핑 |
--link=(container:container_id) | 동일 호스트간 다른 컨테이너에서 액세스 시 이름 설정 |
--mac-address=madaddress | 컨테이너 mac address 설정 |
docker network 설정
옵션 | 내용 |
bridge | bridge 접속 (디폴트 : docker0) 172.17.0.2~, 172.17.0.1 g/w |
none | 네트워크 생성 없음 |
container:(container_name | id ) | 다른 컨테이너의 네트워크 같이 사용( container:nx_test) |
host | 컨테이너가 host OS에 있는 네트워크 공유해서 사용 |
NETWORK | 사용자 정의 네트워크명 |
docker network create -d bridge web-net
docker run --net=web-net -itd --name=web httpd:latest
확인
brctl show //veth 생성 확인
docker network inspect web-net
docker exec web route
네트워크 수동 지정 생성
docker network create --driver bridge --subnet 172.18.1.0/24 --ip-range 172.17.1.0/24 --gateway 172.18.1.1 vswitch
리소스 관리
옵션 | 내용 |
-c, --cpu-shares=0 | cpu 리소스 분배( 디폴트: 1024, cpu 1의 비율의미) |
-m, --memory=(메모리 사용량), --memory-swap | 메모리 사용량 제한( 디폴트 1024, 단위: b, k, m, g) |
--device-write-bps --device-read-bps, --device-write-iops, --device-read-iops, --blkio-weight, --glkio-weight-device | MBPS, iops 설정 |
-v, --volume=(host 디렉토리:컨테이너 디렉토리) | host와 container의 디렉토리 공유 |
IOPS : Input / Output Per Second(초당 입력/출력 횟수)
MBps : 초당 전송 되는 Data
cpu 2번 하나만 할당 및 memory 400M , swap memory 800M 할당,mbps 쓰기 제한:10m, resource_test이름으로 ubuntu 생성 하기
docker run -d --name resource_test --cpuset-cpus=2 --device-write-bps /dev/sda:10m --memory=400m --memory-swap=800m ubuntu:14.04 --cpu 1
아래 경고 발생시
WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
docker info //아래에 보면 swap limited 가 서포트 되지 않는 다고 나옴
대책:
sudo vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT= "cgroup_enable=memory swapaccount=1"
sudo update-grub
sudo reboot
------------------------------------------------
bind mount 생성
docker run -it --name ubunt_vol -v /home/admin/vol1:/vol1 ubuntu:latest bash
docker volume 생성
docker volume create wp-vol
docker run -d --name wp-db -e MYSQL_ROOT_PASSWRD=password -v wp-vol:/var/lib/mysql mysql:5.7
docker inspect --type volume wp-vol
볼륨 삭제
docker volume rm wp-vol
데이터 전용 컨테이너
docker create -v /data-volume --name=datavol ubuntu:latest
docker run -it --volumes-from datavol ubuntu:latest
-------------------
컨테이너를 이미지로 변환
docker commit -a "test" web webtest:1.0
----------------------
컨테이너 백업
컨테이너에서 export
docker export web > web.tar
백업파일을 컨테이너로..
cat web.tar | docker import - web:1.0
-------------------
이미지로 save/컨테이너로 load
docker save ubuntu:14.04 > ubuntu1404.tar
docker load < ubuntu1404.tar
-------------------
도커 완전 초기화(일괄 삭제)
docker system prune -a
-------------------------
docker kill ubuntu (컨테이너를 stop 및 세션도 종료)
kill -9 1111 (세션만 종료)
'Docker' 카테고리의 다른 글
도커 스웜 모드, docker swarm (0) | 2021.03.15 |
---|---|
docker-compose (0) | 2021.03.15 |
Docker 설치 및 삭제 (0) | 2021.03.10 |
Docker - 이론 (0) | 2021.03.09 |