DevOps/Docker

[Docker] Docker 명령어 알아두면 좋을 것들 정리

백엔드 규니 2021. 4. 28. 14:14
728x90
반응형

Docker Container 접속하는 법

docker exec -t -i container_name /bin/bash (Docker Container 접속)
ex) Ddocker exec -t -i nginx /bin/bash (Docker Container 접속)

스크린샷 2021-04-28 오후 2 07 36

  • Docker Cotainer에 접속하고 싶을 때

 

Docker Compose로 Container 이름 지정하는 법

version: "3"
services:
  web:
    image: nginx
    container_name: nginx   
    ports:
      - 81:80
    volumes:
      - /etc/nignx/conf.d/:/etc/nginx/conf.d
  • 위와 같이 container_name을 지정하면 Container가 실행될 때 지정한 이름으로 만들어짐

 

Docker 명령어로 Container 이름 지어주기

docker run -it --name "spring" -d -p $IDLE_PORT:$IDLE_PORT leebal
  • 위와 같이 -it --name "이름"을 지정해주면 해당 이름을 가지고 컨테이너가 실행됨

 

Docker 컨테이너 실행시 환경변수 등록하는 법

docker run -it --name "spring" -d -e active=real1 -p $IDLE_PORT:$IDLE_PORT leebal
  • 위와 같이 -e 이름=환경변수이름으로 지정하면 dockerfile 에서 꺼내서 사용할 수 있음.

 

FROM openjdk:11-jre-slim

WORKDIR /root

COPY ./demo-0.0.1-SNAPSHOT.jar .

CMD java -jar -Dspring.profiles.active=${active} demo-0.0.1-SNAPSHOT.jar

위와 같이 ${이름}을 사용하면 환경변수 꺼낼 수 있음



 

실행중인 Docker Container ID 가져오기

docker ps | awk 'NR > 1 {print $1}'       (실행 중인 Docker Container ID 모두)
docker ps | awk 'NR > 1 {print $1; exit}' (맨 위의 Docker Container ID 하나만)

스크린샷 2021-04-28 오후 2 11 32

 

Docker-Compose yml

version: "3"
services:
  web:
    image: nginx
    container_name: nginx
    ports:
      - 80:80
    volumes:
      - /etc/nginx/:/etc/nginx/
      - /etc/nginx/conf.d/:/etc/nginx/conf.d
  spring1:
    build: .
    image: spring
    container_name: real1
    ports:
      - 8081:8081
    volumes:
      - ./:/root/
    environment:
      active: real1
  spring2:
    build: .
    image: spring
    container_name: real2
    ports:
      - 8082:8082
    volumes:
      - ./:/root/
    environment:
      active: real2
  • Docker-Compose에서는 위와 같이 이미지 이름을 지정하고 컨테이너 이름을 지정하는구나 예시로 작성해놓았음

 

 

현재 실행 중인 Docker Container ID

docker ps -q

 

현재 실행 중인 Docker Container Names

docker ps --format "{{.Names}}"

 

 

Docker Container Name으로 찾기

docker container ls -f "name=real1" 
docker container ls -f "name=real1" -q  (해당 컨테이너 이름의 Container ID만 뽑아내기)

 

 

Docker Nginx Container

sudo docker exec -it nginx nginx -s reload (이렇게 해도 되긴 하는데... 셸 스크립트에서 하니까 며칠을 삽질한..)
sudo docker exec -d nginx nginx -s reload (셸 스크립트에서 쓴다면 detach 모드로 쓰는 것을.. 이리 하니까 바로 되었음)

 

 

Reference

반응형