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명령어를 통해 로컬상에 디렉터리를 만들어서 컨테이너가 지워져도 데이터는 보존될 수 있게 하는 명령어