docker - container 옵션 변경 - mysql 기준

sangwoo noh·2022년 7월 18일
0

Docker

목록 보기
13/22
post-custom-banner

실행중인 컨테이너의 옵션을 바로 변경하는 방법은 없다.

컨테이너에 저장되어있는 데이터를 전부 백업하고 컨테이너를 이미지화 하고
다시 옵션을 주고 컨테이너를 run 하면 된다.

백업 수동으로 다 할꺼면 공식 이미지를 다시 받아서 run하는거랑 뭔차이?

  • 시간내서 알아봐야할 내용

뭐할꺼?

  • 볼륨세팅이 안돼있는 mysql docker container를 volume 옵션을 추가하여 다시 띄우기

mysql DB백업하기

  • ref: https://hub.docker.com/_/mysql
  • Creating database dumps
    Most of the normal tools will work, although their usage might be a little convoluted in some cases to ensure they have access to the mysqld server. A simple way to ensure this is to use docker exec and run the tool from the same container, similar to the following:

$ docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql

$ docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql

volume 만들기

// gc_mysql_volume이란 이름으로 볼륨을 생성한다.
$ docker volume create gc_mysql_volume	#Create a volume

// 만들어진 볼륨을 확인한다.
$ docker volume ls	#List volumes

// 특정 볼륨의 자세한 정보를 확인한다.
$ docker volume inspect	#Display detailed information on one or more volumes

// 볼륨을 삭제한다.
$ docker volume rm	#Remove one or more volumes

$ docker volume prune	#Remove all unused local volumes

백업 전 상태 저장하기 (commit)

  • 구동중인 컨테이너를 이미지화 한다.
$ docker commit -p [구동중인_컨테이너_ID] [저장할_새로운_이미지_이름]


# 실제 예시) 
$ sudo docker ps -a    # container 확인 한 후
$ sudo docker commit -p a6e352c093b3 gc_mysql   # commit
$ sudo images   # 만들어진 이미지 확인

container 백업하기 (save)

  • 이미지화 된 컨테이너를 tar파일로 저장한다.
$ sudo docker save -o [저장할_새로운_tar파일_이름].tar [저장할_이미지_이름]

# 실제 예시)
$ sudo docker save -o gc_mysql.tar build-machin

container 복원하기 (load)

$ sudo docker load < [백업한_파일이름].tar

# 실제 예시)
$ sudo docker load < gc_mysql.tar   # 복원하기
$ sudo docker images   # 확인하기

docker mysql container 옵션 주고 실행

// 만약 같은 host에서 복원하는내용이라면 
// 기존 3308포트 사용하는 컨테이너를 stop한다.
$ docker run --name new_container_name -p 3308:3308 -v [volume_name_OR_host_own_dir]:/var/lib/mysql -d -e MYSQL_ROOT_PASSWORD=[own_password] -d image_name:tag_name


// 실제 예시)
$ docker run --name gc_mysql -p 3308:3308 -v gc_mysql_volume:/var/lib/mysql -d -e MYSQL_ROOT_PASSWORD=root -d gc_mysql_backup_2022_07_18:latest

mysql DB 복원하기

  • Restoring data from dump files
    For restoring data. You can use docker exec command with -i flag, similar to the following:
$ docker exec -i some-mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /some/path/on/your/host/all-databases.sql

// 실제 예시
$ docker exec -i gc_mysql sh -c 'exec mysql -uroot -p"root"' < ./gc_mysql_all-databases.sql

mysql port확인

$ mysql> SHOW GLOBAL VARIABLES LIKE 'PORT';

포트 변경하기?

profile
하기로 했으면 하자
post-custom-banner

0개의 댓글