Docker 초기 실행
- Power shell에서 명령어 실행(docker 프로그램에서도 확인 가능)
# container list 모든 정보를 보여줘 / ls : list / - : option / a : all
docker container ls -a
# tomcat 설치를 위해 해당 이미지가 있는지?
docker search tomcat
Image / Container
- Image : 실행파일 및 설정 값들을 의미
- 하나의 Image 가 꼭 하나의 프로그램은 아님
- Docker Hub에 공식적으로 지원하는 이미지들이 존재
- Container : Image를 실행하기 위한 프로세스
- Image와 Container 관계
- Image를 최초 run하게 되면 Container가 생성됨
- Image는 실행 파일 및 설정 값이고 Container는 Image를 실행해주는 process
- OS 이미지를 만들어 그 안에 여러 프로그램을 설치하고 하나의 이미지를 사용하는 방법도 있음
- 하지만 Docker는 각 하나의 container에 하나의 프로세스를 권장함
Tomcat 설치
- Tomcat image pull
# docker pull [프로그램]:[버전(태그)]
docker pull tomcat:9.0
- 톰캣 실행(컨테이너 실행)
# docker run -d --name [컨테이너이름] -p [외부포트]:[내부포트] [이미지 이름]
docker run -d --name tomcat -p 8080:8080 tomcat:9.0
# 컨테이너 내부로 진입
#docker exec -it [컨테이너] /bin/bash
# -it : 터미널 사용
docker exec -it tomcat /bin/bash
# 컨테이너 실행 / 정지
# docker [stop|start] [컨테이너이름]
docker start tomcat
# 현재 경로 확인
pwd
# 특정 폴더로 이동
cd webapps
# 폴더 생성
mkdir ROOT
# 특정 로컬컴퓨터에 있는 파일을 컨테이너의 특정 폴더로 복사
# docker cp [로컬파일 경로] [컨테이너 이름]:[붙여넣기 할 경로]
docker cp ./index.jsp tomcat:/usr/local/tomcat/webapps/ROOT/
docker cp ./header.jsp tomcat:/usr/local/tomcat/webapps/ROOT/
docker cp ./footer.jsp tomcat:/usr/local/tomcat/webapps/ROOT/
MariaDB 설치
# mariadb 지원되는지 확인
docker search mariadb
# 이미지 땡겨오기 - 버전을 붙이지 않으면 최신버전을 가져옴(가장 마지막에 등록된 것)
docker pull mariadb
docker images
# 컨테이너 실행
# -e 설치시 환경 설정
docker run -d --name mariadb -p 1512:3306 --restart=always -e MYSQL_ROOT_PASSWORD=1111 mariadb
Container 동작 확인
# -a가 없으면 살아있는 애만 보여줌
docker container ps -a
docker ps -a
# 컨테이너 실행/정지
docker start tomcat
docker stop mariadb
# tomcat, mariadb 동시 실행
docker start tomcat mariadb
# 컨테이너 삭제(컨테이너가 정지상태여야 함)
# rm : remove
# f : 강제적으로
docker container rm -f tomcat
# 이미지 삭제
docker image rm -f tomcat:9.0
docker rmi -f tomcat:9.0
Build
- mariadb는 데이터가 쌓이면서 여러 변경점이 생김
- mariadb의 container가 삭제되면 데이터가 모두 삭제됨
- Image는 초기 설정값을 가지고 있고, Container에는 운영 중 생성 데이터가 저장되기 때문
- 두가지 방법으로 해결가능
- image 저장 내용을 host 폴더에 저장
- image에 변화를 주고 container를 commit(Image 자체는 순수 초기 상태를 유지하는 것이 좋기 때문에 권장되지 않음 )
- 덤프 생성(MySql Client 실행 후 exit)
# mysqldump -u [아이디] -p [복사할 데이터베이스] > [경로 및 파일명]
mysqldump -u root -p mydb > C:\mydb.sql
- docker에 mariadb 실행
# -v [로컬저장소]:[컨테이너저장소]
#로컬저장소와 컨테이너 저장소를 연결
docker run -d --name mariadb -p 1512:3306 --restart=always -e MYSQL_ROOT_PASSWORD=1111 -v C:\Users\Public\mydb:/var/lib/mysql mariadb
- 계정생성 및 권한 부여(DBeaver)
CREATE USER 'web_user'@'%' IDENTIFIED BY 'pass';
GRANT ALL PRIVILEGES ON *.* TO 'web_user';
SELECT * FROM mysql.user;
- 덤프파일을 local -> container 복사
docker cp C:\Users\Public\mydb/mydb.sql mariadb:/home/
- dump 복구(복구하려는 database는 만들어져있어야 함&비워져있어야함)
mysql -u root -p mydb < /home/mydb.sql
'코딩도전기 > DOCKER' 카테고리의 다른 글
Docker - 설치 (0) | 2023.05.25 |
---|