MathJax

MathJax-2

MathJax-3

Google Code Prettify

置頂入手筆記

EnterproseDB Quickstart — 快速入門筆記

由於考慮採用 EnterpriseDB 或是直接用 PostgreSQL 的人,通常需要一些入手的資料。這邊紀錄便提供相關快速上手的簡單筆記 ~ 這篇筆記以 資料庫安裝完畢後的快速使用 為目標,基本紀錄登入使用的範例:

2019年4月4日 星期四

CentOS 7.x 上面的 LXC 測試環境 (7) - 在 LXC Container 裡面執行 Docker CE Engine(Container in Container)

理想上,要演練 docker Swarm 或是 K8S 的功能,通常會需要多個 VM 來測試叢集,不過這樣自己的電腦都會卡卡的。。。有了 LXC,就會想嘗試替代多個 VM,來設置這樣的「多節點」環境,讓電腦更輕鬆的運作這樣的叢集~

但是。。目前的現狀(LXC 2 / LXD 3 以及 Docker 18.09),Docker CE Engine 雖然可以運作,但是  Docker Swarm 部份,會嘗試載入 Kernel Module,以提供正常的 Overlay 網路功能,目前這一部份在 LXC/LXD 裡面還是有些狀況。。。

不過,這邊把目前作的到的,在 LXC 裡面設置 Docker Engine 的筆記,一樣紀錄起來。至於 Docker Swarm,可能要看看以後有沒有機會改善了。。

[Update 2019/9/7] LXD 裡面確認可以運作 Docker Swarm 叢集了,筆記在這

原則上,只要注意這兩點就好:
 - 在 LXC 這一層,不要使用容器專用的檔案系統 aufs
 - 需要作一點設定,以達成 Container in Container 功能
此外,Unprivileged LXC Container 也是支援的~不過這是正式環境在考量的進階用法,但這邊只需要作演練,並不打算弄成正式環境,因此很多東西不會怎麼踩到。這邊就針對最主要的 Container in container 的狀況紀錄一下

延續之前的內容,一樣要先產生一個 Container,輸出過程就略過
[root@lxc-lab ~]# ./addcontainer.sh docker-env
[root@lxc-lab ~]# ./startlab.sh docker-env
[root@lxc-lab ~]# ./envlogin.sh docker-env

安裝 docker 的 Repository,輸出過程一樣略過,只列一下相依套件清單
[root@docker-env ~]# curl https://download.docker.com/linux/centos/docker-ce.repo --output /etc/yum.repos.d/docker-ce.repo
。。略
[root@docker-env ~]# yum install -y docker-ce
。。略
Dependencies Resolved

================================================================================================
 Package                      Arch        Version                   Repository             Size
================================================================================================
Installing:
 docker-ce                    x86_64      3:18.09.3-3.el7           docker-ce-stable       19 M
Installing for dependencies:
 audit-libs-python            x86_64      2.8.4-4.el7               base                   76 k
 checkpolicy                  x86_64      2.5-8.el7                 base                  295 k
 container-selinux            noarch      2:2.74-1.el7              extras                 38 k
 containerd.io                x86_64      1.2.4-3.1.el7             docker-ce-stable       22 M
 docker-ce-cli                x86_64      1:18.09.3-3.el7           docker-ce-stable       14 M
 libcgroup                    x86_64      0.41-20.el7               base                   66 k
 libseccomp                   x86_64      2.3.1-3.el7               base                   56 k
 libselinux-python            x86_64      2.5-14.1.el7              base                  235 k
 libsemanage-python           x86_64      2.5-14.el7                base                  113 k
 policycoreutils-python       x86_64      2.5-29.el7_6.1            updates               456 k
 python-IPy                   noarch      0.75-6.el7                base                   32 k
 selinux-policy               noarch      3.13.1-229.el7_6.9        updates               483 k
 selinux-policy-targeted      noarch      3.13.1-229.el7_6.9        updates               6.9 M
 setools-libs                 x86_64      3.3.8-4.el7               base                  620 k

Transaction Summary
================================================================================================
Install  1 Package (+14 Dependent packages)

Total download size: 64 M
Installed size: 261 M
。。略

使用 SystemD 指令啟動 docker 服務,然後拉一個 docker Image 來初始化一個 Container 來試試
[root@docker-env ~]# service docker start
[root@docker-env ~]# docker pull postgres:11-alpine
11-alpine: Pulling from library/postgres
8e402f1a9c57: Pull complete 
12541ba6b234: Pull complete 
005e29442040: Pull complete 
ba9fa9b0c10f: Pull complete 
12d8714bca48: Pull complete 
020e0e7d0d5c: Pull complete 
97b03e8f6d92: Pull complete 
292bfe64b4c8: Pull complete 
d400246b1173: Pull complete 
Digest: sha256:063ae33afa28eee96cc7f7858e4e405a650dfdba7d5cad24781c8c7cee39dfc2
Status: Downloaded newer image for postgres:11-alpine
[root@docker-env ~]# 
[root@docker-env ~]# docker run --name testpg -d postgres:11-alpine
ffe6e1871d00f90af6bb08ebcc95126faa1e417f41a994b4b3da10b712733ab4
docker: Error response from daemon: OCI runtime create failed: container_linux.go:344: starting container process caused "apply caps: operation not permitted": unknown.
[root@docker-env ~]# 

最後要 docker run 時會發現有狀況。尋找資料之後,要在 LXC Config 增加幾個參數(要先停止這個 Container 之才設定)
[root@lxc-lab ~]# ./stopenv.sh
[root@lxc-lab ~]# cat << EOF >> /var/lib/lxc/docker-env/config
## For running docker inside
lxc.aa_profile = unconfined
lxc.cgroup.devices.allow = a
lxc.cap.drop =

lxc.hook.mount =
lxc.hook.post-stop =
EOF
[root@lxc-lab ~]# 

設定完之後,就可以重新啟動這個 LXC Container,並且可以正常運作~
[root@docker-env ~]# service docker start
[root@docker-env ~]# docker start testpg
[root@docker-env ~]# docker exec -it testpg /bin/bash
bash-4.4# psql -U postgres
psql (11.2)
Type "help" for help.

postgres=# select version();
                                        version                                        
---------------------------------------------------------------------------------------
 PostgreSQL 11.2 on x86_64-pc-linux-musl, compiled by gcc (Alpine 8.2.0) 8.2.0, 64-bit
(1 row)

postgres=# \q
bash-4.4# 
bash-4.4# free -m
             total       used       free     shared    buffers     cached
Mem:          1495       1406         88          0          0        974
-/+ buffers/cache:        432       1062
Swap:         2050          0       2050
bash-4.4# 

大功告成。

參考資料

沒有留言:

張貼留言