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