현재 개발서버에 작동하고 있는 docker 를 이기종으로 이동할때 작업순서를 기록해본다.
목적
컨테이너 ID 80874d8f6c62 을 이미지로 만들어서 이기종에서 작동
그렇다면 80874d8f6c62 컨테이너 안에는 어떤게 설치되어 있을까 ?
- gitlab(gitlab-runner) 80->80/tcp
- 관리도구 9285->8085 (/var/www/html) gitlab-runner 적용
- 프로젝트 9286->8086 (/var/www/html2) gitlab-runner 적용
. 개발서버(사무실) docker image 만들기
[@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
80874d8f6c62 ubuntu_in_apm2:0.91 "/sbin/init" 7 weeks ago Exited (137) 38 seconds ago ubuntu_in_apm2_1
7de99794a356 unjin_jdk7_tomcat7 "/sbin/init" 2 months ago Exited (137) 2 months ago ujin2
ca8f9c003e12 ubuntu_in_apm2:0.91 "/sbin/init" 4 months ago Exited (137) 7 weeks ago ubuntu_in_apm2
d41e0db21ad5 ubuntu_cofor "/sbin/init" 4 months ago Exited (137) 2 months ago ubuntu_in_apm
52207c49f5ff gitlab/gitlab-runner:latest "/usr/bin/dumb-init …" 4 months ago Exited (0) 7 weeks ago gitlab-runner
72c9256ece57 apm_each_apache2 "apachectl -D FOREGR…" 4 months ago Exited (137) 7 weeks ago apache2
3120c8eec3ab mysql:8.0 "docker-entrypoint.s…" 4 months ago Exited (255) 2 months ago 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
c9e9288ebef8 gitlab/gitlab-ce:latest "/assets/wrapper" 4 months ago Exited (137) 7 weeks ago gitlab
c74363afaa94 nh_easyocr "/bin/bash" 19 months ago Exited (255) 16 months ago python3
cb84b2395a4c unjin_jdk7_tomcat7 "/bin/bash" 19 months ago Exited (137) 2 months ago ujin
341226720e35 05b05ad7060a "/bin/bash" 19 months ago Exited (0) 2 months ago tomcat9
42f18d859ea8 wwyocr:kdh "/bin/bash" 19 months ago Exited (255) 16 months ago wwyOcr
a82f5c258527 centos:7 "/bin/bash" 19 months ago Exited (0) 19 months ago determined_maxwell
d88e100ff6df ubuntu:20.04 "/bin/bash" 20 months ago Exited (0) 20 months ago nice_curran
# 컨테이너 stop
[@localhost ~]# docker stop 80874d8f6c62
[@localhost ~]# docker commit 80874d8f6c62 ubuntu_in_apm2:0.94
ubuntu_in_apm2:0.94 버전 기능
- gitlab (gitlab-runner)
- - coforward_manager CI/CD 완료
- - vue_project CI/CD 완료
- 관리도구 (/var/www/html) - 프로젝트 툴
- 프로젝트 (/var/www/html2) - vue_project(KB) vite 번들러
이미지로 만들어졌으면 확인
[@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu_in_apm2 0.94 1f118fc3386a 2 minutes ago 11.6GB
ubuntu_in_apm2 0.93 afa317f15c27 About a minute ago 11.2GB
ubuntu_in_apm2 0.92 c65ae5b98f87 7 weeks ago 6.16GB
ubuntu_in_apm2 0.91 39c6461d9c57 4 months ago 5.49GB
방금 만들어진 ubuntu_in_apm2:0.94 로 컨테이너 만들어서 gitlab 저장소 정상적으로 나오는지 확인후
이기종으로 이미지 파일 넘겨야함 (why? gitlab 정상작동 확인후 하려고)
# 컨테이너 생성
$ docker run -it -d -p 80:80 -p 9285:8085 -p 9286:8086 --privileged=true --name ubuntu_in_apm2 ubuntu_in_apm2:0.94 /sbin/init
이미지를 파일로 추출 -o 옵션 사용
$ docker save -o ubuntu_in_apm2_0.94.tar.gz ubuntu_in_apm2:0.94
우분투:18 작업
. 도커설치
##### 시스템을 최신으로 하기 위한 업데이트를 한다.
sudo apt update
##### 사전 설치를 한다.
sudo apt install apt-transport-https ca-certificates curl software-properties-common
##### Docker repository key를 Add 한다.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
##### Docker repository를 Add 한다.
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
##### 시스템을 최신으로 하기 위한 다시 업데이트를 한다.
sudo apt update
ubuntu@test:~$ apt-cache policy docker-ce
docker-ce:
설치: (없음) ### 설치가 되어 있을 경우 설치 버전이 출력이 된다.
후보: 5:20.10.2~3-0~ubuntu-bionic
버전 테이블:
5:20.10.2~3-0~ubuntu-bionic 500
500 https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
5:20.10.1~3-0~ubuntu-bionic 500
500 https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
~ (생략)
500 https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
18.06.0~ce~3-0~ubuntu 500
500 https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
18.03.1~ce~3-0~ubuntu 500
500 https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
## 도커 설치
sudo apt install docker-ce
ubuntu@test:~$ apt-cache policy docker-ce
docker-ce:
설치: 5:20.10.2~3-0~ubuntu-bionic ##### docker가 설치된 버전
후보: 5:20.10.2~3-0~ubuntu-bionic
버전 테이블:
*** 5:20.10.2~3-0~ubuntu-bionic 500
500 https://download.docker.com/l
Dcoker version 확인
usage : sudo docker version
ubuntu@test:~$ sudo docker version
추출된 파일 우분투:18 서버에서 다운
$ cd /usr/local/ncftp/bin
$ ./ncftp -u co 220.72.212.xxx
추출한 이미지 로드
@cof:/home/cofo/docker# docker load -i ubuntu_in_apm2_0.94.tar.gz
5cc744ef0880: Loading layer [==================================================>] 6.587GB/6.587GB
Loaded image: ubuntu_in_apm2:0.94
@cof:/home/cofo/docker# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu_in_apm2 0.94 1f118fc3386a 3 hours ago 11.6GB
ubuntu_in_apm2 0.93 afa317f15c27 2 days ago 11.2GB
컨테이너 생성
$ docker run -it -d -p 80:80 -p 9285:8085 -p 9286:8086 --privileged=true --name ubuntu_in_apm2 ubuntu_in_apm2:0.94 /sbin/init
2d0877a633d678fe165d9d5cc49a11b55d364cd482df5c0953723c155634f90f
docker: Error response from daemon: driver failed programming external connectivity on endpoint ubuntu_in_apm2 (70157bf51a4dd7dae594de12ba99cdb81ea0f81cb0e6e3eff1be2da49b16514d): Error starting userland proxy: listen tcp4 0.0.0.0:80: bind: address already in use.
80 port 를 이미 사용하고 있다.
# 열려있는 port 확인
# netstat -nlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 702/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1061/sshd
tcp 0 0 0.0.0.0:8188 0.0.0.0:* LISTEN 8838/janus
tcp 0 0 0.0.0.0:5444 0.0.0.0:* LISTEN 1487/netplan
tcp 0 0 0.0.0.0:2983 0.0.0.0:* LISTEN 1487/netplan
tcp6 0 0 :::80 :::* LISTEN 1081/apache2
tcp6 0 0 :::7889 :::* LISTEN 8838/janus
tcp6 0 0 :::21 :::* LISTEN 2562/vsftpd
tcp6 0 0 :::22 :::* LISTEN 1061/sshd
tcp6 0 0 :::8088 :::* LISTEN 8838/janus
tcp6 0 0 :::8089 :::* LISTEN 8838/janus
tcp6 0 0 :::443 :::* LISTEN 1081/apache2
udp 0 0 127.0.0.53:53 0.0.0.0:* 702/systemd-resolve
raw 0 0 0.0.0.0:132 0.0.0.0:* 7 8838/janus
raw6 0 0 :::132 :::* 7 8838/janus
# apache2 stop
# service apache2 restart
# netstat -nlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 702/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1061/sshd
tcp 0 0 0.0.0.0:8188 0.0.0.0:* LISTEN 8838/janus
tcp 0 0 0.0.0.0:5444 0.0.0.0:* LISTEN 1487/netplan
tcp 0 0 0.0.0.0:2983 0.0.0.0:* LISTEN 1487/netplan
tcp6 0 0 :::7889 :::* LISTEN 8838/janus
tcp6 0 0 :::21 :::* LISTEN 2562/vsftpd
tcp6 0 0 :::22 :::* LISTEN 1061/sshd
tcp6 0 0 :::8088 :::* LISTEN 8838/janus
tcp6 0 0 :::8089 :::* LISTEN 8838/janus
udp 0 0 127.0.0.53:53 0.0.0.0:* 702/systemd-resolve
raw 0 0 0.0.0.0:132 0.0.0.0:* 7 8838/janus
raw6 0 0 :::132 :::* 7 8838/janus
# 생성된 컨테이너 삭제
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2d0877a633d6 ubuntu_in_apm2:0.93 "/sbin/init" 4 minutes ago Created ubuntu_in_apm2
@cof:/home/cof/docker# docker rm 2d0877a633d6
2d0877a633d6
@cof:/home/cof/docker# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# 다시 컨테이너 생성
$ docker run -it -d -p 80:80 -p 9285:8085 -p 9286:8086 --privileged=true --name ubuntu_in_apm2 ubuntu_in_apm2:0.94 /sbin/init
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c1137a0df7fa ubuntu_in_apm2:0.94 "/sbin/init" 3 minutes ago Up 3 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 8081/tcp, 0.0.0.0:9285->8085/tcp, :::9285->8085/tcp, 0.0.0.0:9286->8086/tcp, :::9286->8086/tcp ubuntu_in_apm2
윈도우 도스창에서 ipconfig 확인하면 192. 로 시작하는 ip 있다.
192. 로 시작하는 ip를 사용한다.
웹브라우져 접속 테스트
- gitlab (http://192.168.0.5)
- 관리도구 (http://192.168.0.5:9285/)
- 프로젝트 (http://192.168.0.5:9286/)
gitlab 이 접속이 안된다.
로딩하는데 시간이 걸리수 있으니 10분정도 기다려 보자.
>>ㅑ ~~ 10분뒤에 정상적으로 로그인 된다.
그런데
git clone 하려고 하니 주소가 이전 주소(사무실 개발서버) 로 되어 있다.
gitlab 에서 ip 주소를 수동으로 변경해줘야 한다.
220.72.~~~. ==> 192.168.0.5
gitlab 주소를 변경하기 위해 컨테이너 접속
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c1137a0df7fa ubuntu_in_apm2:0.93 "/sbin/init" 17 minutes ago Up 17 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 8081/tcp, 0.0.0.0:9285->8085/tcp, :::9285->8085/tcp, 0.0.0.0:9286->8086/tcp, :::9286->8086/tcp ubuntu_in_apm2
# docker exec -it c1137a0df7fa bash
https://trytoso.tistory.com/1641
gitlab 로그인후
GitLab Instance / coforward_manager 프로젝트 클릭하면
Error: Gitaly is unavailable. Contact your administrator. 에러가 발생한다.
gitlab 재시작 해본다. 10분뒤 브라우져로 접속
$ gitlab-ctl restart
같은 오류 발생 (Error: Gitaly is unavailable. Contact your administrator.)
$ gitlab-ctl stop
$ gitlab-ctl start
10분뒤 브라우져 접속
안됨 (Error: Gitaly is unavailable. Contact your administrator.)
컨테이너 지우고 다시 컨테이너 생성해봄 > 안됨 (Error: Gitaly is unavailable. Contact your administrator.)
이전에 잘 되던 0.93 이미지로 컨테이너 생성해서 확인해봄
0.93 image 는 저장소 잘 나옴
0.94 image 지우고 다시 image 떠서 해봄
=> 이미지가 잘못떠진거 같음 잘됨..
시도해볼것
sudo systemctl status gitlab-gitaly
이 명령의 출력에 "Active: active (running)"이 표시되면 Gitaly 서비스가 실행되고 있습니다.
Gitaly 서비스가 실행되고 있지 않으면 다음 명령을 사용하여 시작합니다.
sudo systemctl start gitlab-gitaly
gitlab-runner ip 수정
$ gitlab-runner verify
# ip 변경
$ sed -i 's/220.72.212.247/192.168.0.5/g' /etc/gitlab-runner/config.toml
# $ vi /etc/gitlab-runner/config.toml
# gitlab-runner 재시작
$ gitlab-runner restart
관리도구 git 저장소 변경 (2군데)
- /var/www/html
- /var/www/html2
@c1137a0df7fa:~# cd /var/www/html
@c1137a0df7fa:/var/www/html# git remote -v
origin http://220.72.212./gitlab-instance-064db724/coforward_manager.git (fetch)
origin http://220.72.212./gitlab-instance-064db724/coforward_manager.git (push)
#기존 리포지토리 remote 제거
git remote remove origin
# 새 리포지토리 remote 추가
git remote add origin http://192.168.0.5/gitlab-instance-064db724/coforward_manager.git
# git pull
Username for 'http://192.168.0.5': root
Password for 'http://root@192.168.0.5':
git config credential.helper store
도커 컨테이너 에서 git pull origin master test (2군데)
- /var/www/html
- /var/www/html2
$ cd /var/www/html
$ chown gitlab-runner.gitlab-runner -R ./.git
$ ls -al (root 권한 있는지 확인)
$ su gitlab-runner
$ git pull origin master
id : root
passwd : access key
git clone / git push test
$ git clone http://192.168.0.5/gitlab-instance-064db724/coforward_manager.git
Username for 'http://192.168.0.5': root
Password for 'http://root@192.168.0.5': [accesskey 입력]
$ cd coforward_manager
$ vi login.php title 수정
$ git add .
$ git commit -m "ci/cd test"
$ git push
CI/CD 안되는것 같다 penging 나옴
gitlab-runner 추가할때 Register the runner with this URL: 입력하는 부분이 있느데 이부분의 ip 변경되면서 안되는것 같다.
http://192.168.0.5/
gitlab-runner ip 수정할수 있는 곳이 있는 지 찾아보자
$ gitlab-runner verify
# ip 변경
$ vi /etc/gitlab-runner/config.toml
# gitlab-runner 재시작
$ gitlab-runner restart
# 그래도 옛날 ip 찾아감 (git push CD/CI)
# gitlab restart 후 다시 접속후 시도
# gitlab-ctl restart
# 안됨...
# ip 변경
@c1137a0df7fa:/home/gitlab-runner# vi .git-credentials
220.x..x => 192.168.0.5
gitlab-runner 등록
root@c1137a0df7fa:/etc/gitlab-runner# gitlab-runner register
Runtime platform arch=amd64 os=linux pid=15173 revision=4d1ca121 version=15.8.2
Running in system-mode.
Enter the GitLab instance URL (for example, https://gitlab.com/):
http://192.168.0.5/
Enter the registration token:
GR1348941VJyo8CYTbzN_sY2Bywt3
Enter a description for the runner:
[c1137a0df7fa]: Deploy Runner
Enter tags for the runner (comma-separated):
deploy
Enter optional maintenance note for the runner:
docker gitlab runner
WARNING: Support for registration tokens and runner parameters in the 'register' command has been deprecated in GitLab Runner 15.6 and will be replaced with support for authentication tokens. For more information, see https://gitlab.com/gitlab-org/gitlab/-/issues/380872
Registering runner... succeeded runner=GR1348941VJyo8CYT
Enter an executor: docker, shell, docker+machine, instance, kubernetes, custom, docker-ssh, parallels, ssh, virtualbox, docker-ssh+machine:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
Configuration (with the authentication token) was saved in "/etc/gitlab-runner/config.toml"
gitlab-runner 지우고 다시 등록해도 fail
왜 220 으로 접속하는지 알았다
/var/www/html 의 git remote -v 하면 이전 서버를 보고 있다
root@c1137a0df7fa:/var/www/html# git remote -v
origin http://220.72.212./gitlab-instance-064db724/coforward_manager.git (fetch)
origin http://220.72.212./gitlab-instance-064db724/coforward_manager.git (push)
#기존 리포지토리 remote 제거
git remote remove origin
# 새 리포지토리 remote 추가
git remote add origin http://192.168.0.5/gitlab-instance-064db724/coforward_manager.git
# git pull
Username for 'http://192.168.0.5': root
Password for 'http://root@192.168.0.5':
git config credential.helper store
gitlab 사용자 추가하는 방법
- gitlab root 접속
- Admin > Overview > Users > New User 버튼 클릭
- Edit 클릭후 초기 접속 비밀번호 변경 36~~~
- vue_project > member invite
- vue_project > setting > access token 설정
- install / 관리도구 member invite
https://trytoso.tistory.com/1576
vue_project 자동 빌드(npm run bule) 하기 위해서는 도커에 node.js 설치되어 있어야 한다.
https://trytoso.tistory.com/1679
배포할때 gitlab-runner 계정으로 배포한다.
그런데
npm run build 할때 권한 오류가 계속 발생.
drwxr-xr-x 7 root root 4.0K 7월 17 16:46 dist
해 결 안됨
docker 컨테이너를 stop 한후 다시 시작 하니 정상적으로 됨.
또 같은 현상 나타남..
id 확인하면
uid=993(gitlab-runner) gid=993(gitlab-runner) 그룹들=993(gitlab-runner),27(sudo)
이렇게 sudo 나와야 하는데 안나옴..
$ id && pwd && git config --list
uid=993(gitlab-runner) gid=993(gitlab-runner) 그룹들=993(gitlab-runner)
/var/www/html2
user.email=you@example.com
user.name=내 이름
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.url=http://220.72.212.247/gitlab-instance-064db724/vue_project.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
credential.helper=store
$ ls -alh
합계 294M
drwxr-xr-x 1 gitlab-runner gitlab-runner 4.0K 7월 20 10:59 .
drwxr-xr-x 1 root root 4.0K 7월 13 16:02 ..
drwxr-xr-x 1 gitlab-runner gitlab-runner 4.0K 7월 20 10:59 .git
-rw-rw-r-- 1 gitlab-runner gitlab-runner 302 7월 19 14:00 .gitignore
-rw-rw-r-- 1 gitlab-runner gitlab-runner 846 7월 20 10:59 .gitlab-ci.yml
-rw-rw-r-- 1 gitlab-runner gitlab-runner 12 7월 20 10:59 11.php
-rw-rw-r-- 1 gitlab-runner gitlab-runner 24 7월 20 10:59 22.php
-rw-rw-r-- 1 gitlab-runner gitlab-runner 2.1K 7월 19 16:20 README.md
drwxr-xr-x 7 root root 4.0K 7월 17 16:46 dist
-rw-rw-r-- 1 gitlab-runner gitlab-runner 2.3K 7월 19 10:45 gitlog.php
-rw-r--r-- 1 gitlab-runner gitlab-runner 333 7월 13 16:01 index.html
drwxrwxr-x 344 gitlab-runner gitlab-runner 12K 7월 13 16:24 node_modules
drwxr-xr-x 344 gitlab-runner gitlab-runner 12K 7월 13 16:01 node_modules_window
-rw-r--r-- 1 gitlab-runner gitlab-runner 196K 7월 13 16:24 package-lock.json
-rw-r--r-- 1 gitlab-runner gitlab-runner 995 7월 13 16:01 package.json
drwxr-xr-x 6 gitlab-runner gitlab-runner 4.0K 7월 13 16:01 public
drwxr-xr-x 1 gitlab-runner gitlab-runner 4.0K 7월 19 10:45 src
-rw-r--r-- 1 gitlab-runner gitlab-runner 1.7K 7월 13 16:01 vite.config.js
-rw-rw-r-- 1 gitlab-runner gitlab-runner 23M 7월 13 15:59 리눅스용_vue_project_20230713.tar.gz
-rw-r--r-- 1 gitlab-runner gitlab-runner 272M 7월 13 16:02 윈도우용_vue_project_20230713.zip
마지막 방법 gitlab-runner 를 다시 생성한다.
gitlab-runner 다시 생성하니 잘 된다. 흐...
혹시 아래와 같은 오류 발생시 CI/CD 에서 발생 할때 해결방법
fatal: could not read Username for 'http://192.168.0.15' : 그런 장치 혹은 주소가 없음
/var/www/html 또는 /var/www/html2
ls -al 하면 root 권한으로 되어 있는 부분을 gitlab-runner 권한으로 바꿔주면 CI/CD 모두 잘된다.
대부분 .git 폴더 가 root 권한으로 되어 있다.
'인프라' 카테고리의 다른 글
[가마] 센서 데이터를 java 로 받을때 문제점 빅엔디안/리틀엔디안 (0) | 2023.07.14 |
---|---|
우분투 ll alias 추가 (0) | 2023.07.07 |
docker 포트포워딩 추가 또는 수정 방법 (0) | 2023.02.15 |
gitlab 도메인 설정 및 재시작 (0) | 2023.02.14 |
docker Dockerfile 이용한 ubuntu + APM + gitlab + gitlab-runner + git 설정 (0) | 2023.02.10 |