一文帶你學會Docker
對于開發人員來說,Docker肯定都不陌生,今天了不起帶大家重新學習一下Docker。
什么是 Docker
官話:
Docker 是一種開源的容器化平臺,它可以幫助開發者將應用程序與其所依賴的環境一起打包,形成一個獨立的、可移植的容器。這些容器可以在任何支持 Docker 的平臺上運行,無論是開發環境、測試環境,還是生產環境,都能保持一致的運行結果。Docker 的高度可移植性和輕量級特性使得軟件開發和部署變得更加簡單和高效。
簡單理解:
Docker是一個容器,可以讓我很方便的安裝軟件、部署項目,而不用為環境的不同發愁。
安裝 Docker
在開始使用 Docker 之前,首先需要在您的計算機上安裝 Docker。Docker 提供了適用于不同操作系統的安裝程序,您可以根據自己的系統選擇合適的安裝方式。
強烈建議安裝在linux環境下,操作簡單、不容易出錯;Windows環境下安裝之后,Docker相關服務至少占用2G內存,建議32G內存的電腦考慮在Windows安裝。
以Debian系統示例
卸載舊版本
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
安裝Docker
設置存儲庫
- 更新軟件包索引并安裝軟件包以允許使用 基于 HTTPS 的存儲庫
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
- 添加 Docker 的官方 GPG 密鑰:
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/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/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
安裝 Docker 引擎
- 更新包索引:apt
sudo apt-get update
- 安裝 Docker Engine、containerd 和 Docker Compose。
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- 通過運行映像驗證 Docker 引擎安裝是否成功:hello-world
sudo docker run hello-world
您現在已成功安裝并啟動 Docker 引擎。
操作步驟詳情請參照官方文檔:https://docs.docker.com/engine/install/debian/
使用Docker
這里以安裝nginx為例
1. 拉取鏡像
在使用 Docker 前,通常需要先從 Docker Hub(Docker 的公共鏡像倉庫)或者其他私有鏡像倉庫中拉取所需的鏡像。可以使用 docker pull 命令來拉取鏡像,例如:
docker pull nginx:latest
上述命令會從 Docker Hub 拉取最新版的 Nginx 鏡像。
2. 運行容器
拉取鏡像后,就可以使用 docker run 命令來創建并運行容器,例如:
docker run -d -p 8080:80 nginx:latest
上述命令會以后臺模式運行一個基于 Nginx 鏡像的容器,并將容器的 80 端口映射到主機的 8080 端口。
3. 查看容器
使用 docker ps 命令可以查看當前正在運行的容器:
docker ps
使用 docker ps -a 命令可以查看包括已停止的容器在內的所有容器。
4. 停止和刪除容器
使用 docker stop 命令停止一個運行中的容器,例如:
docker stop <CONTAINER_ID>
使用 docker rm 命令刪除一個已停止的容器,例如:
docker rm <CONTAINER_ID>
5. 進入容器
有時候需要進入容器的 shell 環境進行調試或者執行命令。可以使用 docker exec 命令進入一個正在運行的容器,例如:
docker exec -it <CONTAINER_ID> /bin/bash
上述命令會在容器內啟動一個交互式的 Bash shell。
文件掛載
在運行 Nginx 容器時,將 Nginx 的配置文件掛載到容器中,可以實現動態修改配置的功能。
- 首先,在您的主機上創建一個目錄,并將 Nginx 配置文件放入該目錄。例如,假設您有一個自定義的 Nginx 配置文件 nginx.conf,您可以將其放在 /path/to/nginx_config 目錄下。
- 使用 Docker 運行 Nginx 容器時,通過添加 -v 或 --volume 參數來進行配置文件掛載:
docker run -d -p 8080:80 -v /path/to/nginx_config:/etc/nginx/nginx.conf:ro nginx:latest
上述命令會將主機中的 /path/to/nginx_config/nginx.conf 文件掛載到容器內的 /etc/nginx/nginx.conf 文件。這樣,容器內的 Nginx 將使用您自定義的配置文件而不是默認的配置。
"ro" 表示將掛載的目錄或文件設置為只讀模式(Read-Only)。掛載為只讀模式意味著容器內部對掛載的目錄或文件只有讀取權限,不能進行寫入、修改或刪除操作。
使用 "ro" 參數的好處是可以增加對容器內數據的安全性。如果您擔心容器內的應用程序會無意間修改或刪除重要的配置文件,可以使用 "ro" 參數確保這些配置文件不會被意外更改。
如果您希望容器內的應用程序具有對掛載目錄的讀寫權限,可以省略 "ro" 參數或使用 "rw"(Read-Write)參數來掛載。
小結
Docker 是一個功能強大的容器化平臺,可以幫助開發者簡化應用程序的開發、測試和部署過程。
希望本篇文章能讓你學會如何使用 Docker容器化技術,提高軟件交付的效率和可靠性。