Skip to content

Commit 33fa86a

Browse files
committed
Add docker support clarification
1 parent 464f64d commit 33fa86a

6 files changed

+59
-35
lines changed

articles/iot-edge/development-environment.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ description: Learn about the supported systems and first-party development tools
44
author: PatAltimore
55

66
ms.author: patricka
7-
ms.date: 07/10/2023
7+
ms.date: 06/14/2024
88
ms.topic: conceptual
99
ms.service: iot-edge
1010
services: iot-edge
@@ -30,7 +30,7 @@ The operating systems of the development machine and IoT Edge devices don't need
3030

3131
The central concept of IoT Edge is that you can remotely deploy your business and cloud logic to devices by packaging it into containers. To build containers, you need a container engine on your development machine.
3232

33-
The only supported container engine for IoT Edge devices in production is Moby. However, any container engine compatible with the Open Container Initiative, like Docker, is capable of building IoT Edge module images.
33+
Any container engine compatible with the Open Container Initiative, like Docker, is capable of building IoT Edge module images. Moby is the supported container engine for IoT Edge devices in production. If you are using Ubuntu Core snaps, the Docker snap is serviced by Canonical and supported for production scenarios.
3434

3535
## Development tools
3636

articles/iot-edge/how-to-provision-devices-at-scale-linux-x509.md

Lines changed: 41 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ titleSuffix: Azure IoT Edge
44
description: Use X.509 certificates to test provisioning devices at scale for Azure IoT Edge with device provisioning service
55
author: PatAltimore
66
ms.author: patricka
7-
ms.date: 02/27/2024
7+
ms.date: 06/13/2024
88
ms.topic: how-to
99
ms.service: iot-edge
1010
ms.custom: linux-related-content
@@ -92,6 +92,28 @@ Open the configuration file on the IoT Edge device.
9292
sudo nano /etc/aziot/config.toml
9393
```
9494

95+
Find the **Provisioning** section of the file. Uncomment the lines for DPS provisioning with X.509 certificate, and make sure any other provisioning lines are commented out.
96+
97+
```toml
98+
# DPS provisioning with X.509 certificate
99+
[provisioning]
100+
source = "dps"
101+
global_endpoint = "https://global.azure-devices-provisioning.net"
102+
id_scope = "SCOPE_ID_HERE"
103+
104+
# Uncomment to send a custom payload during DPS registration
105+
# payload = { uri = "PATH_TO_JSON_FILE" }
106+
107+
[provisioning.attestation]
108+
method = "x509"
109+
registration_id = "REGISTRATION_ID_HERE"
110+
111+
identity_cert = "DEVICE_IDENTITY_CERTIFICATE_HERE" # For example, "file:///var/aziot/device-id.pem"
112+
identity_pk = "DEVICE_IDENTITY_PRIVATE_KEY_HERE" # For example, "file:///var/aziot/device-id.key"
113+
114+
# auto_reprovisioning_mode = Dynamic
115+
```
116+
95117
# [Ubuntu Core snaps](#tab/snaps)
96118

97119
If using a snap installation of IoT Edge, the template file is located at `/snap/azure-iot-edge/current/etc/aziot/config.toml.edge.template`. Create a copy of the template file in your home directory and name it config.toml. For example:
@@ -106,30 +128,30 @@ Open the configuration file in your home directory on the IoT Edge device.
106128
nano ~/config.toml
107129
```
108130

109-
---
131+
Find the **Provisioning** section of the file. Uncomment the lines for DPS provisioning with X.509 certificate, and make sure any other provisioning lines are commented out. The path used for the certificate files should be the path to the shared directory accessible to both *azure-iot-edge* and *azure-iot-identity* snaps. For example, `/var/snap/azure-iot-identity/current/shared/`.
110132

111-
1. Find the **Provisioning** section of the file. Uncomment the lines for DPS provisioning with X.509 certificate, and make sure any other provisioning lines are commented out.
133+
```toml
134+
# DPS provisioning with X.509 certificate
135+
[provisioning]
136+
source = "dps"
137+
global_endpoint = "https://global.azure-devices-provisioning.net"
138+
id_scope = "SCOPE_ID_HERE"
112139

113-
```toml
114-
# DPS provisioning with X.509 certificate
115-
[provisioning]
116-
source = "dps"
117-
global_endpoint = "https://global.azure-devices-provisioning.net"
118-
id_scope = "SCOPE_ID_HERE"
140+
# Uncomment to send a custom payload during DPS registration
141+
# payload = { uri = "PATH_TO_JSON_FILE" }
119142

120-
# Uncomment to send a custom payload during DPS registration
121-
# payload = { uri = "PATH_TO_JSON_FILE" }
122-
123-
[provisioning.attestation]
124-
method = "x509"
125-
registration_id = "REGISTRATION_ID_HERE"
143+
[provisioning.attestation]
144+
method = "x509"
145+
registration_id = "REGISTRATION_ID_HERE"
126146

127-
identity_cert = "DEVICE_IDENTITY_CERTIFICATE_HERE"
147+
identity_cert = "DEVICE_IDENTITY_CERTIFICATE_HERE" # For example, "file:///var/snap/azure-iot-identity/current/shared/device-id.pem"
148+
identity_pk = "DEVICE_IDENTITY_PRIVATE_KEY_HERE" # For example, "file:///var/snap/azure-iot-identity/current/shared/device-id.key"
128149

129-
identity_pk = "DEVICE_IDENTITY_PRIVATE_KEY_HERE"
130150

131-
# auto_reprovisioning_mode = Dynamic
132-
```
151+
# auto_reprovisioning_mode = Dynamic
152+
```
153+
154+
---
133155

134156
1. Update the value of `id_scope` with the scope ID you copied from your instance of DPS.
135157

articles/iot-edge/how-to-provision-single-device-linux-x509.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ ms.service: iot-edge
77
ms.custom: linux-related-content
88
services: iot-edge
99
ms.topic: how-to
10-
ms.date: 02/27/2024
10+
ms.date: 06/13/2024
1111
ms.author: patricka
1212
---
1313

@@ -115,7 +115,7 @@ After entering the provisioning information in the configuration file, apply you
115115

116116
# [Ubuntu Core snaps](#tab/snaps)
117117

118-
1. Copy your identity keyfile and certificate in the `/var/snap/azure-iot-identity/common/provisioning` directory. Create the directory if it doesn't exist.
118+
1. Copy your identity keyfile and certificate in the `/var/snap/azure-iot-identity/current/shared` directory. Create the directory if it doesn't exist.
119119
120120
1. Create a **config.toml** file in your home directory and configure your IoT Edge device for manual provisioning using an X.509 identity certificate.
121121
@@ -134,16 +134,16 @@ After entering the provisioning information in the configuration file, apply you
134134
[provisioning.authentication]
135135
136136
method = "x509"
137-
identity_cert = "file:///var/snap/azure-iot-identity/common/provisioning/IDENTITY_CERT_FILENAME"
138-
identity_pk = "file:///var/snap/azure-iot-identity/common/provisioning/IDENTITY_PK_FILENAME"
137+
identity_cert = "file:///var/snap/azure-iot-identity/current/shared/IDENTITY_CERT_FILENAME"
138+
identity_pk = "file:///var/snap/azure-iot-identity/current/shared/IDENTITY_PK_FILENAME"
139139
```
140140
141141
Update the following fields:
142142
143143
* **iothub_hostname**: Hostname of the IoT Hub where the device connects. For example, `example.azure-devices.net`.
144144
* **device_id**: The ID that you provided when you registered the device.
145-
* **identity_cert**: URI to an identity certificate on the device, for example: `file:///var/snap/azure-iot-identity/common/provisioning/identity_certificate.pem`.
146-
* **identity_pk**: URI to the private key file for the provided identity certificate, for example: `file:///var/snap/azure-iot-identity/common/provisioning/identity_key.pem`.
145+
* **identity_cert**: URI to an identity certificate on the device, for example: `file:///var/snap/azure-iot-identity/current/shared/identity_certificate.pem`.
146+
* **identity_pk**: URI to the private key file for the provided identity certificate, for example: `file:///var/snap/azure-iot-identity/current/shared/identity_key.pem`.
147147
148148
For more information about provisioning configuration settings, see [Configure IoT Edge device settings](configure-device.md#provisioning).
149149

articles/iot-edge/includes/iot-edge-install-linux.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
ms.topic: include
3-
ms.date: 03/11/2024
3+
ms.date: 06/14/2024
44
author: PatAltimore
55
ms.author: patricka
66
ms.service: iot-edge
@@ -84,7 +84,7 @@ For more information about operating system versions, see [Azure IoT Edge suppor
8484

8585
### Install a container engine
8686

87-
Azure IoT Edge relies on an [OCI](https://opencontainers.org/)-compatible container runtime. For production scenarios, we recommend that you use the Moby engine. The Moby engine is the only container engine officially supported with IoT Edge. Docker CE/EE container images are compatible with the Moby runtime.
87+
Azure IoT Edge relies on an [OCI](https://opencontainers.org/)-compatible container runtime. For production scenarios, we recommend that you use the Moby engine. The Moby engine is the container engine officially supported with IoT Edge. Docker CE/EE container images are compatible with the Moby runtime. If you are using Ubuntu Core snaps, the Docker snap is serviced by Canonical and supported for production scenarios.
8888

8989
# [Ubuntu](#tab/ubuntu)
9090

@@ -132,6 +132,8 @@ sudo snap install docker
132132
sudo snap install azure-iot-identity
133133
```
134134
135+
The Docker snap is serviced by Canonical and supported for production scenarios.
136+
135137
---
136138
137139
By default, the container engine doesn't set container log size limits. Over time, this can lead to the device filling up with logs and running out of disk space. However, you can configure your log to show locally, though it's optional. To learn more about logging configuration, see [Production Deployment Checklist](../production-checklist.md#set-up-default-logging-driver).

articles/iot-edge/production-checklist.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ description: Ready your Azure IoT Edge solution for production. Learn how to set
44
author: PatAltimore
55

66
ms.author: patricka
7-
ms.date: 06/06/2024
8-
ms.topic: conceptual
7+
ms.date: 06/13/2024
8+
ms.topic: concept-article
99
ms.service: iot-edge
1010
services: iot-edge
1111
ms.custom: [amqp, mqtt]
@@ -26,7 +26,7 @@ IoT Edge devices can be anything from a Raspberry Pi to a laptop to a virtual ma
2626
* **Important**
2727
* Install production certificates
2828
* Have a device management plan
29-
* Use Moby as the container engine
29+
* Use Moby as the container engine. If you are using Ubuntu Core snaps, the Docker snap is serviced by Canonical and supported for production scenarios.
3030

3131
* **Helpful**
3232
* Choose upstream protocol
@@ -53,9 +53,9 @@ Before you put any device in production you should know how you're going to mana
5353

5454
Alternative methods for updating IoT Edge require physical or SSH access to the IoT Edge device. For more information, see [Update the IoT Edge runtime](how-to-update-iot-edge.md). To update multiple devices, consider adding the update steps to a script or use an automation tool like Ansible.
5555

56-
### Use Moby as the container engine
56+
### Container engine
5757

58-
A container engine is a prerequisite for any IoT Edge device. Only moby-engine is supported in production. Other container engines, like Docker, do work with IoT Edge and it's ok to use these engines for development. The moby-engine can be redistributed when used with Azure IoT Edge, and Microsoft provides servicing for this engine.
58+
A container engine is a prerequisite for any IoT Edge device. The moby-engine is supported in production. If you are using Ubuntu Core snaps, the Docker snap is serviced by Canonical and supported for production scenarios. Other container engines, like Docker, do work with IoT Edge and it's ok to use these engines for development. The moby-engine can be redistributed when used with Azure IoT Edge, and Microsoft provides servicing for this engine.
5959

6060
### Choose upstream protocol
6161

articles/iot-edge/support.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ If you experience problems while using the Azure IoT Edge service, there are sev
3232

3333
## Container engines
3434

35-
Azure IoT Edge modules are implemented as containers, so IoT Edge needs a container engine to launch them. Microsoft provides a container engine, moby-engine, to fulfill this requirement. This container engine is based on the Moby open-source project. Docker CE and Docker EE are other popular container engines. They're also based on the Moby open-source project and are compatible with Azure IoT Edge. Microsoft provides best effort support for systems using those container engines; however, Microsoft can't ship fixes for issues in them. For this reason, Microsoft recommends using moby-engine on production systems.
35+
Azure IoT Edge modules are implemented as containers, so IoT Edge needs a container engine to launch them. Microsoft provides a container engine, moby-engine, to fulfill this requirement. This container engine is based on the Moby open-source project. Docker CE and Docker EE are other popular container engines. They're also based on the Moby open-source project and are compatible with Azure IoT Edge. Microsoft provides best effort support for systems using those container engines; however, Microsoft can't ship fixes for issues in them. For this reason, Microsoft recommends using moby-engine on production systems. If you are using Ubuntu Core snaps, the Docker snap is serviced by Canonical and supported for production scenarios.
3636

3737
:::image type="content" source="./media/support/only-moby-for-production.png" alt-text="Screenshot of the Moby engine as a container runtime.":::
3838

0 commit comments

Comments
 (0)