?
目錄
主要使用步驟
1. 命令
2. 網絡
3. 存儲
卷存儲(Volumes)
目錄掛載(Bind Mounts)
比較
4. 環境變量
5. 端口
示例:啟動 MySQL 容器
解釋:
總結
Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。
主要使用步驟
根據提供的圖和命令示例,我們可以總結出 Docker 的主要使用步驟如下:
1. 命令
Docker 的操作主要通過命令行工具進行。常用的命令包括 docker run
(運行容器)、docker stop
(停止容器)、docker start
(啟動容器)、docker rm
(刪除容器)等。
docker pull IMAGE
:從鏡像倉庫中拉取或更新鏡像。docker push IMAGE
:將鏡像推送到鏡像倉庫。docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
:運行一個新的容器。docker stop CONTAINER
:停止一個或多個正在運行的容器。docker start CONTAINER
:啟動一個或多個已經被停止的容器。docker restart CONTAINER
:重啟容器。docker rm CONTAINER
:刪除一個或多個容器。docker rmi IMAGE
:刪除一個或多個鏡像。docker ps
:列出當前所有正在運行的容器。docker logs CONTAINER
:獲取容器的日志。
2. 網絡
Docker 容器可以配置網絡,以便容器之間或容器與外部世界進行通信。網絡配置可以通過 docker network
命令進行管理。
docker network ls
:列出所有網絡。docker network create NETWORK
:創建一個新網絡。docker network inspect NETWORK
:查看網絡的詳細信息。docker network connect NETWORK CONTAINER
:將容器連接到網絡。docker network disconnect NETWORK CONTAINER
:將容器從網絡中斷開。
3. 存儲
Docker 容器的數據持久化通過卷(Volumes)實現。卷可以掛載到容器中,用于存儲數據。例如,使用 -v
參數將宿主機的目錄掛載到容器中。
目錄掛載是將宿主機上的目錄直接掛載到容器內。這種方式使得容器可以訪問宿主機上的文件和目錄,但這種方式不如卷存儲安全,因為宿主機的文件系統直接暴露給了容器。
區分目錄掛載和卷映射,可通過掛載的路徑中是否包含 / 或者 ./來判斷
卷存儲(Volumes)
Docker 卷是 Docker 管理的數據存儲機制,它們獨立于容器的生命周期,即使容器被刪除,卷中的數據也不會丟失。卷可以被多個容器掛載,非常適合用于持久化數據。
創建和使用卷的命令:
docker volume create VOLUME_NAME
:創建一個新的 Docker 卷。docker volume ls
:列出所有 Docker 卷。docker volume inspect VOLUME_NAME
:查看卷的詳細信息。docker volume rm VOLUME_NAME
:刪除一個 Docker 卷。
使用卷的示例命令:
docker run -d \-v mydata:/path/in/container \myimage
這里,mydata
是 Docker 卷的名稱,/path/in/container
是容器內掛載卷的路徑。
目錄掛載(Bind Mounts)
目錄掛載是將宿主機上的目錄直接掛載到容器內。這種方式使得容器可以訪問宿主機上的文件和目錄,但這種方式不如卷存儲安全,因為宿主機的文件系統直接暴露給了容器。
使用目錄掛載的示例命令:
docker run -d \-v /host/path:/path/in/container \myimage
這里,/host/path
是宿主機上的目錄路徑,/path/in/container
是容器內掛載目錄的路徑。
比較
-
持久性:卷存儲和目錄掛載都可以實現數據的持久化,但卷存儲更安全,因為它是 Docker 管理的。
-
共享性:卷可以被多個容器掛載,而目錄掛載通常只用于單個容器。
-
性能:目錄掛載可能提供更好的性能,因為它直接使用宿主機的文件系統,但這也取決于具體的使用場景。
4. 環境變量
環境變量用于在容器啟動時傳遞配置信息。例如,使用 -e
參數設置環境變量。
-e KEY=VALUE
或--env KEY=VALUE
:設置環境變量。-e KEY
或--env KEY
:設置環境變量,值從宿主機環境變量中獲取。
5. 端口
端口映射允許容器內的服務通過宿主機的端口訪問。例如,使用 -p
參數將容器的端口映射到宿主機的端口。
-p 宿主機端口:容器端口
或--publish 宿主機端口:容器端口
:映射端口。-p 容器端口
或--publish 容器端口
:讓 Docker 自動在宿主機上選擇端口。
?
示例:啟動 MySQL 容器
以下是一個啟動 MySQL 容器的示例命令:
docker run -d -p 3306:3306 \
-v /home/docker/mysql/config:/etc/mysql/conf.d \
-v /home/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=shiguang \
--name mysql \
mysql:8.0.37-debian
解釋:
-
-d
:后臺運行容器。 -
-p 3306:3306
:將宿主機的 3306 端口映射到容器的 3306 端口。 -
-v /home/docker/mysql/config:/etc/mysql/conf.d
:將宿主機的/home/docker/mysql/config
目錄掛載到容器的/etc/mysql/conf.d
目錄,用于配置 MySQL。 -
-v /home/docker/mysql/data:/var/lib/mysql
:將宿主機的/home/docker/mysql/data
目錄掛載到容器的/var/lib/mysql
目錄,用于存儲 MySQL 數據。 -
-e MYSQL_ROOT_PASSWORD=shiguang
:設置環境變量MYSQL_ROOT_PASSWORD
,用于設置 MySQL 的 root 用戶密碼。 -
--name mysql
:為容器指定名稱mysql
。 -
mysql:8.0.37-debian
:指定要運行的鏡像,這里是 MySQL 8.0.37 的 Debian 版本。
總結
通過以上步驟和示例,我們可以看到 Docker 的使用主要包括命令操作、網絡配置、存儲管理、環境變量設置和端口映射。這些步驟確保了容器的可移植性、安全性和靈活性。Docker 的最佳實踐還包括使用官方鏡像、定期更新鏡像、合理配置資源限制等,以確保容器的穩定運行和資源的高效利用。