본문 바로가기

Docker

Docker 기본 명령어

image 생성

# docker commit [옵션] [컨테이너 이름] [백업파일이름:버전]

* 컨테이너 이미지를 생성하는 동안 컨테이너 일시정지
  # docker commit -p sonarqube sonarqube-backup-0510:latest

* 실행중인 컨테이너 이미지 생성 (일시정지 안함)
  # docker commit sonarqube sonarqube-backup-0510:latest

image tar 파일 생성

# docker save [옵션] [저장경로/파일이름.tar] [이미지이름:버전]

# docker save -o /home/docker/docker_backup/20210510/sonarqube-backup-0510.tar sonarqube-backup-0510:latest

볼륨 백업

* 임시 컨테이너를 만들어서 볼륨을 생성하고 임시 생성된 컨테이너 삭제
# docker run --rm --volumes-from [컨테이너ID/컨테이너이름] -v [컨테이너 디렉터리]:[호스트 디렉터리] [컨테이너이름] tar cvf [저장할 볼륨 파일명.tar] [볼륨 위치] 
* $(pwd) : 현재 컨테이너 위치 - 지금은 /home/docker/docker_backup/vol0510 : 백업파일 저장할 위치

- jenkins
 # docker run --rm --volumes-from jenkins -v /home/docker/docker_backup/vol0510:/backup ubuntu tar cvf /backup/jenkins-volume-backup-0510.tar var/jenkins_home
 
 # docker run --rm --volumes-from 8ef1e13dba76 -v $(pwd):/backup ubuntu tar cvf /backup/jenkins-vol-backup-0510.tar /var/jenkins_home

이미지 로드

> docker load -i [tar 파일]
> docker load -i sonarqube-backup-0510.tar

이미지 run

- sonarqube
# docker run -d -p 9000:9000 -p 9002:9002 --name sonar-new --network sqilab_sonarnet --env SONARQUBE_HOME=/opt/sonarqube sonarqube-backup-0510:latest

- jenkins
# docker run -d -p 8080:8080 --name jenkins-new --network sqilab_sonarnet jenkins-backup-0510:latest

볼륨 복원

* 컨테이너 사이즈 확인
  # docker ps --size | grep [컨테이너 이름]
 
* 볼륨 백업 tar 파일 풀기
  # docker run --rm --volumes-from [컨테이너 이름] -v [tar파일 위치한 디렉토리]:[컨테이너에 생성할 임	시 디렉토리] ubuntu tar xvf [임시디렉토리/tar파일]
  
  // 두 명령어 중 아무거나 실행 후 컨테이너 재시작
  # docker run --rm --volumes-from jenkins-new -v D:\docker\sqilab\backup:/backup ubuntu tar xvf 	/backup/jenkins-vol-backup-0510.tar

docker hub push

# docker login
# docker tag [이미지 이름:tag] [hub계정/hub이름:tag]
# docker push [hub계정/hub이름:tag]

# docker tab sqi_redmin:1.0 sqisoft/sqi_redmine:1.0
# docker push sqisoft/sqi_redmine:1.0

Redmine DB Backup

# docker exec [container id] /usr/bin/mysqldump -u root --password=redmine redmine > sqi_maraidb.sql

Redmine DB Restore

# docker cp ./sqi_mariadb.sql mariadb:/sqi_mariadb.sql
# docker exec -it mariadb /bin/bash
/# mysql -u root -p redmine < sqi_mariadb.sql    //pw:redmine
/# rm sqi_mariadb.sql

Redmine DB Restore (view)

# docker exec -it mariadb /bin/bash
/# mysql -u root -p
> show databases;
> use redmine;
> CREATE OR REPLACE
ALGORITHM = UNDEFINED VIEW `redmine`.`redmine_history_view` AS (
select
    `i`.`id` AS `red_seq`,
    `p`.`name` AS `red_project`,
    `i`.`subject` AS `red_subject`,
    `t`.`name` AS `red_tracker`,
    `ist`.`name` AS `red_status`,
    `i`.`start_date` AS `red_date`,
    `i`.`updated_on` AS `red_end`,
    `u`.`login` AS `red_user`
from
    ((((`redmine`.`issues` `i`
join `redmine`.`trackers` `t` on
    (`i`.`tracker_id` = `t`.`id`))
join `redmine`.`projects` `p` on
    (`i`.`project_id` = `p`.`id`))
join `redmine`.`issue_statuses` `ist` on
    (`i`.`status_id` = `ist`.`id`))
join `redmine`.`users` `u` on
    (`i`.`assigned_to_id` = `u`.`id`))
where
    `t`.`name` = '새기능'
    or `t`.`name` = '개선'
    or `t`.`name` = '결함'
    or `t`.`name` = '신규');
    
> describe redmine_history_view;

Redmine Plugin Install

1) git clone
# docker exec -it redmine /bin/bash
/# cd /usr/src/redmine/plugins
/# rm -rf [기존 파일]			//기존 파일 삭제
/# git clone https://github.com/agileware-jp/redmine_issue_templates	//플러그인 git 주소 clone -> plugins 경로에 폴더가 생긴다

2) 파일 다운로드 -> 복사
https://www.redmineup.com/pages/plugins			//redmine plugin 다운로드 링크. 
파일 다운로드 > zip 파일 압축 해제 > container:/usr/src/redmine/plugins 경로에 copy

# docker cp ./redmine_checklists/ redmine:/usr/src/redmine/plugins/
# docker cp ./redmine_agile/ redmine:/usr/src/redmine/plugins/

# docker exec -it redmine /bin/bash
/# cd /usr/src/redmine/plugins

---

* plugin 설치
/# bundle install --without development test
/# rake redmine:plugins:migrate RAILS_ENV=production

Sonarqube Max_Map_Count

# wsl -d docker-desktop
# sysctl -w vm.max_map_count=262144
# vi /etc/security/limits.conf	//이걸로 안된다ㅜ
	> ec2-user	hard	nofile	65536
	  ec2-user	soft	nofile	65536
	  ec2-user	hard	nproc	65536
	  ec2-user	soft	nproc	65536

용량 확인

docker system df

'Docker' 카테고리의 다른 글

Docker bind mount 경로 volume 으로 복사하기  (0) 2023.11.06
Docker Hub 이미지 업로드  (0) 2023.11.06
docker-compose.yml & backup script  (0) 2023.06.01
GitLab Docker 환경 구축  (0) 2021.08.12
Docker Root Directory 변경하기(Linux)  (0) 2021.08.09