顯示具有 電腦資訊::系統::Ubuntu 標籤的文章。 顯示所有文章
顯示具有 電腦資訊::系統::Ubuntu 標籤的文章。 顯示所有文章

2024年7月14日

在Podman中,從Container內連線到Host的Port

在Podman中,大部份的情況是將Container的Port暴露給Host,由Host連線進Container中的服務,可以簡單用 --port 8080:80 的參數來將Container的 80 port 服務開在Host的 8080 port上。

但如果要從Container中連線到Host就沒有這麼容易了,目前找到有兩種方法

1.  

--network host

如果使用這個方法,在Container裡可以直接使用localhost來連線Host的所有Port,Host也會將來自Container的連線看成是localhost發出的。

如果Host上有服務會因為來源IP不同而有不同行為的話就要注意安全性問題,像是PostgreSQL預設如果從localhost連線就不需要密碼


2.

--network slirp4netns:allow_host_loopback=true

使用這個方法,Podman會在Container的/etc/hosts中加入類似以下內容

192.168.0.2     host.containers.internal host.docker.internal

在Container中就可以使用 host.containers.internal 或 host.docker.internal 來連線到Host,而Host則會把這些連線當作是外部來的連線處理
 

在Podman中,記憶體還很多卻OOM

之前使用container去build android時,發生明明記憶體還剩很多的情況下,卻直接報出OOM編譯失敗的情況,查了許久才發現是pids滿了。

在預設的情況下Podman會限制一個容器只能執行2048個process,而build android在-j 32的時候,有可能會突然跑到四千多個process,這時就會直接失敗

可以在run container時加上--pids-limit -1 來解除限制,例如:

$ podman run -it --rm --pids-limit -1 ubuntu:16.04


也可以修改 /etc/containers/containers.conf 中的 pids_limit 讓所有Container都套用相同設定

2024年3月16日

不用手動介入,在Linux下建立新User並設定密碼

export USERNAME="newuser"
export PASSWD="password"
useradd -m $USERNAME -s /bin/bash -g users
echo -e "$PASSWD\n$PASSWD" | passwd $USERNAME


2022年12月24日

su + systemctl = Failed to connect to bus: No medium found

最近想用 su - user 對修改 user 的 systemd Unit 的時候發現 systemctl --user 的所有操作都會回報 Failed to connect to bus: No medium found

 後來找到了這篇文章 只要將 su - user改為使用machinectl shell user@.host就可以正常使用 systemctl --user 了

 

2014年5月3日

PHP 在 Ubuntu 的過量 fuser 造成 cannot fork: Cannot allocate memory

最近使用 Ubuntu 11.10的時候常常在 bash 出現
cannot fork: Cannot allocate memory

看ps又發現兩萬多個 fuser 佔領了主機
查了一下發現有許多人有相同的問題,而且似乎只會在這個Ubuntu版本才會發生

這個問題的原因是php清理無用session的時候發生了些什麼,結果fuser就停在那邊佔著解法是將清理的指令改掉

將/etc/cron.d/php5改成
09,39 * * * *     root   [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete

很棒的,最近都沒再出現 cannot fork 了