실행중인 컨테이너의 옵션을 바로 변경하는 방법은 없다.
컨테이너에 저장되어있는 데이터를 전부 백업하고 컨테이너를 이미지화 하고
다시 옵션을 주고 컨테이너를 run 하면 된다.
$ 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
// 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
$ docker commit -p [구동중인_컨테이너_ID] [저장할_새로운_이미지_이름]
# 실제 예시)
$ sudo docker ps -a # container 확인 한 후
$ sudo docker commit -p a6e352c093b3 gc_mysql # commit
$ sudo images # 만들어진 이미지 확인
$ sudo docker save -o [저장할_새로운_tar파일_이름].tar [저장할_이미지_이름]
# 실제 예시)
$ sudo docker save -o gc_mysql.tar build-machin
$ sudo docker load < [백업한_파일이름].tar
# 실제 예시)
$ sudo docker load < gc_mysql.tar # 복원하기
$ sudo docker images # 확인하기
// 만약 같은 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
$ 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> SHOW GLOBAL VARIABLES LIKE 'PORT';
포트 변경하기?