[Docker Command]
o docker 정보
docker info
docker -v


o 도커 이미지 조회
docker images


o 도커 이미지 다운로드
docker image repository 부터 Docker image 를 다운로드
private repository 사용 가능

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

docker pull ubuntu:18.04


o 도커 container 생성
이미지가 없는 경우는 이미지 다운로드 후 컨테이너 생성

docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

docker create -i -t --name myub ubuntu:16.04
-i  상호 입출력
-t  tty활성화해서 bash 셀 사용
-it    -i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션


o 도커 container 생성 & 실행

컨테이너가 없는 경우 생성, 있다면 실행
rm은 컨테이너 종료시 저장된 내용 사라짐

docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

docker run --rm -it ubuntu:16.04
docker run --rm -it --name myserver ubuntu:16.04 /bin/bash


-d    detached mode 흔히 말하는 백그라운드 모드
-p    호스트와 컨테이너의 포트를 연결 (포워딩)
-v    호스트와 컨테이너의 디렉토리를 연결 (마운트)
-e    컨테이너 내에서 사용할 환경변수 설정
--name    컨테이너 이름 설정
--rm    프로세스 종료시 컨테이너 자동 제거
-i  상호 입출력
-t  tty활성화해서 bash 셀 사용
-it    -i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션
?link    컨테이너 연결 [컨테이너명:별칭]



o 도커 container 실행
컨테이너 ID나 이름을 이용하여 실행 / 진입  

docker start [OPTIONS] CONTAINER [CONTAINER...]

  -a, --attach               Attach STDOUT/STDERR and forward signals
      --detach-keys string   Override the key sequence for detaching a  container
  -i, --interactive          Attach container's STDIN

   
docker start -i myub
docker start -i 77d68f6b75f3
docker attach -i myub


o container command 실행

docker exec -it demo2 /bin/bash


o 도커 container exit
Ctrl + P,Q : 컨테이너를 종료하지 않고 exit
exit : 컨테이너 종료 후 exit


o 도커 container List
컨테이너 목록 조회
- PORTS : 컨테이너가 개방한 포트와 호스크 연결한 포트
- NAMES : 컨테이너 고유한 이름

docker ps [OPTIONS]

-a, --all             Show all containers (default shows just running)
-f, --filter filter   Filter output based on conditions provided
    --format string   Pretty-print containers using a Go template
-n, --last int        Show n last created containers (includes all   states) (default -1)
-l, --latest          Show the latest created container (includes all  states)
    --no-trunc        Don't truncate output
-q, --quiet           Only display container IDs
-s, --size            Display total file sizes


o 도커 container name 변경
docker create -i -t --name myub ubuntu:16.04
docker ps -a
docker rename vigorous_bhaskara myubt


o 도커 container 종료
docker stop myubt
docker stop $(docker ps -a -q)


o 도커 container 삭제
docker rm myubt
docker rm -f myubt


o 도커 image 삭제
docker rmi ubuntu 


o 도커 container 외부 노출
컨테이너는 가상 IP 주소 가짐. 기본 IP 172.17.0.x
기본적으로 도커가 설치면 호스트에서만 접근 가능, 외부에서 접근할 수 없음

host 8080 포트를 컨테이너 80포트로 연결
- http://172.29.32.1:7777  -> container:80
- localhost:7777은 연결 안됨

docker run -it -p 172.29.32.1:7777:80 --name webserver ubuntu:16.04


[ifconfig 설치]
apt update -y
apt install net-tools
ifconfig

[apache 설치]
apt-get update
apt-get install apache2 -y
service apach2 start

o Docker network
docker network ls
docker network inspect bridge

bride : 컨테이너 생성할때 자동으로 연결되는 docker() 브리지 활용
        172.17.0.x IP 대역을 순차적으로 할당


o 도커 container 로깅
docker logs [OPTIONS] CONTAINER

      --details        Show extra details provided to logs
  -f, --follow         Follow log output
      --since string   Show logs since timestamp (e.g.
                       2013-01-02T13:23:37Z) or relative (e.g. 42m for 42
                       minutes)
  -n, --tail string    Number of lines to show from the end of the logs
                       (default "all")
  -t, --timestamps     Show timestamps
      --until string   Show logs before a timestamp (e.g.
                       2013-01-02T13:23:37Z) or relative (e.g. 42m for 42
                       minutes)
                       
docker logs --tail 2 worddb
docker logs demo3
docker logs demo3 -f

-- log 옵션
docker run --rm -it --log-opt max-size=10k --log-opt max-file=3 ubuntu:16.04

-- syslog 설정
docker run --rm -d --name syslog_container --log-driver=syslog ubuntu:16.04 echo syslogtest

test 라는 이름의 busybox 이미지를 백그라운드에서 도커 컨테이너로 실행하여, 1초에 한 번씩 현재 시간을 출력
docker run --name demo3 -d busybox sh -c "while true; do $(echo date); sleep 1;done"


o 도커리소스 제한
-- 메모리
swap 메모리는 메모리의 2배로 설정, swap로 변경 가능(기본메모리보다 커야함)

docker run --rm -it --memory="1g" ubuntu:16.04
docker run --rm -it --memory=10m --memory--swap=50m ubuntu:16.04

-- CUP
1024를 기준으로 비율로 산정
docker run --rm -it --memory=100m --cpu-shares=1024 ubuntu:16.04
docker run --rm -it --memory=100m --cpu-shares=512 ubuntu:16.04

ps aux | grep stres

-- cpu 수 제한
cupset-cups=0.3은 1,3번째CPU, 0-2는 1,2,3번째 CPU
docker run --rm -it --memory=100m --cpuset-cpus=2 ubuntu:16.04
 
[htop] CPU 사용량 확인
agt-get install htop
yum -y install epel-release && yum -y install htop

 


o 도커 컨테이너 어플리케이션 구축
-d detached 모드로 백그라운드 실행
  사용자입력을 받지 않고 반드시 컨테이너에서 프로그램이 실행되어야 함
  포그라인드 프로그램이 실행하지 않으면 컨테이너는 종료됨
  docker ps로 확인할 수 없음-> ps -a 로 확인  
- link : 컨테이너에서 컨터이너로 접근.
  내부 IP와 포트를 사용하지 않고 컨테이터 alias로 접근
  컨테이너를 순차적으로 실행
 
docker run -d --name wordpressdb -e MYSQL_ROOT_PASSWORD=password 
      -e MYSQL_DATABASE=wordpress mysql:5.7
docker run --name wordpress -e WORDPRESS_DB_HOST=mysql -e WORDPRESS_DB_USER=root 
      -e WORDPRESS_DB_PASSWORK=password --link wordpressdb:mysql -p 80 wordpress

docker stop wordpress wordpressdb


o docker volume
docker run -d --name wordpressdb_v -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress 
      -v d:\\docker\NAS:/var/lib/mysql mysql:5.7
docker run --name wordpress_v -e WORDPRESS_DB_HOST=mysql -e WORDPRESS_DB_USER=root 
      -e WORDPRESS_DB_PASSWORK=password --link wordpressdb_v:mysql -p 80 wordpress

docker start -i wordpress_v
docker run --rm -it -v D://docker/home:/NAS ubuntu:16.04
docker run -d --name worddb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress 
      -v d:\\docker\home\mysql:/var/lib/mysql mysql:5.7
docker run -d --name word -e WORDPRESS_DB_HOST=mysql -e WORDPRESS_DB_USER=root 
      -e WORDPRESS_DB_PASSWORK=password --link worddb:mysql -p 80 wordpress

'Docker' 카테고리의 다른 글

Docker - image  (0) 2023.09.19
Docker 설치  (0) 2023.09.19
Docker Volume  (0) 2022.11.13
Docker 개요  (0) 2022.11.04

+ Recent posts