docker 是個橫空出世的神奇東西,它可以把我們辛苦設定的伺服器,完全打包成一個 image,然後 copy 到一個純淨的 Linux,在完全不安裝套件及設定,啟動伺服器。
ubuntu 安裝
在 ubuntu 安裝 docker,不要用 sudo apt install docker,因為這是舊版的,請使用如下方式安裝
sudo apt update sudo apt upgrade -y sudo apt install -y ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu noble stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
啟動 docker
sudo systemctl enable docker sudo systemctl start docker
測試
sudo docker --version
帳戶加入 docker group
每次執行 docker 都要加 sudo,底下將帳戶加入 docker group,就不用加 sudo。
sudo usermod -aG docker $USER && newgrp docker
建立 Image
建立目錄
cd ~ mkdir docker cd docker mkdir nginx cd nginx
vim Dockerfile,輸入如下
FROM nginx:latest COPY nginx.conf /etc/nginx/nginx.conf EXPOSE 80
建立 Image
sudo docker build -t nginx:v1 .
壓縮 Image
todo
docker save -o nginx.tar nginx:v1
Copy Image
將 Image copy 到另一台
todo
啟動 Container
todo
docker load -i nginx:v1.tar
docker run -d --name nginx -p 80:80 -p 443:443 nginx:v1
todo
進入 Container
todo
docker exec -it mysql bash
刪除 Container
先查看要刪除的 Container
docker ps -a
docker rm xxxxx
刪除 Image
先查看要刪那個 image,再使用 rmi 刪除
docker images
docker rmi nginx:v1
todo
MySQL
Dockerfile 內容如下
FROM mysql:latest EXPOSE 3306
啟動 Container
docker build -t mysql:v1 . docker run -d --name mysql -e MYSQL_ROOT_PASSWORD='密碼' -p 3306:3306 mysql:v1 docker exec -it mysql bash
todo
