Docker

      在〈Docker〉中尚無留言

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

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *