Docker명령어정리

Docker

명령어

docker create 이미지명 // 이미지로부터 컨테이너 생성

docker start 컨테이너명 // 컨테이너 실행

docker run  이미지명 // 이미지로부터 컨테이너 생성실행까지 (실행후 바로종료되지만 -d를 사용하면 백그라운드 사용가능)

docker exec // 실행중인 컨테이너에 명령어를 실행

docker ps -a // 컨테이너 목록

사용예제

docker run --rm 이미지명 echo "Hello World" //  이미지를 사용해서 컨테이너 생성 실행하고 해당 컨테이너를 삭제함, 단지 명령어 실행을 위해서 사용

docker exec -it 컨테이너명 bash // 실행중인 컨테이너의 bash셀로 접근

명령어 옵션

-i // 입출력가능

-t // 가상터미널환경

-d // 백그라운드에서 사용

docker-compose

docker-compose.yml의 여러 컨테이너를 한번에 관리할수있게해줌

docker-compose.yml안에는 아래와같이 서비스의 이름과 컨테이너 생성에 사용될 이미지명과 생성될 컨테이너정보가 포함된다

참고로 서비스명과 컨테이너명은 다른 개념이다

version: "3.7" // 버전

services:
  db: // 서비스명
    image: mysql:5.7 // 사용할 이미지명
    container_name: my-db // 생성되는 컨테이너명
    restart: unless-stopped
    environment: // 환경변수
      MYSQL_DATABASE: my_database
      MYSQL_USER: my_user
      MYSQL_PASSWORD: my_password
      MYSQL_ROOT_PASSWORD: my_password
    ports: // 사용할 포트
      - "3306:3306"
    volumes:
      - dbdata:/var/lib/mysql

명령어

docker-compose up [옵션] [서비스명]  // 컨테이너를 생성실행한다

docker-compose run [서비스명] [명령] // up으로 생성된 서비스에 일회성 명령을 실행한다 (명령 실행목적)

docker-compose start [서비스명] // 해당 서비스를 실행

사용예제

docker-compose run redis /bin/bash //redis서비스를 실행하며 셀스크립트에 접속한다

docker-compose run --rm [서비스명] [명령] // --rm을 붙이지 않으면 컨테이너가 남는다 (주의)

docker-compose exec [서비스명] [명령] // 컨테이너를 남기지 않고 명령을 실행함 (컨테이너가 실행중인 상태여야함)

명령어 옵션

-d // 백그라운드에서 사용

--build // 이미지 빌드

2023/06/28추가

docker compose up 컨테이너 생성/실행함.. 이미 생성된 컨테이너가 있으면 실행만함(docker compose start)

docker compose down 컨테이너 정지하고 삭제함

docker compose start 컨테이너 실행함

docker compose stop 컨테이너 정지함

docker compose run 컨테이너 생성후 명령어를 일회용으로 사용

docker compose exec 실행중인 컨테이너에 명령어를 사용

참조:

https://www.daleseo.com/docker-run/


여기부터 일단 정리이고 나중에 수정할지도..

docker run과 docker-compose run은 다르다..

오히려 docker run컨테이너 설치와 실행까지하지만

docker-compose run은 docker-compose.yml에 있는 서비스에 대해서 일회성 명령을 실행하기위해 사용됨 (그러나 --rm명령어가 없으면 컨테이너가 남는다)

반대로

docker run과 docker up 이 오히려 비슷하지 않을까? 둘다 설치와 실행의 역할을 하기때문이다

Apr 10, 2023 Views 107