Colima Container Runtime on macOS: Docker

๐Ÿ’ก 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

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *