docker-java 创建容器时,绑定工作目录,添加环境变量,映射文件夹路径
时间: 2024-11-06 16:18:00 浏览: 9
Docker Java API允许开发者通过`DockerClient`来操作Docker容器,包括创建、配置和管理。当你要创建一个新的容器并绑定工作目录、添加环境变量以及映射文件夹路径时,可以这样做:
1. **设置工作目录(Working Directory)**:
使用`Dockerfile`或`Host Volume Mounting`时,你可以指定`HostDirectory`来作为容器内的工作目录。例如:
```java
HostConfig hostConfig = new HostConfig();
File workDir = new File("/path/on/host");
hostConfig.setWorkdir(workDir.getAbsolutePath());
ContainerConfig config = ...;
config.getHostConfig().withBinds(workDir.getPath() + ":/" + workDir.getName());
```
2. **添加环境变量(Environment Variables)**:
可以通过`HostConfig`的`setEnv()`方法添加:
```java
List<EnvVar> envs = new ArrayList<>();
EnvVar env = new EnvVar("VAR_NAME", "VAR_VALUE");
envs.add(env);
hostConfig.withEnv(envs);
```
3. **映射文件夹路径(Volume Mapping)**:
`Binds`方法用于将主机的文件夹映射到容器内:
```java
hostConfig.withBinds(new String[]{workDir.getAbsolutePath() + ":" + workDir.getName()});
```
或者使用`bind mounts`,即直接将宿主机路径与容器路径关联起来。
创建容器时,将上述配置应用到`ContainerConfig`,然后通过`DockerClient`的`createContainer()`方法创建新容器。
```java
// 合成完整的配置
config.getHostConfig().merge(hostConfig);
ContainerCreation containerCreation = dockerClient.createContainer(config);
// 提示用户确认映射关系是否正确
System.out.println("Creating container with mapped directories and environment variables...");
```
阅读全文