A docker image that enables running the aziot-edge 1.5 in a docker container.
To run an IoT Edge device locally, install a compatible Docker runtime, e.g. Docker for Windows.
Then the following is needed:
-
Create an IoT device identity:
az iot hub device-identity create --device-id <DEVICE_ID> --hub-name <IOT_HUB_NAME> --edge-enabled az iot hub device-identity connection-string show --device-id <DEVICE_ID> --hub-name <IOT_HUB_NAME>
-
Start the container:
docker run -d --restart unless-stopped --privileged -it -v /var/run/docker.sock:/var/run/docker.sock -v /sys/fs/cgroup:/sys/fs/cgroup:rw -e connectionString='<IOT_EDGE_DEVICE_CONNECTION_STRING>' --hostname=edgedevice1 --name iot-edge-device egilhansen/iothub-edge-device:1.5.7-amd64 --dns 8.8.8.8 --log-driver "json-file" --log-opt "max-file=10" --log-opt "max-size=200k"
Or use the following docker-compose (with the edge device connection string replaced):
services: iot-edge-device: image: egilhansen/iothub-edge-device:1.5.7-amd64 restart: unless-stopped privileged: true volumes: - /var/run/docker.sock:/var/run/docker.sock - /sys/fs/cgroup:/sys/fs/cgroup:rw environment: - connectionString="<IOT-EDGE-DEVICE-CONNECTION-STRING>" hostname: edgedevice1 dns: 8.8.8.8 logging: driver: "json-file" options: max-file: "10" max-size: "200k"
And then run:
docker compose up
. -
Monitor IoT edge init:
docker exec -it iot-edge-device bash # check init service journalctl -u iotedge-init.service -f # check iotedge iotedge list iotedge check