๐ก Colima Container Runtime on macOS: Docker โ Executive Summary
Technical architectural analysis, practical configuration manifests, and deployment instructions for Colima Container Runtime on macOS: Docker.
Exec
bash
#ํ
ํ๋ฆฟ ์ง์
colima template
#๊ธฐ์กด vm ์ญ์ (ํ
ํ๋ฆฟ๋ด insecure๋ณ๊ฒฝ ์ ์ฉ)
colima delete
#์ ์ง
colima stop
#์์
colima start
#vm ์ ๊ทผ
colima ssh
Features
TLS Trust
required:
DockerDaemon fix-archived
bash
#mac์์ ์ํ
sudo mkdir -p /etc/docker/ssl
sudo mkdir -p /etc/docker/certs.d/$mydomain
ca=$(k get secret -n $ns $secret -o=jsonpath='{.data.ca\.crt}')
cert=$(k get secret -n $ns $secret -o=jsonpath='{.data.tls\.crt}')
key=$(k get secret -n $ns $secret -o=jsonpath='{.data.tls\.key}')
echo $ca | base64 -d | sudo tee /etc/docker/ssl/ca.pem
echo $cert | base64 -d | sudo tee /etc/docker/ssl/cert.pem
echo $key | base64 -d | sudo tee /etc/docker/ssl/key.pem
# ์ฌ์ค CA์ธ์ฆ์ ์ ๋ขฐ์์น
sudo cp /etc/docker/ssl/ca.pem /etc/docker/certs.d/$mydomain/ca.crt
colima delete
colima template
>>>
# SSL Mountpoint
mounts:
- location: /etc/docker/ssl
writable: false
# ์ฌ์ค CA์ธ์ฆ์ ์ ๋ขฐ์์น
- location: /etc/docker/certs.d/$mydomain
writable: false
# Docker Daemon Setting
docker:
insecure-registries:
- cmp.registry.io:8080
tlsverify: true
tlscacert: /etc/docker/ssl/ca.pem
tlscert: /etc/docker/ssl/cert.pem
tlskey: /etc/docker/ssl/key.pem
<<<
colima start
# ๋ฑ๋ก ํ์ธ
colima ssh
cat /etc/docker/daemon.json
>>>
{
"exec-opts": [
"native.cgroupdriver=cgroupfs"
],
"features": {
"buildkit": true
},
"insecure-registries": [
"cmp.registry.io:8080"
],
"tlscacert": "/etc/docker/ssl/ca.pem",
"tlscert": "/etc/docker/ssl/cert.pem",
"tlskey": "/etc/docker/ssl/key.pem",
"tlsverify": true
}
<<<
bash
export ca_crt="./ca.crt"
export secured_registry=harbor.Enterprise Cloud.myregistry.internal.com
export registry_ip=10.255.57.88
export colima_template="~/.colima/_templates/default.yaml"
sudo mkdir -p /etc/docker/certs.d/$secured_registry
sudo cp $ca_crt /etc/docker/certs.d/$secured_registry/ca.crt
colima delete
export mount_item=$(cat << EOF | yq -pyaml -ojson | jq '.mounts'
mounts:
- location: /etc/docker/certs.d/$secured_registry
writable: false
EOF
)
yq -i ".mounts += $mount_item" \
~/.colima/_templates/default.yaml
# ๋์ค ํ๋๋ง ๋์ํจ
yq -i ".network.dns += \"8.8.8.8\"" \
~/.colima/_templates/default.yaml
# yq -i ".network.dnsHosts.\"$secured_registry\" = \"$registry_ip\"" \
# ~/.colima/_templates/default.yaml
export provision_script=$(cat <<EOF
echo '$registry_ip $secured_registry' | sudo tee -a /etc/hosts
mkdir -p /usr/local/share/ca-certificates
ln -sf /etc/docker/certs.d/$secured_registry/ca.crt /usr/local/share/ca-certificates/ 2>/dev/null || true
update-ca-certificates
EOF
)
yq -i ".provision += [{\"mode\": \"system\", \"script\": \"$provision_script\"}] | .provision[].script style=\"literal\"" \
~/.colima/_templates/default.yaml
colima start
colima ssh ls /etc/docker/certs.d/
colima ssh ls /usr/local/share/ca-certificates/
colima ssh cat /etc/hosts
colima ssh sudo update-ca-certificates
colima ssh sudo systemctl restart docker
docker login $secured_registry
Colima-Checking before Container execution
bash
port=3306
image="mysql:8.0"
container_name="spring-mysql"
MYSQL_ROOT_PASSWORD=root
MYSQL_DATABASE=spring_db
brew install colima docker
colima start
containerID=$(docker ps -a | grep $image | awk '{print $1}')
if [ -n "$containerID" ]; then
docker start $containerID
else
docker run --name $container_name \
-p $port:$port \
-e MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD \
-e MYSQL_DATABASE=$MYSQL_DATABASE \
-d $image
fi




Leave a Reply