본문 바로가기
코딩도전기/DOCKER

Docker - 실행 / Image Pull / Container Run

by 코도꼬마 2023. 5. 26.

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