三大前端框架比較,以表格說明如下
月份: 七月 2021
docker與Kubernete(k8s)特點
一.docker特點
- Isolation (與其它應用層服隔離)
- Lightweight (輕型)
- Simplicity (簡單)
- Workflow (工作流程)
- Community (社群)
二.Kubernete(k8s)特點
- Automatic binpacking (自動打包) & delivery (自動佈署)
- Horizontal scaling (自動或手動)
- Automated rollouts & rollback (可處理升版及降版)
- Service monitor (監控服務)
- Self-healing (自我修復)
- Service discovery (服務發現) & LoadBalance (負載平衡)
- 100% open source, written in GO (發源,以GO語言撰寫)
用docker-compose安裝gitlab及設定(於ubuntu上)
1.安裝docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
或
sudo apt install docker-compose
git config –global http.sslverify “false" (遇到下載時憑證問題可使用此指令)
2.安裝gitlab
我主要是參考https://blog.toright.com/posts/5831/%E4%B8%89%E7%A7%92%E6%95%99%E4%BD%A0%E7%94%A8-docker-%E5%AE%89%E8%A3%9D-gitlab.html此篇文章
1)於ubuntu上建目錄, ex./home/ubuntu/gitlab
2)於1)目錄上建立docker-compose.yml,內容如下
version: '3.2'
services:
gitlab:
image: gitlab/gitlab-ce:latest
hostname: gitlab.example.com
container_name: gitlab
restart: always
volumes:
- /gitlab/config:/etc/gitlab
- /gitlab/logs:/var/log/gitlab
- /gitlab/data:/var/opt/gitlab
ports:
- 443:443
- 80:80
networks:
- devel-net
networks:
devel-net:
3)啟動docker container
docker-compose up -d 或
docker-compose -f “docker-compose.yml" up -d
3.執行網頁
依網路上說http://localhost可用root密碼登入,
但我登不進去,最後就直接進入gitlab container改root密碼:
docker exec -it gitlab bash
進入container後
gitlab-rails console -e production
進入rail畫面
user = User.where(id: 1).first
user.password = ‘your secret’
user.password_confirmation = ‘your secret’
user.save
exit

註1: docker-compose出現未認證的解法-匯入網站憑證檔至系統
1) 取得憑證檔
openssl s_client -showcerts -connect [registry_address]:[registry_port] < /dev/null | sed -ne ‘/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p’ > ca.crt
2) 複製憑證檔至 /usr/local/share/ca-certificates/
sudo cp ca.crt /usr/local/share/ca-certificates/
3) 執行update-ca-certificates
sudo update-ca-certificates
4) 重啟docker服務
sudo service docker restart
參考來源: https://stackoverflow.com/questions/50768317/docker-pull-certificate-signed-by-unknown-authority
確認angular專案使用的套件版本是否需更新,並執行更版安裝
確認angular專案使用的套件版本是否需更新,並執行更版安裝,方法如下
1.安裝npm套件npm-check-updates
npm i -g npm-check-updates
2.確認angular專案套件版本(執行npm-check-updates),且會更新該專案的package.json
ncu -u
3.更新專案使用的套件
npm install
Docker指令複習(以ubuntu為例)
練習docker指令的網站 https://labs.play-with-docker.com/
1.安裝docker
su (以root user執行)
apt-get update => 若執行出現憑證問題,請改此指令試看看 sudo apt-get update –allow-unauthenticated –allow-insecure-repositories
apt-get -y install apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg| gpg –dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg –dearmor | sudo tee /usr/share/keyrings/docker-ce-archive-keyring.gpg > /dev/null
curl -fsSL https://download.docker.com/linux/ubuntu/gpg| gpg –dearmor -o /etc/apt/trusted.gpg.d/docker-ce-archive-keyring.gpg
echo “deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
echo “deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
=> 若上述指令執行仍有問題,建議在deb […]加上trusted=yes allow-insecure=yes allow-weak=yes allow-downgrade-to-insecure=yes check-valid-until=no試看看
apt-get update && apt-get install docker-ce docker-ce-cli containerd.io
exit
sudo usermod -aG docker $USER (非root使用者使用docker不用sudo指令)
docker –version (查看docker版本)
2.相關指令整理-image相關
- 搜尋github上有那些images: docker search httpd (搜尋github上image為httpd者)
- 列出本機的image檔: docker images
- 取得image(由github拉到本機): docker pull httpd:alpine
- 移除local image: docker rmi httpd:alpine
- 更改image名稱: docker tag alpine:1 myrepo/alpine:3.4
- 登入registry: docker login my.registry.com:8080
- 將image上傳至registry: docker push myrepo/myapp:01
- 打包多個image為tar檔: docker save -o images.tar nginx:latest gitlab:latest 或 docker save nginx:latest gitlab:latest > images.tar
- 載入tar檔為image檔: docker load -i images.tar 或 docker image import images.tar alpine-new
- 將container存成image檔: docker export -o images.tar gitlab(container名稱) 或 docker container export gitlab > images.tar
- 查看image歷史記錄: docker image history alpine-c1
3.相關指令整理- container相關
- 列出執行中的container: docker ps或docker container ls -a
- 列出執行中+停用的container: docker ps -a
- 執行container: docker run –rm hello-world (執行hello world container)
- 執行container並做port mapping: docker run -d -p 8080:80 httpd1 httpd:alpine (於host server用8080連線至container內的80 port)
- 查看container詳細內容: docker inspect nginx
- 停止container: docker stop nginx
- 啟動container: docker start nginx
- 刪除一個正在執行的container: docker kill nginx
- 刪除已停止的container: docker rm
'docker ps -a -q --filter status=exited' - 刪除運行中的所有container: docker rm -f
'docker ps ' - 刪除運所有的container: docker rm -f
'docker ps -aq' - 進入container執行指令:
docker exec -it httpd2 bash
進入httpd2 container後執行
ps -ef
ip a
exit
4.相關指令整理- volume相關
- mount volume
echo “Hello, I’m Grace!" > index.html
docker run -d –name httpd2 -v $PWD/index.html:/usr/local/apache2/htdocs/index.html -p 81:80 httpd:alpine
docker exec httpd2 df -h (查看volume設定)
docker ps
5.查看container logs
- docker logs [container name]
- docker logs -f [container name]
6.由Dockerfile建立image
1) Dockerfile內容
FROM nginx:alpine
LABEL maintainer="Docker Maintainers huang.yahui.grace@gmail.com"
ENV IMAGE_VERSION 1.0.0
ENV RELEASE 1
RUN set -x \
apk add vim
COPY index.html /usr/share/nginx/html/index.html
2) 建置image: docker build . -t myhttpd:v1
7.網路相關
- 建立一個overlay網路及subnet: docker network create –subnet 10.1.0.0/24 –gateway 10.1.0.1 -d overlay mynet
- 使用host網路(效能比預設的docker bridge好): docker run -d –name web1 –network host tomcat

註1: 另一種安裝指令
sudo apt-get install docker.io
service docker status
sudo usermod -aG docker gtwang
docker version
註2: 安裝docker-compose
sudo apt install docker-compose
git config –global http.sslverify “false" (遇到下載時憑證問題可使用此指令)
註3: docker-compose出現未認證的解法-匯入網站憑證檔至系統
1) 取得憑證檔
openssl s_client -showcerts -connect [registry_address]:[registry_port] < /dev/null | sed -ne ‘/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p’ > ca.crt
2) 複製憑證檔至 /usr/local/share/ca-certificates/
sudo cp ca.crt /usr/local/share/ca-certificates/
3) 執行update-ca-certificates
sudo update-ca-certificates
4) 重啟docker服務
sudo service docker restart
參考來源: https://stackoverflow.com/questions/50768317/docker-pull-certificate-signed-by-unknown-authority
在Docker內的gitlab container如何使用Host主機的sendmail服務寄送信件(email)
因為還在試gitlab的功能,建在ubuntu上的Docker內的gitlab container要寄信,gitlab document有很詳細的說明https://docs.gitlab.com/omnibus/settings/smtp.html,但因在公司除了透過公司的exchange server外(但要在exchange上設定,還在測試階段,故不想動到此部份),因此試了很久於gitlab container設定,終於成功了,說明大約如下
1.docker啟動時需先傳入docker host ip值
(1)取得docker host ip
echo $(ifconfig | grep -E “([0-9]{1,3}.){3}[0-9]{1,3}" | grep -v 127.0.0.1 | awk ‘{ print $2 }’ | cut -f2 -d: | head -n1)
Ex.172.18.0.1
(2)啟動gitlab docker,有用docker 或 docker-compose
a.用docker傳送docker host ip
docker run -it –name gitlab –add-host=’dockerhost:172.18.0.1′ gitlab/gitlab-ce:latest
b.用docker-compose傳送docker host ip
b-1)修改docker-compose.yml
增加
extra_hosts:
– “dockerhost: 172.18.0.1″

(3)查看gitlab的/etc/hosts有加上dockerhost

2.host server的sendmail要設定接受gitlab docker container的信做寄送
(1)開啟 sendmail 25 port 可連線 (以root登入)
vi /etc/mail/sendmail.cf
#註解以下
#O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA
#新增以下
O DaemonPortOptions=Port=smtp,Addr=0.0.0.0, Name=MTA
service sendmail restart (重啟sendmail服務)
telnet localhost 25 (確認是否已開啟25 port)
(2)修改允許relay(轉信) 清單
vi /etc/mail/access
最後一行加上
Connect:172.10 RELAY
3.gitlab container設定透過host的sendmail寄信
(1)調整container內的gitlab.rb設定檔
a.設定smtp
gitlab_rails[‘smtp_enable’] = true
gitlab_rails[‘smtp_address’] = “dockerhost"
gitlab_rails[‘smtp_port’] = 25
#gitlab_rails[‘smtp_user_name’] = “"
#gitlab_rails[‘smtp_password’] = “"
gitlab_rails[‘smtp_domain’] = “dockerhost"
#gitlab_rails[‘smtp_authentication’] = “none"
gitlab_rails[‘smtp_openssl_verify_mode’] = ‘none’
gitlab_rails[‘smtp_enable_starttls_auto’] = false
gitlab_rails[‘smtp_tls’] = false
gitlab_rails[‘smtp_ssl’] = false
gitlab_rails[‘smtp_force_ssl’] = false
#gitlab_rails[‘smtp_pool’] = false
b.設定寄件者
gitlab_rails[‘gitlab_email_from’] = ‘grace@xxx.com.tw’
gitlab_rails[‘gitlab_email_display_name’] = ‘Grace’
c.設定gitlab admin寄件者
alertmanager[‘admin_email’] = ‘grace@xxx.com.tw’
(2)gitlab container重新讀取gitlab.rb
docker exec -it gitlab bash
gitlab-ctl reconfigure
補充1: host主機sendmail手動寄測試機
telnet localhost 25
ehlo localhost (跟主機打招呼)
mail from: “Grace"<grace@mail.xxx.com.tw> (寄件者)
rcpt to: <kevin@mail.xxx.com.tw> (收件者)
data (要開始寫信了)
This is a test (信件內容)
. (結束)
quit (離開)
補充2: gitlab container手動寄測試信
docker exec -it gitlab bash
telnet [docker host ip] 25 (有成功表示F/W有通,才往下執行)
gitlab-rails console
Notify.test_email(“grace@xxxx.com.tw", “Title", “Message").deliver_now
如何由Host Server連到VirtalBox VM上的ssh、網頁
如何由Host Server連到VirtalBox VM上的ssh、網頁困擾了我幾天,大體有兩種方式,
一種是比較簡單的port mapping(可參考此篇https://myapollo.com.tw/zh-tw/virtualbox-port-forwarding/),但是每開放一個port都要做設定,而且是跟Host的port不能衝突,這不是我想要的,因為我只是要測試這個VM上的主機功能是否正常,不考慮安全性,故找到另一種方式是將VM的port全對Host主機開放,步驟如下(以VM裝ubuntu為例)
1.VM的F/W關閉
sudo systemctl stop ufw
sudo systemctl status ufw (檢查F/W是否關閉)
sudo systemctl disable ufw (此設定重開機之後也有效)
2.設定Host網卡
DHCP記得勾選不啟用,否則每次重開機後IP會變
3.設定VM網卡
4.此設定Host主機連至VM主機,用192.168.208.3,而VM主機連Host主機則用192.168.208.1
VirtualBox加掛硬碟
重開VirtualBox的ubuntu VM有提示硬碟空間不足,
那就來加些硬碟空間吧!
1.增加新硬碟: 記得先將VM關機哦
由VirtualBox的VM => 設定 => Storage(存放裝置) => SATA控制器
=> 右鍵後選擇"硬碟" => 建立"硬碟" => 選取新建立之硬碟
2.啟動VM,並以root執行以下指令
(1)查看系統的磁碟空間
sudo fdisk -l
=> 看到新加的虛擬硬碟,應該為Disk /dev/sdb
(2)將新硬碟建分割槽
fdisk /dev/sdb
command (m for help):m (輸入m為help)
command (m for help):n (增加新分割槽)
p (選擇基本分割槽, p為primary)
Partition number(1-4):1 (建立分割槽數量)
First cylinder (1-15908,default 1):Enter
command (m for help):w (寫入並離開此指令)
(3)格式化磁碟分割槽
sudo mkfs.ext4 /dev/sdb1 (用ext4格式對/dev/sdb1格式化)
(4)掛載分割槽
sudo mkdir /newdir (建立新掛載點)
sudo mount -t ext4 /dev/sdb1 /work (將新分割槽掛載到/newdir目錄下)
df -h (檢視掛載結果)
=> 可以看到新加的硬碟:/dev/sdb1對應至路徑/newdir
3.設定開機自動掛載 (用root執行)
vi /etc/fstab
在最後一行加入:/dev/sdb1 /newdir ext4 errors=remount-ro 0 1
執行shutdown -r重開機後
df -h (檢視掛載結果)
=> 可以看到新加的硬碟:/dev/sdb1對應至路徑/newdir
註: GUI工具可使用Gparted
安裝方式(用root) apt-get install gparted
一開始以為沒辦法將/目錄由19.5G擴充至39.5G,
後來發現是要先將檔案系統的extended先做擴充就可以了








