[도커]명령어 정리

백현균·2023년 6월 6일

1. 컨테이너 실행 명령어

docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
-d detached mode (백그라운드 모드)
-p 호스트와 컨테이너의 포트를 연결
-v 호스트와 컨테이너의 디렉토리를 연결
-e 컨테이너 내에서 사용할 환경변수 설정
--name 컨테이너 이름 설정
--rm 프로세스 종료시 컨테이너 자동 제거
-it -i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션
--network 네트워크 연결

2. 컨테이너 실행 예제

1) 웹 어플리케이션 컨테이너

docker run --rm -p 5678:5678 hashicorp/http-echo -text="hello world"
# m1칩 
docker run --rm -p 5678:8080 ghcr.io/subicura/http-echo --text="hello world"
  • hashicorp에서 제공하는 http-echo 웹 어플리케이션을 5678포트에 연결하여 실행된 환경을 웹 서버처럼 접근 가능
  • -p명령어를 통해 호스트와 컨테이너를 연결

2) mariaDB 컨테이너

docker run -d -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true --name mariadb mariadb:10.9
  • 테이블 생성 및 권한부여
docker exec -it mariadb mariadb 
create database wp CHARACTER SET utf8;
grant all privileges on wp.* to wp@'%' identified by 'wp';
flush privileges;
quit
  • exec명령어
    - run명령어는 컨테이너를 실행할 때 사용되는 명령어지만, exec명령어는 실행 중인 컨테이너에 접속할 때 사용되는 명령어로 컨테이너 안에 ssh server등을 설치하지 않고 접속 가능

3) 실행/중지 컨테이너 목록

docker ps -- 실행 목록
docker ps -a -- 중지 목록

4) 컨테이너 중지

docker stop [OPTIONS] CONTAINER [CONTAINER...]

5) 종료된 컨테이너 삭제

docker rm [OPTIONS] CONTAINER [CONTAINER...]
  • run 명령어 입력시 --rm 명령어를 추가하면 종료시 자동으로 컨테이너 삭제

6) 이미지 목록 및 삭제

docker images [OPTIONS] [REPOSITORY[:TAG]] -- 목록
docker rmi [OPTIONS] IMAGE [IMAGE...] -- 삭제

7) 네트워크

  • 네트워크 명령어는 컨테이너끼리 이름을 지정해서 통신할 수 있는 가상 네트워크를 만드는 명령어
docker network create [OPTIONS] NETWORK명 -- 네트워크 생성
docker network connect [OPTIONS] NETWORK명 CONTAINER명 - 컨테이너에 네트워크 추가
  • 사용 예시
 docker network connect app-network mysql-container -- mysql컨테이너 네트워트 추가
 
 docker run -d -p 8080:80 \
  --network=app-network \  -- 워드프레스 컨테이너 실행 시 mysql-container 추가
  -e WORDPRESS_DB_HOST=mysql \
  -e WORDPRESS_DB_NAME=wp \
  -e WORDPRESS_DB_USER=wp \
  -e WORDPRESS_DB_PASSWORD=wp \
  wordpress

8) 볼륨

docker stop mysql
docker rm mysql
docker run -d -p 3306:3306 \
  -e MYSQL_ALLOW_EMPTY_PASSWORD=true \
  --network=app-network \
  --name mysql \
  -v /Users/subicura/Workspace/github.com/subicura/docker-guide/ch02/mysql:/var/lib/mysql \
  mariadb:10.9
  -v /Users/subicura/Workspace/github.com/subicura/docker-guide/ch02/mysql:/var/lib/mysql \
  • 컨테이너 구동에 필요한 데이터의 디렉터리를 관리하는 명령어
  • 만약 네트워크를 통해서 데이터베이스와 워드프레스가 연동된 상태에서 데이터베이스 컨테이너가 중지되고 삭제가 되면 워드프레스에서 사용된 모든 데이터가 삭제되므로, -v명령어를 통해 로컬상에 디렉터리를 만들어서 컨테이너가 지워져도 데이터는 보존될 수 있게 하는 명령어

0개의 댓글