docker使用指南
docker可以帮助你跨平台运行程序。这些程序是带着环境一起打包好的,所以无需担心兼容性问题,非常方便。
三大基本概念
- image 是未实例化的环境和软件的打包。
- container是image的实例化,一个image可以有多个实例。
- volume是container的数据挂载在电脑上的位置,初始为默认位置,可以映射到自己想要的位置。如果不删除该数据,那么删除并重新实例化container后数据还在。
在macos上的运行
在 macOS 上,默认情况下,Docker 在本地运行时会在内部启动一个轻量级的 Linux 虚拟机(称为 Docker Desktop),并在其中运行容器。这是因为 macOS 和 Linux 之间有一些核心操作系统的差异,所以 Docker 使用虚拟化技术来在 macOS 上运行 Linux 容器。
因此,
/var/lib/docker目录实际上位于 Docker Desktop 虚拟机内部,而不是直接在 macOS 主机上。无法直接访问虚拟机内部的文件系统。这也意味着,对于 macOS 上运行的 Docker 容器来说,数据存储在 Docker Desktop 虚拟机中,并不是直接在 macOS 主机上的文件系统中。这样确实提供了一定的安全性,因为容器的数据对于 macOS 主机来说更难以直接访问。想要在宿主上访问容器,要做端口映射,也就是在run container的时候输入参数 -p port:port,来分别指定宿主机的端口和容器上的端口。然后在宿主机用 localhost:port 来访问。
如果想要在容器之间互相访问,那么只需要知道两个软件的内部ip,然后用ip来访问:
1
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql-slave
如果用docker network建立容器之间的网络,那么就可以用别名而不是ip来互相访问。
有些容器里很多命令失效,显示command not found,是因为很多软件都没装

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 BRUCE!




