mirror of https://github.com/docker/compose.git
Merge pull request #791 from gtardif/aci_doc_run
Aci doc on single container run and flags
This commit is contained in:
commit
7289f408ca
|
@ -761,17 +761,23 @@ func TestConvertSecrets(t *testing.T) {
|
|||
},
|
||||
},
|
||||
}
|
||||
vs, err := pSquashedDefaultAndAbs.getAciSecretVolumes()
|
||||
volumes, err := pSquashedDefaultAndAbs.getAciSecretVolumes()
|
||||
assert.NilError(t, err)
|
||||
assert.Equal(t, len(vs), 2)
|
||||
assert.Equal(t, len(volumes), 2)
|
||||
|
||||
defaultVolumeName := getServiceSecretKey(serviceName, defaultSecretsPath)
|
||||
assert.Equal(t, *vs[0].Name, defaultVolumeName)
|
||||
assert.Equal(t, len(vs[0].Secret), 3)
|
||||
|
||||
homeVolumeName := getServiceSecretKey(serviceName, absBasePath)
|
||||
assert.Equal(t, *vs[1].Name, homeVolumeName)
|
||||
assert.Equal(t, len(vs[1].Secret), 2)
|
||||
// random order since this was created from a map...
|
||||
for _, vol := range volumes {
|
||||
switch *vol.Name {
|
||||
case defaultVolumeName:
|
||||
assert.Equal(t, len(vol.Secret), 3)
|
||||
case homeVolumeName:
|
||||
assert.Equal(t, len(vol.Secret), 2)
|
||||
default:
|
||||
assert.Assert(t, false, "unexpected volume name: "+*vol.Name)
|
||||
}
|
||||
}
|
||||
|
||||
s := serviceConfigAciHelper(pSquashedDefaultAndAbs.Services[0])
|
||||
vms, err := s.getAciSecretsVolumeMounts()
|
||||
|
|
|
@ -57,19 +57,19 @@ __Legend:__
|
|||
| service.network_mode | x |
|
||||
| service.networks | x | Communication between services is implemented by defining mapping for each service in the shared `/etc/hosts` file of the container group. Each service can resolve names for other services and the resulting network calls will be redirected to `localhost`.
|
||||
| service.pid | x |
|
||||
| service.ports | ✓ | Only symetrical por mapping is supported in ACI. See #exposing-ports.
|
||||
| service.secrets | ✓ | See #secrets.
|
||||
| service.ports | ✓ | Only symetrical port mapping is supported in ACI. See [Exposing ports](#exposing-ports).
|
||||
| service.secrets | ✓ | See [Secrets](#secrets).
|
||||
| service.security_opt | x |
|
||||
| service.stop_grace_period | x |
|
||||
| service.stop_signal | x |
|
||||
| service.sysctls | x |
|
||||
| service.ulimits | x |
|
||||
| service.userns_mode | x |
|
||||
| service.volumes | ✓ | Mapped to AZure File Shares. See #persistent-volumes.
|
||||
| service.volumes | ✓ | Mapped to AZure File Shares. See [Persistent volumes](#persistent-volumes).
|
||||
| service.restart | x | Replaced by service.deployment.restart_policy
|
||||
| | |
|
||||
| __Volume__ | x |
|
||||
| driver | ✓ | See #persistent-volumes.
|
||||
| driver | ✓ | See [Persistent volumes](#persistent-volumes).
|
||||
| driver_opts | ✓ |
|
||||
| external | x |
|
||||
| labels | x |
|
||||
|
@ -82,6 +82,11 @@ __Legend:__
|
|||
| | |
|
||||
|
||||
|
||||
## Logs
|
||||
|
||||
Container logs can be obtained for each container with `docker logs <CONTAINER>`.
|
||||
The Docker ACI integration does not currently support aggregated logs for containers in a Compose application, see https://github.com/docker/compose-cli/issues/803.
|
||||
|
||||
## Exposing ports
|
||||
|
||||
When one or more services expose ports, the entire ACI container group will be exposed and will get a public IP allocated.
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
# Azure Container Instances: running single containerrs
|
||||
|
||||
Single containers can be executed on ACI with the `docker run` command.
|
||||
A single container is executed in its own ACI container group, that will container only one container.
|
||||
|
||||
Containers can be listed with the `docker ps` command, and stopped and removed with `docker stop <CONTAINER>` and `docker rm <CONTAINER>`.
|
||||
|
||||
# Docker run options for ACI containers
|
||||
|
||||
The table below lists supported `docker run` flags and their ACI counterparts.
|
||||
|
||||
__Legend:__
|
||||
|
||||
- __✓:__ Implemented
|
||||
- __n:__ Not yet implemented
|
||||
- __x:__ Not applicable / no available conversion
|
||||
|
||||
| Flag |Map| Notes
|
||||
|-----------------------|---|---------------------------------|
|
||||
| --cpus | ✓ | See [Container Resources](#container-resources).
|
||||
| -d, --detach | ✓ | Detach from container logs when container starts. By default, the command line stays attached and follow container logs.
|
||||
| --domainname | ✓ | See [Exposing ports](#exposing-ports).
|
||||
| --e, --env | ✓ | Sets environment variable.
|
||||
| --envFile | ✓ | Sets environment variable from and external file.
|
||||
| -l, --label | x | Unsupported in Docker ACI integration, due to limitations of ACI Tags.
|
||||
| -m, --memory | ✓ | See [Container Resources](#container-resources).
|
||||
| --name | ✓ | Provide a name for the container. Name must be unique withing the ACI resource group. a name is generated by default.
|
||||
| -p, --publish | ✓ | See [Exposing ports](#exposing-ports). Only symetrical port mapping is supported in ACI.
|
||||
| --restart | ✓ | Restart policy, must be one of: `any`, `none`, `on-failure`.
|
||||
| --rm | x | Not supported as [ACI does not support auto-delete containers](https://feedback.azure.com/forums/602224-azure-container-instances/suggestions/34066633-support-auto-delete-of-aci-when-container-exits-no).
|
||||
| -v, --volume | ✓ | See [Persistent Volumes](#persistent-volumes).
|
||||
|
||||
## Exposing ports
|
||||
|
||||
You can expose one or more ports of a container with `docker run -p <PORT>:<PORT>`
|
||||
If ports are exposed when running a container, the corresponding ACI container group will be exposed with a public IP allocated and the required port(s) accessible.
|
||||
> Note: [ACI does not support port mapping](https://feedback.azure.com/forums/602224-azure-container-instances/suggestions/34082284-support-for-port-mapping), so the same port number must be specified when using `-p <PORT>:<PORT>`.
|
||||
|
||||
When exposing ports, a container can also specify the service `--domainname` flag to set a DNS hostname. `domainname` will be used to specify the ACI DNS Label Name, and the ACI container group will be reachable at `<DOMAINNANE>.<REGION>.azurecontainer.io`.
|
||||
`domainname` must be unique globally in <REGION>.azurecontainer.io
|
||||
|
||||
## Persistent volumes
|
||||
|
||||
Docker volumes are mapped to Azure File shares, each file share is part of an Azure Storage Account.
|
||||
One or more volumes can be specified with `docker run -v <STORAGE-ACCOUNT>/<FILESHARE>:<TARGET-PATH>`.
|
||||
|
||||
A run command can use the `--volume` or `-v` flag several times for different volumes. The volumes can use the same or different storage accounts. The target paths for different volume mounts must be different and not overlap.
|
||||
There is no support for mounting a single file, or mounting a subfolder from an Azure File Share.
|
||||
|
||||
Credentials for storage accounts will be automatically fetched at deployment time using the Azure login to retrieve the storage account key for each storage account used.
|
||||
|
||||
## Container Resources
|
||||
|
||||
CPU and memory reservations can be set when running containers with `docker run --cpus 1.5 --memory 2G`.
|
||||
|
||||
It is not possible to set resource limits that differ from resource reservation on single containers.
|
||||
ACI allows setting resource limits for containers in a container group but these limits must stay within the reserved resources for the entire group. In the case of a single container deployed in a container group, the resource limits must be equal to the resource reservation.
|
||||
|
||||
## Logs
|
||||
|
||||
You can view container logs with the command `docker logs <CONTAINER-ID>`.
|
||||
|
||||
You can follow logs with the `--follow` (`-f`) option.
|
||||
When running a container with `docker run`, by default the command line stays attached to container logs when the container starts. Use `docker run --detach` to not follow logs once the container starts.
|
||||
> Note: Following ACI logs may have display issues especially when resizing a terminal that is following container logs. This is due to ACI providing raw log pulling but no streaming of logs. Logs are effectively pulled every 2 seconds when following logs.
|
Loading…
Reference in New Issue