Docker Desktop 是一款用于在桌面环境下开发、构建和容器化应用程序的工具。它适用于 Windows 和 Mac 操作系统,让开发人员可以轻松地在本地环境中创建和运行容器,并与 Docker Hub 和其他容器注册表进行交互。Docker Desktop集成了Docker Engine,Docker Compose 和Docker CLI 工具,可以让用户更加简单地创建和管理 Docker 容器。
本篇介绍在Docker Desktop 上的一些操作。
Docker提供了一个工具: Docker Compose , 可以实现通过一条命令启动多个容器。
接下来就以一个实例来演示Docker Compose的使用。
git clone https://github.com/docker/multi-container-app
这是一个使用ExpressJS和Node构建的简单todo应用程序。所有todo都保存在MongoDB数据库中。
该文件的内容如下:
docker compose up -d
在项目路径运行,这个命令会构建和运行在compose 文件中列出的所有服务。
-d
用于告诉docker compose 以 detached模式运行只需选择应用程序堆栈,然后在Docker Desktop上选择Delete。当您想重新启动时,请再次在项目文件夹中运行docker compose up。这将重新启动应用程序。请注意,当数据库容器被删除时,创建的任何todo也会丢失。
在这里插入图片描述
Docker将容器中的所有内容、代码和数据与本地文件系统隔离开来。这意味着,当在Docker Desktop中删除容器时,其中的所有内容都将被删除。
有时,可能希望持久化容器生成的数据。此时可以使用卷(volumn)。
这里沿用上面的multi-container-app 的例子。
如果要在删除容器后仍保留数据,可以使用卷。卷是本地文件系统中的一个位置,由Docker管理。
要向该项目添加卷,只需转到compose.yaml文件并取消注释以下行:
todo-database:
# ...
volumes:
- database:/data/db
# ...
volumes:
database:
嵌套在todo-database中的volumes元素告诉Compose将名为database的卷装载到todo-data服务的容器中的/data/db。
顶级卷元素定义并配置名为卷的数据库,Compose文件中的任何服务都可以使用该数据库。
现在,无论多久删除和重新启动一次容器,数据都是持久的,并且可以通过装载数据库卷对系统上的任何容器进行访问。Docker将检查一个卷,如果没有,则创建一个卷。
使用项目目录中的docker compose-up命令运行此应用程序。
docker compose up -d
现在,当在本地系统上开发应用程序时,可以利用容器的环境。在本地系统上对应用程序所做的任何更改都会反映在容器中。在本地目录中,在IDE或文本编辑器中打开app/views/todos.js,更新Enter your task字符串,然后保存文件。访问或刷新localhost:3001 查看更改。
Docker将容器中的所有内容、代码和数据与本地文件系统隔离开来。
有时,可能希望容器访问系统上的目录。这是您使用绑定装载的时候。
git clone https://github.com/docker/bindmount-apps
如果您想访问系统上的数据,可以使用绑定装载。绑定装载允许您将主机文件系统中的一个目录共享到容器中。
要向该项目添加绑定装载,只需转到compose.yaml文件并取消注释以下行:
todo-app:
# ...
volumes:
- ./app:/usr/src/app
- /usr/src/app/node_modules
volumes元素告诉Compose装载本地文件夹/应用程序到todo应用程序服务容器中的/usr/src/app。这个特定的绑定装载覆盖容器中/usr/src/app目录的静态内容,并创建所谓的开发容器。第二条指令/usr/src/app/nod_module防止绑定装载覆盖容器的node_modules目录,以保留容器中安装的包。
使用容器时,通常需要创建一个Dockerfile来定义映像,并创建一个compose.yaml文件来定义如何运行映像。
为了帮助您创建这些文件,Docker有一个名为docker init
的命令。在项目文件夹中运行此命令,Docker将创建所需的所有文件。
docker init
Docker会检测你项目的语言,并提示你选择一种语言。如果语言在列表中,则可以选择该语言;如果语言不在列表中则可以选择“其他”。
docker init将引导解决几个问题,以便使用合理的默认值配置项目
一旦回答了所有的问题,你可以运行docker compose来运行你的项目。
然而,为项目创建的Dockerfile和compose.yaml文件可能需要额外的更改。在这种情况下,可能需要查找Dockerfile引用 和撰写文件引用 在我们的文档中。
docker tag docker/welcome-to-docker YOUR-USERNAME/welcome-to-docker