Wiki page
[Container Limitations] by
tangent
2024-08-03 04:25:50.
0000: 44 20 32 30 32 34 2d 30 38 2d 30 33 54 30 34 3a D 2024-08-03T04:
0010: 32 35 3a 35 30 2e 30 39 36 0a 4c 20 43 6f 6e 74 25:50.096.L Cont
0020: 61 69 6e 65 72 5c 73 4c 69 6d 69 74 61 74 69 6f ainer\sLimitatio
0030: 6e 73 0a 4e 20 74 65 78 74 2f 78 2d 6d 61 72 6b ns.N text/x-mark
0040: 64 6f 77 6e 0a 50 20 39 33 62 32 38 30 64 39 32 down.P 93b280d92
0050: 66 62 31 61 37 38 66 34 30 65 61 33 61 63 36 61 fb1a78f40ea3ac6a
0060: 36 36 36 30 33 61 63 39 61 32 62 36 36 36 66 34 66603ac9a2b666f4
0070: 31 33 64 36 61 30 65 37 38 36 33 38 65 64 35 36 13d6a0e78638ed56
0080: 37 39 64 36 38 36 33 0a 55 20 74 61 6e 67 65 6e 79d6863.U tangen
0090: 74 0a 57 20 33 34 35 37 36 0a 23 20 4d 6f 74 69 t.W 34576.# Moti
00a0: 76 61 74 69 6f 6e 0d 0a 0d 0a 54 68 65 20 5b 52 vation....The [R
00b0: 6f 75 74 65 72 4f 53 20 60 63 6f 6e 74 61 69 6e outerOS `contain
00c0: 65 72 2e 6e 70 6b 60 20 66 65 61 74 75 72 65 5d er.npk` feature]
00d0: 28 68 74 74 70 73 3a 2f 2f 68 65 6c 70 2e 6d 69 (https://help.mi
00e0: 6b 72 6f 74 69 6b 2e 63 6f 6d 2f 64 6f 63 73 2f krotik.com/docs/
00f0: 64 69 73 70 6c 61 79 2f 52 4f 53 2f 43 6f 6e 74 display/ROS/Cont
0100: 61 69 6e 65 72 29 20 69 73 20 68 69 67 68 6c 79 ainer) is highly
0110: 20 75 73 65 66 75 6c 2c 20 62 75 74 20 69 74 20 useful, but it
0120: 69 73 20 61 20 63 75 73 74 6f 6d 20 64 65 76 65 is a custom deve
0130: 6c 6f 70 6d 65 6e 74 20 77 72 69 74 74 65 6e 20 lopment written
0140: 69 6e 2d 68 6f 75 73 65 20 62 79 20 4d 69 6b 72 in-house by Mikr
0150: 6f 54 69 6b 2c 20 6e 6f 74 20 61 20 63 6f 70 79 oTik, not a copy
0160: 20 6f 66 20 44 6f 63 6b 65 72 20 45 6e 67 69 6e of Docker Engin
0170: 65 20 6f 72 20 61 6e 79 20 6f 66 20 74 68 65 20 e or any of the
0180: 6f 74 68 65 72 20 73 65 72 76 65 72 2d 67 72 61 other server-gra
0190: 64 65 20 63 6f 6e 74 61 69 6e 65 72 20 65 6e 67 de container eng
01a0: 69 6e 65 73 2e 28 5e 50 6f 64 6d 61 6e 2c 20 4c ines.(^Podman, L
01b0: 58 43 2f 4c 58 44 2c 20 65 74 63 2e 29 20 42 65 XC/LXD, etc.) Be
01c0: 63 61 75 73 65 20 6f 66 20 74 68 65 20 73 74 72 cause of the str
01d0: 69 6e 67 65 6e 74 20 72 65 73 6f 75 72 63 65 20 ingent resource
01e0: 63 6f 6e 73 74 72 61 69 6e 74 73 20 6f 6e 20 74 constraints on t
01f0: 68 65 20 62 75 6c 6b 20 6f 66 20 4d 69 6b 72 6f he bulk of Mikro
0200: 54 69 6b e2 80 99 73 20 64 65 76 69 63 65 73 2c Tik’s devices,
0210: 20 69 74 20 69 73 20 65 78 63 65 70 74 69 6f 6e it is exception
0220: 61 6c 6c 79 20 73 6d 61 6c 6c 2c 20 74 68 75 73 ally small, thus
0230: 20 75 6e 61 76 6f 69 64 61 62 6c 79 20 76 65 72 unavoidably ver
0240: 79 20 74 68 69 6e 6c 79 20 66 65 61 74 75 72 65 y thinly feature
0250: 64 20 63 6f 6d 70 61 72 65 64 20 74 6f 20 69 74 d compared to it
0260: 73 20 62 69 67 2d 62 6f 79 20 63 6f 6d 70 65 74 s big-boy compet
0270: 69 74 69 6f 6e 2e 20 49 66 20 77 65 20 63 61 6e ition. If we can
0280: 20 75 73 65 20 69 6e 73 74 61 6c 6c 65 64 20 73 use installed s
0290: 69 7a 65 20 61 73 20 61 20 70 72 6f 78 79 20 66 ize as a proxy f
02a0: 6f 72 20 65 78 70 65 63 74 65 64 20 66 65 61 74 or expected feat
02b0: 75 72 65 20 73 65 74 20 73 69 7a 65 2c 20 77 65 ure set size, we
02c0: 20 66 69 6e 64 3a 0d 0a 0d 0a 2a 20 2a 2a 44 6f find:....* **Do
02d0: 63 6b 65 72 20 45 6e 67 69 6e 65 2a 2a 3a 20 34 cker Engine**: 4
02e0: 32 32 20 4d 69 42 28 5e 56 65 72 73 69 6f 6e 20 22 MiB(^Version
02f0: 32 37 2e 31 2e 31 2c 20 61 63 63 6f 72 64 69 6e 27.1.1, accordin
0300: 67 20 74 6f 20 60 64 6e 66 20 72 65 6d 6f 76 65 g to `dnf remove
0310: 20 64 6f 63 6b 65 72 2d 63 65 e2 80 a6 60 20 61 docker-ce…` a
0320: 66 74 65 72 20 69 6e 73 74 61 6c 6c 69 6e 67 20 fter installing
0330: 74 68 65 73 65 20 70 61 63 6b 61 67 65 73 20 5b these packages [
0340: 70 65 72 20 74 68 65 20 69 6e 73 74 72 75 63 74 per the instruct
0350: 69 6f 6e 73 5d 28 68 74 74 70 73 3a 2f 2f 64 6f ions](https://do
0360: 63 73 2e 64 6f 63 6b 65 72 2e 63 6f 6d 2f 65 6e cs.docker.com/en
0370: 67 69 6e 65 2f 69 6e 73 74 61 6c 6c 2f 72 68 65 gine/install/rhe
0380: 6c 2f 23 69 6e 73 74 61 6c 6c 2d 64 6f 63 6b 65 l/#install-docke
0390: 72 2d 65 6e 67 69 6e 65 29 2e 20 4e 6f 74 65 20 r-engine). Note
03a0: 61 6c 73 6f 20 74 68 61 74 20 74 68 69 73 20 69 also that this i
03b0: 73 20 74 68 65 20 e2 80 9c 65 6e 67 69 6e 65 e2 s the “engine
03c0: 80 9d 20 61 6c 6f 6e 65 2c 20 6c 65 61 76 69 6e alone, leavin
03d0: 67 20 6f 75 74 20 74 68 65 20 65 78 74 72 61 20 g out the extra
03e0: 67 69 67 61 62 79 74 65 20 6f 66 20 73 74 75 66 gigabyte of stuf
03f0: 66 20 74 68 61 74 20 6d 61 6b 65 73 20 75 70 20 f that makes up
0400: 44 6f 63 6b 65 72 20 44 65 73 6b 74 6f 70 2e 20 Docker Desktop.
0410: 54 68 69 73 20 69 73 20 77 68 61 74 20 79 6f 75 This is what you
0420: e2 80 99 64 20 72 75 6e 20 6f 6e 20 61 20 72 65 ’d run on a re
0430: 6d 6f 74 65 20 73 65 72 76 65 72 2c 20 74 68 65 mote server, the
0440: 20 63 6c 6f 73 65 73 74 20 73 69 74 75 61 74 69 closest situati
0450: 6f 6e 20 74 6f 20 77 68 61 74 20 61 20 68 65 61 on to what a hea
0460: 64 6c 65 73 73 20 52 6f 75 74 65 72 4f 53 20 62 dless RouterOS b
0470: 6f 78 20 70 72 6f 76 69 64 65 73 2e 29 0d 0a 2a ox provides.)..*
0480: 20 2a 2a 60 63 6f 6e 74 61 69 6e 65 72 64 60 2b **`containerd`+
0490: 60 6e 65 72 64 63 74 6c 60 2a 2a 3a 20 31 37 34 `nerdctl`**: 174
04a0: 20 4d 69 42 28 5e 54 68 69 73 20 69 73 20 65 73 MiB(^This is es
04b0: 73 65 6e 74 69 61 6c 6c 79 20 44 6f 63 6b 65 72 sentially Docker
04c0: 20 45 6e 67 69 6e 65 20 6d 69 6e 75 73 20 74 68 Engine minus th
04d0: 65 20 62 75 69 6c 64 20 74 6f 6f 6c 69 6e 67 2e e build tooling.
04e0: 20 54 68 65 20 73 69 7a 65 20 69 73 20 66 6f 72 The size is for
04f0: 20 76 65 72 73 69 6f 6e 20 32 2e 30 2e 30 2d 72 version 2.0.0-r
0500: 63 31 20 6f 66 20 60 6e 65 72 64 63 74 6c 60 20 c1 of `nerdctl`
0510: 70 6c 75 73 20 74 68 65 20 60 63 6f 6e 74 61 69 plus the `contai
0520: 6e 65 72 64 60 20 66 72 6f 6d 20 74 68 65 20 44 nerd` from the D
0530: 6f 63 6b 65 72 20 45 6e 67 69 6e 65 20 43 45 20 ocker Engine CE
0540: 69 6e 73 74 61 6c 6c 20 61 62 6f 76 65 2c 20 61 install above, a
0550: 63 63 6f 72 64 69 6e 67 20 74 6f 20 60 73 75 64 ccording to `sud
0560: 6f 20 64 6e 66 20 72 65 6d 6f 76 65 20 63 6f 6e o dnf remove con
0570: 74 61 69 6e 65 72 64 60 20 61 6e 64 20 60 64 75 tainerd` and `du
0580: 20 2d 73 68 20 6e 65 72 64 63 74 6c 60 2e 29 0d -sh nerdctl`.).
0590: 0a 2a 20 2a 2a 50 6f 64 6d 61 6e 2a 2a 3a 20 31 .* **Podman**: 1
05a0: 30 37 20 4d 69 42 28 5e 56 65 72 73 69 6f 6e 20 07 MiB(^Version
05b0: 34 2e 39 2e 34 20 6f 6e 20 45 4c 39 2c 20 61 63 4.9.4 on EL9, ac
05c0: 63 6f 72 64 69 6e 67 20 74 6f 20 60 73 75 64 6f cording to `sudo
05d0: 20 64 6e 66 20 72 65 6d 6f 76 65 20 70 6f 64 6d dnf remove podm
05e0: 61 6e 20 63 6f 6e 6d 6f 6e 20 63 72 75 6e 60 2e an conmon crun`.
05f0: 29 0d 0a 2a 20 2a 2a 60 63 6f 6e 74 61 69 6e 65 )..* **`containe
0600: 72 2e 6e 70 6b 60 2a 2a 3a 20 5f 30 2e 30 36 32 r.npk`**: _0.062
0610: 36 20 4d 69 42 5f 28 5e 56 65 72 73 69 6f 6e 20 6 MiB_(^Version
0620: 37 2e 31 35 2e 32 2c 20 61 63 63 6f 72 64 69 6e 7.15.2, accordin
0630: 67 20 74 6f 20 60 2f 73 79 73 74 65 6d 2f 70 61 g to `/system/pa
0640: 63 6b 61 67 65 2f 70 72 69 6e 74 60 2e 29 0d 0a ckage/print`.)..
0650: 0d 0a 41 6e 64 20 74 68 69 73 20 69 73 20 66 69 ..And this is fi
0660: 6e 65 21 20 52 6f 75 74 65 72 4f 53 20 73 65 72 ne! RouterOS ser
0670: 76 65 73 20 61 20 70 61 72 74 69 63 75 6c 61 72 ves a particular
0680: 20 6d 61 72 6b 65 74 2c 20 61 6e 64 20 69 74 73 market, and its
0690: 20 64 65 76 65 6c 6f 70 65 72 73 20 61 72 65 20 developers are
06a0: 77 6f 72 6b 69 6e 67 20 77 69 74 68 69 6e 20 74 working within t
06b0: 68 6f 73 65 20 63 6f 6e 73 74 72 61 69 6e 74 73 hose constraints
06c0: 2e 20 54 68 65 20 69 6e 74 65 6e 74 20 68 65 72 . The intent her
06d0: 65 20 69 73 20 74 6f 20 70 72 6f 76 69 64 65 20 e is to provide
06e0: 61 20 6d 61 70 70 69 6e 67 20 62 65 74 77 65 65 a mapping betwee
06f0: 6e 20 77 68 61 74 20 70 65 6f 70 6c 65 20 65 78 n what people ex
0700: 70 65 63 74 20 6f 66 20 61 20 66 75 6c 6c 79 2d pect of a fully-
0710: 66 65 61 74 75 72 65 64 20 63 6f 6e 74 61 69 6e featured contain
0720: 65 72 20 65 6e 67 69 6e 65 20 61 6e 64 20 77 68 er engine and wh
0730: 61 74 20 79 6f 75 20 61 63 74 75 61 6c 6c 79 20 at you actually
0740: 67 65 74 20 69 6e 20 52 6f 75 74 65 72 4f 53 2e get in RouterOS.
0750: 20 57 68 65 72 65 20 69 74 20 6d 61 6b 65 73 20 Where it makes
0760: 73 65 6e 73 65 2c 20 49 20 74 72 79 20 74 6f 20 sense, I try to
0770: 70 72 6f 76 69 64 65 20 77 6f 72 6b 61 72 6f 75 provide workarou
0780: 6e 64 73 20 66 6f 72 20 6d 69 73 73 69 6e 67 20 nds for missing
0790: 66 65 61 74 75 72 65 73 20 61 6e 64 20 67 75 69 features and gui
07a0: 64 61 6e 63 65 20 74 6f 20 61 6c 74 65 72 6e 61 dance to alterna
07b0: 74 69 76 65 20 6d 65 74 68 6f 64 73 20 77 68 65 tive methods whe
07c0: 72 65 20 52 6f 75 74 65 72 4f 53 e2 80 99 73 20 re RouterOS’s
07d0: 77 61 79 20 6d 65 72 65 6c 79 20 2a 77 6f 72 6b way merely *work
07e0: 73 2a 20 64 69 66 66 65 72 65 6e 74 6c 79 2e 0d s* differently..
07f0: 0a 0d 0a 0d 0a 23 20 3c 61 20 69 64 3d 22 67 6c .....# <a id="gl
0800: 6f 62 61 6c 22 3e 3c 2f 61 3e 47 6c 6f 62 61 6c obal"></a>Global
0810: 20 4c 69 6d 69 74 61 74 69 6f 6e 73 0d 0a 0d 0a Limitations....
0820: 41 6c 6c 6f 77 20 6d 65 20 74 6f 20 62 65 67 69 Allow me to begi
0830: 6e 20 77 69 74 68 20 74 68 65 20 6d 61 6a 6f 72 n with the major
0840: 20 6c 69 6d 69 74 61 74 69 6f 6e 73 20 76 69 73 limitations vis
0850: 69 62 6c 65 20 61 74 20 61 20 67 6c 6f 62 61 6c ible at a global
0860: 20 6c 65 76 65 6c 20 69 6e 20 74 68 65 20 52 6f level in the Ro
0870: 75 74 65 72 4f 53 20 60 63 6f 6e 74 61 69 6e 65 uterOS `containe
0880: 72 2e 6e 70 6b 60 20 66 65 61 74 75 72 65 2c 20 r.npk` feature,
0890: 62 6f 74 68 20 74 6f 20 73 61 74 69 73 66 79 20 both to satisfy
08a0: 74 68 65 20 2a 2a 74 6c 3b 64 72 2a 2a 20 63 72 the **tl;dr** cr
08b0: 6f 77 64 20 61 6e 64 20 74 6f 20 73 65 74 20 62 owd and to set b
08c0: 72 6f 61 64 20 65 78 70 65 63 74 61 74 69 6f 6e road expectation
08d0: 73 20 66 6f 72 20 74 68 65 20 72 65 73 74 20 6f s for the rest o
08e0: 66 20 6d 79 20 72 65 61 64 65 72 73 2e 20 54 68 f my readers. Th
08f0: 69 73 20 73 75 70 65 72 2d 6d 69 6e 69 6d 61 6c is super-minimal
0900: 20 63 6f 6e 74 61 69 6e 65 72 20 69 6d 70 6c 65 container imple
0910: 6d 65 6e 74 61 74 69 6f 6e 20 6c 61 63 6b 73 3a mentation lacks:
0920: 0d 0a 0d 0a 2a 20 20 20 6f 72 63 68 65 73 74 72 ....* orchestr
0930: 61 74 69 6f 6e 0d 0a 2a 20 20 20 69 6d 61 67 65 ation..* image
0940: 20 62 75 69 6c 64 69 6e 67 0d 0a 2a 20 20 20 61 building..* a
0950: 20 6c 6f 63 61 6c 20 69 6d 61 67 65 20 63 61 63 local image cac
0960: 68 65 0d 0a 2a 20 20 20 4a 53 4f 4e 20 61 6e 64 he..* JSON and
0970: 20 52 45 53 54 20 41 50 49 73 0d 0a 2a 20 20 20 REST APIs..*
0980: 61 20 5b 43 6f 57 5d 2f 6f 76 65 72 6c 61 79 20 a [CoW]/overlay
0990: 66 69 6c 65 20 73 79 73 74 65 6d 28 5e 54 68 69 file system(^Thi
09a0: 73 20 69 73 20 6e 6f 74 20 61 20 76 65 72 69 66 s is not a verif
09b0: 69 65 64 20 66 61 63 74 2c 20 62 75 74 20 61 6e ied fact, but an
09c0: 20 69 6e 66 65 72 65 6e 63 65 20 62 61 73 65 64 inference based
09d0: 20 6f 6e 20 74 68 65 20 6f 62 73 65 72 76 61 74 on the observat
09e0: 69 6f 6e 20 74 68 61 74 20 69 66 20 52 6f 75 74 ion that if Rout
09f0: 65 72 4f 53 20 5f 64 69 64 5f 20 68 61 76 65 20 erOS _did_ have
0a00: 74 68 69 73 20 66 61 63 69 6c 69 74 79 20 75 6e this facility un
0a10: 64 65 72 6c 79 69 6e 67 20 69 74 73 20 63 6f 6e derlying its con
0a20: 74 61 69 6e 65 72 73 2c 20 49 20 77 6f 75 6c 64 tainers, I would
0a30: 20 65 78 70 65 63 74 20 74 6f 20 66 69 6e 64 20 expect to find
0a40: 65 71 75 69 76 61 6c 65 6e 74 73 20 74 6f 20 44 equivalents to D
0a50: 6f 63 6b 65 72 e2 80 99 73 20 60 63 6f 6d 6d 69 ocker’s `commi
0a60: 74 60 20 61 6e 64 20 60 64 69 66 66 60 20 63 6f t` and `diff` co
0a70: 6d 6d 61 6e 64 73 2e 20 54 68 69 73 20 70 61 69 mmands. This pai
0a80: 72 73 20 77 69 74 68 20 74 68 65 20 6c 61 63 6b rs with the lack
0a90: 20 6f 66 20 61 6e 20 69 6d 61 67 65 20 63 61 63 of an image cac
0aa0: 68 65 3a 20 6e 6f 20 5b 43 6f 57 5d 20 6d 65 61 he: no [CoW] mea
0ab0: 6e 73 20 6e 6f 20 6e 65 65 64 20 66 6f 72 20 61 ns no need for a
0ac0: 20 62 61 73 65 6c 69 6e 65 20 73 6f 75 72 63 65 baseline source
0ad0: 20 74 6f 20 63 6f 6d 70 75 74 65 20 64 65 6c 74 to compute delt
0ae0: 61 73 20 61 67 61 69 6e 73 74 2e 29 0d 0a 2a 20 as against.)..*
0af0: 20 20 70 65 72 2d 63 6f 6e 74 61 69 6e 65 72 20 per-container
0b00: 6c 69 6d 69 74 20 63 6f 6e 74 72 6f 6c 73 3a 28 limit controls:(
0b10: 5e 54 68 65 20 6f 6e 6c 79 20 63 6f 6e 66 69 67 ^The only config
0b20: 75 72 61 62 6c 65 20 72 65 73 6f 75 72 63 65 20 urable resource
0b30: 6c 69 6d 69 74 20 69 73 20 6f 6e 20 6d 61 78 69 limit is on maxi
0b40: 6d 75 6d 20 52 41 4d 20 75 73 61 67 65 2c 20 61 mum RAM usage, a
0b50: 6e 64 20 69 74 e2 80 99 73 20 67 6c 6f 62 61 6c nd it’s global
0b60: 2c 20 6e 6f 74 20 73 65 74 74 61 62 6c 65 20 6f , not settable o
0b70: 6e 20 61 20 70 65 72 2d 63 6f 6e 74 61 69 6e 65 n a per-containe
0b80: 72 20 62 61 73 69 73 2e 29 0d 0a 20 20 20 20 2a r basis.).. *
0b90: 20 20 20 46 44 20 63 6f 75 6e 74 0d 0a 20 20 20 FD count..
0ba0: 20 2a 20 20 20 50 49 44 20 6c 69 6d 69 74 0d 0a * PID limit..
0bb0: 20 20 20 20 2a 20 20 20 43 50 55 20 75 73 61 67 * CPU usag
0bc0: 65 0d 0a 20 20 20 20 2a 20 20 20 73 74 6f 72 61 e.. * stora
0bd0: 67 65 20 49 4f 50 53 0d 0a 20 20 20 20 2a 20 20 ge IOPS.. *
0be0: 20 60 2f 64 65 76 2f 73 68 6d 60 20 73 69 7a 65 `/dev/shm` size
0bf0: 20 6c 69 6d 69 74 0d 0a 20 20 20 20 2a 20 20 20 limit.. *
0c00: 74 65 72 6d 69 6e 61 6c 2f 6c 6f 67 67 69 6e 67 terminal/logging
0c10: 20 62 70 73 0d 0a 20 20 20 20 2a 20 20 20 5b 63 bps.. * [c
0c20: 61 70 61 62 69 6c 69 74 79 5d 5b 63 61 70 73 5d apability][caps]
0c30: 20 72 65 73 74 72 69 63 74 69 6f 6e 73 0d 0a 20 restrictions..
0c40: 20 20 20 2a 20 20 20 5b 73 65 63 63 6f 6d 70 20 * [seccomp
0c50: 70 72 6f 66 69 6c 65 73 5d 28 68 74 74 70 73 3a profiles](https:
0c60: 2f 2f 64 6f 63 73 2e 64 6f 63 6b 65 72 2e 63 6f //docs.docker.co
0c70: 6d 2f 65 6e 67 69 6e 65 2f 73 65 63 75 72 69 74 m/engine/securit
0c80: 79 2f 73 65 63 63 6f 6d 70 2f 29 0d 0a 20 20 20 y/seccomp/)..
0c90: 20 2a 20 20 20 5b 72 6c 69 6d 69 74 5d 0d 0a 2a * [rlimit]..*
0ca0: 20 20 20 68 61 72 64 77 61 72 65 20 70 61 73 73 hardware pass
0cb0: 2d 74 68 72 75 3a 0d 0a 20 20 20 20 2a 20 20 20 -thru:.. *
0cc0: 55 53 42 20 64 65 76 69 63 65 20 65 6e 74 72 69 USB device entri
0cd0: 65 73 20 75 6e 64 65 72 20 60 2f 64 65 76 60 20 es under `/dev`
0ce0: 61 72 65 20 6f 6e 20 74 68 65 20 77 69 73 68 20 are on the wish
0cf0: 6c 69 73 74 2c 20 62 75 74 20 6e 6f 74 20 63 75 list, but not cu
0d00: 72 72 65 6e 74 6c 79 20 61 76 61 69 6c 61 62 6c rrently availabl
0d10: 65 2e 28 5e 4e 6f 74 20 75 6e 6c 65 73 73 20 52 e.(^Not unless R
0d20: 6f 75 74 65 72 4f 53 20 69 74 73 65 6c 66 20 73 outerOS itself s
0d30: 65 65 73 20 74 68 65 20 55 53 42 20 64 65 76 69 ees the USB devi
0d40: 63 65 2c 20 61 73 20 77 69 74 68 20 73 74 6f 72 ce, as with stor
0d50: 61 67 65 20 6d 65 64 69 61 2c 20 77 68 69 63 68 age media, which
0d60: 20 79 6f 75 20 63 61 6e 20 62 69 6e 64 2d 6d 6f you can bind-mo
0d70: 75 6e 74 20 69 6e 74 6f 20 74 68 65 20 63 6f 6e unt into the con
0d80: 74 61 69 6e 65 72 20 77 69 74 68 20 e2 80 9c 60 tainer with “`
0d90: 2f 63 6f 6e 74 61 69 6e 65 72 2f 61 64 64 20 6d /container/add m
0da0: 6f 75 6e 74 73 3d e2 80 a6 60 e2 80 9d 2e 29 0d ounts=…`”.).
0db0: 0a 20 20 20 20 2a 20 20 20 54 68 65 72 65 20 69 . * There i
0dc0: 73 20 6e 6f 20 47 50 55 20 73 75 70 70 6f 72 74 s no GPU support
0dd0: 2c 20 6e 6f 74 20 65 76 65 6e 20 66 6f 72 20 62 , not even for b
0de0: 61 72 65 2d 6d 65 74 61 6c 20 78 38 36 20 69 6e are-metal x86 in
0df0: 73 74 61 6c 6c 73 2e 0d 0a 0d 0a 4c 61 63 6b 20 stalls.....Lack
0e00: 6f 66 20 61 20 6d 61 6e 61 67 65 6d 65 6e 74 20 of a management
0e10: 64 61 65 6d 6f 6e 28 5e 60 63 6f 6e 74 61 69 6e daemon(^`contain
0e20: 65 72 64 60 20 69 6e 20 6d 6f 64 65 72 6e 20 73 erd` in modern s
0e30: 65 74 75 70 73 2c 20 60 64 6f 63 6b 65 72 64 60 etups, `dockerd`
0e40: 20 69 6e 20 6f 6c 64 20 6f 6e 65 73 29 20 69 73 in old ones) is
0e50: 20 6e 6f 74 20 69 6e 20 74 68 61 74 20 6c 69 73 not in that lis
0e60: 74 20 62 65 63 61 75 73 65 20 61 20 67 6f 6f 64 t because a good
0e70: 20 62 69 74 20 6f 66 20 44 6f 63 6b 65 72 e2 80 bit of Docker
0e80: 99 73 20 63 6f 6d 70 65 74 69 74 69 6f 6e 20 61 s competition a
0e90: 6c 73 6f 20 6c 61 63 6b 73 20 74 68 69 73 2c 20 lso lacks this,
0ea0: 6f 6e 20 70 75 72 70 6f 73 65 2e 20 42 65 74 77 on purpose. Betw
0eb0: 65 65 6e 20 74 68 61 74 20 61 6e 64 20 74 68 65 een that and the
0ec0: 20 6f 74 68 65 72 20 69 74 65 6d 73 20 6f 6e 20 other items on
0ed0: 74 68 65 20 6c 69 73 74 2c 20 74 68 65 20 66 61 the list, the fa
0ee0: 69 72 65 73 74 20 63 6f 6d 70 61 72 69 73 6f 6e irest comparison
0ef0: 20 69 73 20 6e 6f 74 20 74 6f 20 66 75 6c 6c 79 is not to fully
0f00: 2d 66 65 61 74 75 72 65 64 20 63 6f 6e 74 61 69 -featured contai
0f10: 6e 65 72 20 2a 65 6e 67 69 6e 65 73 2a 20 6c 69 ner *engines* li
0f20: 6b 65 20 44 6f 63 6b 65 72 20 61 6e 64 20 50 6f ke Docker and Po
0f30: 64 6d 61 6e 20 62 75 74 20 74 6f 20 74 68 65 20 dman but to the
0f40: 63 6f 6e 74 61 69 6e 65 72 20 2a 72 75 6e 6e 65 container *runne
0f50: 72 2a 20 61 74 20 74 68 65 69 72 20 68 65 61 72 r* at their hear
0f60: 74 3a 0d 0a 0d 0a 2a 20 2a 2a 72 75 6e 63 2a 2a t:....* **runc**
0f70: 3a 20 31 34 c2 a0 4d 69 42 28 5e 54 68 69 73 20 : 14 MiB(^This
0f80: 69 73 20 74 68 65 20 72 75 6e 6e 65 72 20 75 6e is the runner un
0f90: 64 65 72 70 69 6e 6e 69 6e 67 20 60 63 6f 6e 74 derpinning `cont
0fa0: 61 69 6e 65 72 64 60 2c 20 74 68 75 73 20 61 6c ainerd`, thus al
0fb0: 73 6f 20 44 6f 63 6b 65 72 2c 20 61 6c 74 68 6f so Docker, altho
0fc0: 75 67 68 20 69 74 20 70 72 65 63 65 64 65 73 20 ugh it precedes
0fd0: 69 74 2e 20 4c 6f 6e 67 20 62 65 66 6f 72 65 20 it. Long before
0fe0: 74 68 65 79 20 63 72 65 61 74 65 64 20 60 63 6f they created `co
0ff0: 6e 74 61 69 6e 65 72 64 60 2c 20 69 74 20 75 6e ntainerd`, it un
1000: 64 65 72 70 69 6e 6e 65 64 20 60 64 6f 63 6b 65 derpinned `docke
1010: 72 64 60 20 69 6e 73 74 65 61 64 2e 20 42 65 63 rd` instead. Bec
1020: 61 75 73 65 20 69 74 20 69 73 20 73 6f 20 70 72 ause it is so pr
1030: 69 6d 6f 72 64 69 61 6c 2c 20 61 20 67 6f 6f 64 imordial, a good
1040: 20 6d 61 6e 79 20 6f 74 68 65 72 20 63 6f 6e 74 many other cont
1050: 61 69 6e 65 72 20 65 6e 67 69 6e 65 73 20 61 72 ainer engines ar
1060: 65 20 61 6c 73 6f 20 62 61 73 65 64 20 6f 6e 20 e also based on
1070: 69 74 2e 29 0d 0a 2a 20 2a 2a 63 72 75 6e 2a 2a it.)..* **crun**
1080: 3a 20 30 2e 35 c2 a0 4d 69 42 28 5e 54 68 69 73 : 0.5 MiB(^This
1090: 20 69 73 20 50 6f 64 6d 61 6e e2 80 99 73 20 61 is Podman’s a
10a0: 6c 74 65 72 6e 61 74 69 76 65 20 74 6f 20 60 72 lternative to `r
10b0: 75 6e 63 60 2c 20 77 72 69 74 74 65 6e 20 69 6e unc`, written in
10c0: 20 43 20 74 6f 20 6d 61 6b 65 20 69 74 20 73 6d C to make it sm
10d0: 61 6c 6c 65 72 2e 20 45 61 72 6c 79 20 76 65 72 aller. Early ver
10e0: 73 69 6f 6e 73 20 6f 66 20 50 6f 64 6d 61 6e 20 sions of Podman
10f0: 6f 6e 63 65 20 72 65 6c 69 65 64 20 6f 6e 20 60 once relied on `
1100: 72 75 6e 63 60 2c 20 61 6e 64 20 69 74 20 63 61 runc`, and it ca
1110: 6e 20 73 74 69 6c 6c 20 62 65 20 63 6f 6e 66 69 n still be confi
1120: 67 75 72 65 64 20 74 6f 20 75 73 65 20 69 74 2c gured to use it,
1130: 20 62 75 74 20 74 68 65 20 6e 65 77 20 64 65 66 but the new def
1140: 61 75 6c 74 20 69 73 20 74 6f 20 75 73 65 20 74 ault is to use t
1150: 68 65 20 73 6c 69 6d 6d 65 72 20 62 75 74 20 66 he slimmer but f
1160: 65 61 74 75 72 65 2d 65 71 75 69 76 61 6c 65 6e eature-equivalen
1170: 74 20 60 63 72 75 6e 60 2e 29 0d 0a 2a 20 2a 2a t `crun`.)..* **
1180: 73 79 73 74 65 6d 64 2d 6e 73 70 61 77 6e 2a 2a systemd-nspawn**
1190: 3a 20 31 2e 33 c2 a0 4d 69 42 28 5e 5b 54 68 69 : 1.3 MiB(^[Thi
11a0: 73 5d 5b 73 64 6e 73 70 5d 20 69 73 20 74 68 65 s][sdnsp] is the
11b0: 20 62 61 72 65 2d 62 6f 6e 65 73 20 5b 4f 43 49 bare-bones [OCI
11c0: 5d 20 69 6d 61 67 65 20 72 75 6e 6e 65 72 20 62 ] image runner b
11d0: 75 69 6c 74 20 69 6e 74 6f 20 73 79 73 74 65 6d uilt into system
11e0: 64 2c 20 77 69 74 68 20 61 20 66 65 61 74 75 72 d, with a featur
11f0: 65 20 73 65 74 20 66 61 69 72 6c 79 20 63 6c 6f e set fairly clo
1200: 73 65 20 74 6f 20 74 68 61 74 20 6f 66 20 60 63 se to that of `c
1210: 6f 6e 74 61 69 6e 65 72 2e 6e 70 6b 60 2e 20 54 ontainer.npk`. T
1220: 68 65 20 73 69 7a 65 20 61 62 6f 76 65 20 69 73 he size above is
1230: 20 66 6f 72 20 76 65 72 73 69 6f 6e 20 32 35 32 for version 252
1240: 20 6f 66 20 74 68 69 73 20 70 72 6f 67 72 61 6d of this program
1250: e2 80 99 73 20 70 61 72 65 6e 74 20 5b 60 73 79 ’s parent [`sy
1260: 73 74 65 6d 64 2d 63 6f 6e 74 61 69 6e 65 72 60 stemd-container`
1270: 5d 5b 73 64 63 6e 74 5d 20 70 61 63 6b 61 67 65 ][sdcnt] package
1280: 20 61 73 20 73 68 69 70 70 65 64 20 6f 6e 20 45 as shipped on E
1290: 4c 39 2e 29 0d 0a 0d 0a 4f 6e 65 20 72 65 61 73 L9.)....One reas
12a0: 6f 6e 20 60 63 6f 6e 74 61 69 6e 65 72 2e 6e 70 on `container.np
12b0: 6b 60 20 69 73 20 66 61 72 20 73 6d 61 6c 6c 65 k` is far smalle
12c0: 72 20 74 68 61 6e 20 65 76 65 6e 20 74 68 65 20 r than even the
12d0: 73 6d 61 6c 6c 65 73 74 20 6f 66 20 74 68 65 73 smallest of thes
12e0: 65 20 72 75 6e 6e 65 72 73 20 69 73 20 74 68 61 e runners is tha
12f0: 74 20 74 68 65 20 65 6e 67 69 6e 65 73 20 64 65 t the engines de
1300: 6c 65 67 61 74 65 20 6d 75 63 68 20 6f 66 20 77 legate much of w
1310: 68 61 74 20 52 6f 75 74 65 72 4f 53 20 6c 61 63 hat RouterOS lac
1320: 6b 73 20 74 6f 20 74 68 65 20 72 75 6e 6e 65 72 ks to the runner
1330: 2c 20 73 6f 20 74 68 61 74 20 65 76 65 6e 20 74 , so that even t
1340: 68 65 6e 20 69 74 e2 80 99 73 20 61 6e 20 75 6e hen it’s an un
1350: 62 61 6c 61 6e 63 65 64 20 63 6f 6d 70 61 72 69 balanced compari
1360: 73 6f 6e 2e 20 54 68 65 20 5b 60 6b 69 6c 6c 60 son. The [`kill`
1370: 5d 28 23 6b 69 6c 6c 29 2c 20 5b 60 70 73 60 5d ](#kill), [`ps`]
1380: 28 23 70 73 29 2c 20 61 6e 64 20 5b 60 70 61 75 (#ps), and [`pau
1390: 73 65 60 5d 28 23 70 61 75 73 65 29 20 63 6f 6d se`](#pause) com
13a0: 6d 61 6e 64 73 20 6d 69 73 73 69 6e 67 20 66 72 mands missing fr
13b0: 6f 6d 20 60 63 6f 6e 74 61 69 6e 65 72 2e 6e 70 om `container.np
13c0: 6b 60 20 61 72 65 20 70 72 6f 76 69 64 65 64 20 k` are provided
13d0: 69 6e 20 44 6f 63 6b 65 72 20 45 6e 67 69 6e 65 in Docker Engine
13e0: 20 77 61 79 20 64 6f 77 6e 20 61 74 20 74 68 65 way down at the
13f0: 20 60 72 75 6e 63 60 20 6c 65 76 65 6c 2c 20 6e `runc` level, n
1400: 6f 74 20 75 70 20 61 74 20 74 68 65 20 74 6f 70 ot up at the top
1410: 2d 6c 65 76 65 6c 20 43 4c 49 2e 0d 0a 0d 0a 57 -level CLI.....W
1420: 69 74 68 20 74 68 69 73 20 67 72 6f 75 6e 64 69 ith this groundi
1430: 6e 67 2c 20 6c 65 74 20 75 73 20 64 69 76 65 20 ng, let us dive
1440: 69 6e 74 6f 20 74 68 65 20 64 65 74 61 69 6c 73 into the details
1450: 2e 0d 0a 0d 0a 5b 63 61 70 73 5d 3a 20 20 20 68 .....[caps]: h
1460: 74 74 70 73 3a 2f 2f 77 77 77 2e 6d 61 6e 37 2e ttps://www.man7.
1470: 6f 72 67 2f 6c 69 6e 75 78 2f 6d 61 6e 2d 70 61 org/linux/man-pa
1480: 67 65 73 2f 6d 61 6e 37 2f 63 61 70 61 62 69 6c ges/man7/capabil
1490: 69 74 69 65 73 2e 37 2e 68 74 6d 6c 0d 0a 5b 43 ities.7.html..[C
14a0: 6f 57 5d 3a 20 20 20 20 68 74 74 70 73 3a 2f 2f oW]: https://
14b0: 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 en.wikipedia.org
14c0: 2f 77 69 6b 69 2f 43 6f 70 79 2d 6f 6e 2d 77 72 /wiki/Copy-on-wr
14d0: 69 74 65 0d 0a 5b 4f 43 49 5d 3a 20 20 20 20 68 ite..[OCI]: h
14e0: 74 74 70 73 3a 2f 2f 6f 70 65 6e 63 6f 6e 74 61 ttps://openconta
14f0: 69 6e 65 72 73 2e 6f 72 67 2f 0d 0a 5b 72 6c 69 iners.org/..[rli
1500: 6d 69 74 5d 3a 20 68 74 74 70 73 3a 2f 2f 77 77 mit]: https://ww
1510: 77 2e 6d 61 6e 37 2e 6f 72 67 2f 6c 69 6e 75 78 w.man7.org/linux
1520: 2f 6d 61 6e 2d 70 61 67 65 73 2f 6d 61 6e 32 2f /man-pages/man2/
1530: 67 65 74 72 6c 69 6d 69 74 2e 32 2e 68 74 6d 6c getrlimit.2.html
1540: 0d 0a 5b 73 64 63 6e 74 5d 3a 20 20 68 74 74 70 ..[sdcnt]: http
1550: 73 3a 2f 2f 70 61 63 6b 61 67 65 73 2e 66 65 64 s://packages.fed
1560: 6f 72 61 70 72 6f 6a 65 63 74 2e 6f 72 67 2f 70 oraproject.org/p
1570: 6b 67 73 2f 73 79 73 74 65 6d 64 2f 73 79 73 74 kgs/systemd/syst
1580: 65 6d 64 2d 63 6f 6e 74 61 69 6e 65 72 2f 0d 0a emd-container/..
1590: 5b 73 64 6e 73 70 5d 3a 20 20 68 74 74 70 73 3a [sdnsp]: https:
15a0: 2f 2f 77 69 6b 69 2e 61 72 63 68 6c 69 6e 75 78 //wiki.archlinux
15b0: 2e 6f 72 67 2f 74 69 74 6c 65 2f 53 79 73 74 65 .org/title/Syste
15c0: 6d 64 2d 6e 73 70 61 77 6e 0d 0a 0d 0a 0d 0a 23 md-nspawn......#
15d0: 23 20 3c 61 20 69 64 3d 22 63 72 65 61 74 65 22 # <a id="create"
15e0: 20 6e 61 6d 65 3d 22 6c 6f 61 64 22 3e 3c 2f 61 name="load"></a
15f0: 3e 43 6f 6e 74 61 69 6e 65 72 20 43 72 65 61 74 >Container Creat
1600: 69 6f 6e 0d 0a 0d 0a 54 68 65 20 73 69 6e 67 6c ion....The singl
1610: 65 20 62 69 67 67 65 73 74 20 61 72 65 61 20 6f e biggest area o
1620: 66 20 64 69 66 66 65 72 65 6e 63 65 20 62 65 74 f difference bet
1630: 77 65 65 6e 20 74 68 65 20 6c 69 6b 65 73 20 6f ween the likes o
1640: 66 20 44 6f 63 6b 65 72 20 61 6e 64 20 74 68 65 f Docker and the
1650: 20 52 6f 75 74 65 72 4f 53 20 60 63 6f 6e 74 61 RouterOS `conta
1660: 69 6e 65 72 2e 6e 70 6b 60 20 66 65 61 74 75 72 iner.npk` featur
1670: 65 20 69 73 20 68 6f 77 20 79 6f 75 20 63 72 65 e is how you cre
1680: 61 74 65 20 63 6f 6e 74 61 69 6e 65 72 73 20 66 ate containers f
1690: 72 6f 6d 20 5b 4f 43 49 5d 20 69 6d 61 67 65 73 rom [OCI] images
16a0: 2e 20 49 74 20 63 6f 6d 62 69 6e 65 73 20 44 6f . It combines Do
16b0: 63 6b 65 72 e2 80 99 73 20 60 63 72 65 61 74 65 cker’s `create
16c0: 60 20 61 6e 64 20 60 6c 6f 61 64 60 20 63 6f 6d ` and `load` com
16d0: 6d 61 6e 64 73 20 75 6e 64 65 72 20 60 2f 63 6f mands under `/co
16e0: 6e 74 61 69 6e 65 72 2f 61 64 64 60 2c 20 74 68 ntainer/add`, th
16f0: 65 20 64 69 73 74 69 6e 63 74 69 6f 6e 20 65 78 e distinction ex
1700: 70 72 65 73 73 65 64 20 62 79 20 77 68 65 74 68 pressed by wheth
1710: 65 72 20 79 6f 75 20 67 69 76 65 20 69 74 20 74 er you give it t
1720: 68 65 20 60 72 65 6d 6f 74 65 2d 69 6d 61 67 65 he `remote-image
1730: 60 20 6f 72 20 60 66 69 6c 65 60 20 6f 70 74 69 ` or `file` opti
1740: 6f 6e 2c 20 72 65 73 70 65 63 74 69 76 65 6c 79 on, respectively
1750: 2e 0d 0a 0d 0a 47 69 76 65 6e 20 74 68 65 20 73 .....Given the s
1760: 69 7a 65 20 6f 66 20 74 68 65 20 6f 75 74 70 75 ize of the outpu
1770: 74 20 66 72 6f 6d 20 60 64 6f 63 6b 65 72 20 63 t from `docker c
1780: 72 65 61 74 65 20 2d 2d 68 65 6c 70 60 2c 20 69 reate --help`, i
1790: 74 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 t should not be
17a0: 73 75 72 70 72 69 73 69 6e 67 20 74 68 61 74 20 surprising that
17b0: 74 68 65 20 62 75 6c 6b 20 6f 66 20 74 68 61 74 the bulk of that
17c0: 20 69 73 20 65 69 74 68 65 72 20 6e 6f 74 20 61 is either not a
17d0: 76 61 69 6c 61 62 6c 65 20 69 6e 20 52 6f 75 74 vailable in Rout
17e0: 65 72 4f 53 20 6f 72 20 65 78 69 73 74 73 20 69 erOS or exists i
17f0: 6e 20 61 20 76 65 72 79 20 64 69 66 66 65 72 65 n a very differe
1800: 6e 74 20 66 6f 72 6d 2e 20 4d 6f 73 74 20 6f 66 nt form. Most of
1810: 20 74 68 65 73 65 20 6c 69 6d 69 74 61 74 69 6f these limitatio
1820: 6e 73 20 73 74 65 6d 20 66 72 6f 6d 20 5b 74 68 ns stem from [th
1830: 65 20 6c 69 73 74 20 61 62 6f 76 65 5d 28 23 67 e list above](#g
1840: 6c 6f 62 61 6c 29 2e 20 46 6f 72 20 69 6e 73 74 lobal). For inst
1850: 61 6e 63 65 2c 20 74 68 65 20 6c 61 63 6b 20 6f ance, the lack o
1860: 66 20 61 6e 79 20 43 50 55 20 75 73 61 67 65 20 f any CPU usage
1870: 6c 69 6d 69 74 20 66 65 61 74 75 72 65 73 20 6d limit features m
1880: 65 61 6e 73 20 74 68 65 72 65 20 69 73 20 6e 6f eans there is no
1890: 20 65 71 75 69 76 61 6c 65 6e 74 20 75 6e 64 65 equivalent unde
18a0: 72 20 60 2f 63 6f 6e 74 61 69 6e 65 72 60 20 66 r `/container` f
18b0: 6f 72 20 74 68 65 20 73 65 76 65 72 61 6c 20 60 or the several `
18c0: 64 6f 63 6b 65 72 20 63 72 65 61 74 65 20 2d 2d docker create --
18d0: 63 70 75 2a 60 20 6f 70 74 69 6f 6e 73 2e 20 52 cpu*` options. R
18e0: 61 74 68 65 72 20 74 68 61 6e 20 67 6f 20 69 6e ather than go in
18f0: 74 6f 20 74 68 65 73 65 20 6f 70 74 69 6f 6e 73 to these options
1900: 20 6f 6e 65 20 62 79 20 6f 6e 65 2c 20 49 e2 80 one by one, I
1910: 99 6c 6c 20 63 6f 76 65 72 20 74 68 65 20 6f 6e ll cover the on
1920: 65 73 20 77 68 65 72 65 20 74 68 65 20 61 6e 73 es where the ans
1930: 77 65 72 73 20 63 61 6e 6e 6f 74 20 62 65 20 67 wers cannot be g
1940: 6c 65 61 6e 65 64 20 74 68 72 6f 75 67 68 20 61 leaned through a
1950: 20 63 61 72 65 66 75 6c 20 72 65 61 64 69 6e 67 careful reading
1960: 20 6f 66 20 74 68 65 20 72 65 73 74 20 6f 66 20 of the rest of
1970: 74 68 69 73 20 61 72 74 69 63 6c 65 3a 0d 0a 0d this article:...
1980: 0a 2a 20 20 20 2a 2a 60 2d 2d 65 6e 76 60 2a 2a .* **`--env`**
1990: 3a 20 54 68 65 20 65 71 75 69 76 61 6c 65 6e 74 : The equivalent
19a0: 20 69 73 20 74 68 69 73 20 52 6f 75 74 65 72 4f is this RouterO
19b0: 53 20 63 6f 6d 6d 61 6e 64 20 70 61 69 72 3a 0d S command pair:.
19c0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 63 6f 6e 74 ... /cont
19d0: 61 69 6e 65 72 2f 65 6e 76 73 2f 61 64 64 20 6e ainer/envs/add n
19e0: 61 6d 65 3d 4e 41 4d 45 20 e2 80 a6 0d 0a 20 20 ame=NAME …..
19f0: 20 20 20 20 20 20 2f 63 6f 6e 74 61 69 6e 65 72 /container
1a00: 2f 61 64 64 20 65 6e 76 6c 69 73 74 3d 4e 41 4d /add envlist=NAM
1a10: 45 20 e2 80 a6 0d 0a 0d 0a 20 20 20 20 54 68 69 E ….... Thi
1a20: 73 20 69 73 20 69 6e 20 66 61 63 74 20 63 6c 6f s is in fact clo
1a30: 73 65 72 20 74 6f 20 74 68 65 20 77 61 79 20 74 ser to the way t
1a40: 68 65 20 2a 2a 60 2d 2d 65 6e 76 2d 66 69 6c 65 he **`--env-file
1a50: 60 2a 2a 20 6f 70 74 69 6f 6e 20 77 6f 72 6b 73 `** option works
1a60: 2c 20 65 78 63 65 70 74 20 74 68 61 74 20 75 6e , except that un
1a70: 64 65 72 20 52 6f 75 74 65 72 4f 53 2c 20 74 68 der RouterOS, th
1a80: 69 73 20 70 61 72 74 69 63 75 6c 61 72 20 e2 80 is particular
1a90: 9c 66 69 6c 65 e2 80 9d 20 69 73 6e e2 80 99 74 file” isn’t
1aa0: 20 73 74 6f 72 65 64 20 75 6e 64 65 72 20 60 2f stored under `/
1ab0: 66 69 6c 65 60 21 0d 0a 0d 0a 2a 20 20 20 2a 2a file`!....* **
1ac0: 60 2d 2d 65 78 70 6f 73 65 60 2f 60 2d 2d 70 75 `--expose`/`--pu
1ad0: 62 6c 69 73 68 60 2a 2a 3a 20 3c 61 20 69 64 3d blish`**: <a id=
1ae0: 22 70 75 62 6c 69 73 68 22 3e 3c 2f 61 3e 54 68 "publish"></a>Th
1af0: 65 20 56 45 54 48 20 79 6f 75 20 61 74 74 61 63 e VETH you attac
1b00: 68 20 74 68 65 20 63 6f 6e 74 61 69 6e 65 72 20 h the container
1b10: 74 6f 20 6d 61 6b 65 73 20 65 76 65 72 79 20 6c to makes every l
1b20: 69 73 74 65 6e 69 6e 67 20 73 6f 63 6b 65 74 20 istening socket
1b30: 76 69 73 69 62 6c 65 20 62 79 20 64 65 66 61 75 visible by defau
1b40: 6c 74 2e 20 49 74 20 69 73 20 6c 65 66 74 20 75 lt. It is left u
1b50: 70 20 74 6f 20 79 6f 75 20 74 6f 20 6d 61 6e 75 p to you to manu
1b60: 61 6c 6c 79 20 62 6c 6f 63 6b 20 6f 66 66 20 61 ally block off a
1b70: 6e 79 74 68 69 6e 67 20 65 78 70 6f 73 65 64 20 nything exposed
1b80: 61 67 61 69 6e 73 74 20 79 6f 75 72 20 77 69 73 against your wis
1b90: 68 65 73 20 62 79 20 75 73 65 20 6f 66 20 60 2f hes by use of `/
1ba0: 69 70 2f 66 69 72 65 77 61 6c 6c 2f 66 69 6c 74 ip/firewall/filt
1bb0: 65 72 60 20 63 6f 6d 6d 61 6e 64 73 2e 0d 0a 0d er` commands....
1bc0: 0a 2a 20 20 20 2a 2a 60 2d 2d 68 65 61 6c 74 68 .* **`--health
1bd0: 2d 63 6d 64 60 2a 2a 3a 20 42 65 63 61 75 73 65 -cmd`**: Because
1be0: 20 68 65 61 6c 74 68 2d 63 68 65 63 6b 73 20 61 health-checks a
1bf0: 72 65 20 6f 66 74 65 6e 20 69 6d 70 6c 65 6d 65 re often impleme
1c00: 6e 74 65 64 20 62 79 20 70 65 72 69 6f 64 69 63 nted by periodic
1c10: 20 41 50 49 20 63 61 6c 6c 73 20 74 6f 20 76 65 API calls to ve
1c20: 72 69 66 79 20 74 68 61 74 20 74 68 65 20 63 6f rify that the co
1c30: 6e 74 61 69 6e 65 72 20 63 6f 6e 74 69 6e 75 65 ntainer continue
1c40: 73 20 74 6f 20 72 75 6e 20 70 72 6f 70 65 72 6c s to run properl
1c50: 79 2c 20 74 68 65 20 6c 6f 67 69 63 61 6c 20 65 y, the logical e
1c60: 71 75 69 76 61 6c 65 6e 74 20 75 6e 64 65 72 20 quivalent under
1c70: 52 6f 75 74 65 72 4f 53 20 69 73 20 74 6f 20 5b RouterOS is to [
1c80: 73 63 72 69 70 74 5d 20 63 61 6c 6c 73 20 74 6f script] calls to
1c90: 20 5b 60 2f 66 65 74 63 68 60 5d 28 68 74 74 70 [`/fetch`](http
1ca0: 73 3a 2f 2f 68 65 6c 70 2e 6d 69 6b 72 6f 74 69 s://help.mikroti
1cb0: 6b 2e 63 6f 6d 2f 64 6f 63 73 2f 64 69 73 70 6c k.com/docs/displ
1cc0: 61 79 2f 52 4f 53 2f 46 65 74 63 68 29 2c 20 77 ay/ROS/Fetch), w
1cd0: 68 69 63 68 20 74 68 65 6e 20 69 73 73 75 65 73 hich then issues
1ce0: 20 60 2f 63 6f 6e 74 61 69 6e 65 72 2f 7b 73 74 `/container/{st
1cf0: 6f 70 2c 73 74 61 72 74 7d 60 20 63 61 6c 6c 73 op,start}` calls
1d00: 20 74 6f 20 72 65 6d 65 64 69 61 74 65 20 61 6e to remediate an
1d10: 79 20 70 72 6f 62 6c 65 6d 73 20 69 74 20 66 69 y problems it fi
1d20: 6e 64 73 2e 0d 0a 0d 0a 2a 20 20 20 2a 2a 60 2d nds.....* **`-
1d30: 2d 69 6e 69 74 60 2a 2a 3a 20 41 6c 74 68 6f 75 -init`**: Althou
1d40: 67 68 20 74 68 65 72 65 20 69 73 20 6e 6f 20 64 gh there is no d
1d50: 69 72 65 63 74 20 65 71 75 69 76 61 6c 65 6e 74 irect equivalent
1d60: 20 74 6f 20 74 68 69 73 20 69 6e 20 52 6f 75 74 to this in Rout
1d70: 65 72 4f 53 2c 20 6e 6f 74 68 69 6e 67 20 73 74 erOS, nothing st
1d80: 6f 70 73 20 79 6f 75 20 66 72 6f 6d 20 64 6f 69 ops you from doi
1d90: 6e 67 20 69 74 20 74 68 65 20 6f 6c 64 2d 73 63 ng it the old-sc
1da0: 68 6f 6f 6c 20 77 61 79 2c 20 63 72 65 61 74 69 hool way, creati
1db0: 6e 67 20 61 20 63 6f 6e 74 61 69 6e 65 72 20 74 ng a container t
1dc0: 68 61 74 20 63 61 6c 6c 73 20 e2 80 9c 60 45 4e hat calls “`EN
1dd0: 54 52 59 50 4f 49 4e 54 20 2f 73 62 69 6e 2f 69 TRYPOINT /sbin/i
1de0: 6e 69 74 60 e2 80 9d 20 6f 72 20 73 69 6d 69 6c nit`” or simil
1df0: 61 72 2c 20 77 68 69 63 68 20 74 68 65 6e 20 73 ar, which then s
1e00: 74 61 72 74 73 20 74 68 65 20 73 75 62 6f 72 64 tarts the subord
1e10: 69 6e 61 74 65 20 73 65 72 76 69 63 65 73 20 69 inate services i
1e20: 6e 73 69 64 65 20 74 68 61 74 20 63 6f 6e 74 61 nside that conta
1e30: 69 6e 65 72 2e 20 49 74 20 77 6f 75 6c 64 20 62 iner. It would b
1e40: 65 20 73 6f 6d 65 77 68 61 74 20 73 69 6c 6c 79 e somewhat silly
1e50: 20 74 6f 20 75 73 65 20 73 79 73 74 65 6d 64 20 to use systemd
1e60: 66 6f 72 20 74 68 69 73 20 69 6e 20 61 20 63 6f for this in a co
1e70: 6e 74 61 69 6e 65 72 20 6d 65 61 6e 74 20 74 6f ntainer meant to
1e80: 20 72 75 6e 20 6f 6e 20 52 6f 75 74 65 72 4f 53 run on RouterOS
1e90: 20 69 6e 20 70 61 72 74 69 63 75 6c 61 72 3b 20 in particular;
1ea0: 61 20 6d 6f 72 65 20 73 75 69 74 61 62 6c 65 20 a more suitable
1eb0: 61 6c 74 65 72 6e 61 74 69 76 65 20 77 6f 75 6c alternative woul
1ec0: 64 20 62 65 20 5b 41 6c 70 69 6e 65 e2 80 99 73 d be [Alpine’s
1ed0: 20 4f 70 65 6e 52 43 5d 28 68 74 74 70 73 3a 2f OpenRC](https:/
1ee0: 2f 77 69 6b 69 2e 61 6c 70 69 6e 65 6c 69 6e 75 /wiki.alpinelinu
1ef0: 78 2e 6f 72 67 2f 77 69 6b 69 2f 4f 70 65 6e 52 x.org/wiki/OpenR
1f00: 43 29 20 69 6e 69 74 20 73 79 73 74 65 6d 2c 20 C) init system,
1f10: 61 20 70 6f 70 75 6c 61 72 20 6f 70 74 69 6f 6e a popular option
1f20: 20 66 6f 72 20 6d 61 6e 61 67 69 6e 67 20 69 6e for managing in
1f30: 2d 63 6f 6e 74 61 69 6e 65 72 20 73 65 72 76 69 -container servi
1f40: 63 65 73 2e 0d 0a 0d 0a 2a 20 20 20 2a 2a 60 2d ces.....* **`-
1f50: 2d 6c 61 62 65 6c 60 2a 2a 3a 20 54 68 65 20 63 -label`**: The c
1f60: 6c 6f 73 65 73 74 20 65 71 75 69 76 61 6c 65 6e losest equivalen
1f70: 74 20 69 73 20 52 6f 75 74 65 72 4f 53 e2 80 99 t is RouterOS’
1f80: 73 20 60 63 6f 6d 6d 65 6e 74 60 20 66 61 63 69 s `comment` faci
1f90: 6c 69 74 79 2c 20 77 68 69 63 68 20 79 6f 75 20 lity, which you
1fa0: 63 61 6e 20 61 70 70 6c 79 20 74 6f 20 61 20 72 can apply to a r
1fb0: 75 6e 6e 69 6e 67 20 63 6f 6e 74 61 69 6e 65 72 unning container
1fc0: 20 77 69 74 68 20 e2 80 9c 60 2f 63 6f 6e 74 61 with “`/conta
1fd0: 69 6e 65 72 2f 73 65 74 20 30 20 63 6f 6d 6d 65 iner/set 0 comme
1fe0: 6e 74 3d 4d 59 4c 41 42 45 4c 60 e2 80 9d 2e 0d nt=MYLABEL`”..
1ff0: 0a 0d 0a 2a 20 20 20 2a 2a 60 2d 2d 6d 61 63 2d ...* **`--mac-
2000: 61 64 64 72 65 73 73 60 2a 2a 3a 20 49 66 20 52 address`**: If R
2010: 6f 75 74 65 72 4f 53 20 68 61 64 20 74 68 69 73 outerOS had this
2020: 2c 20 49 20 77 6f 75 6c 64 20 65 78 70 65 63 74 , I would expect
2030: 20 69 74 20 74 6f 20 62 65 20 6f 66 66 65 72 65 it to be offere
2040: 64 20 61 73 20 e2 80 9c 60 2f 69 6e 74 65 72 66 d as “`/interf
2050: 61 63 65 2f 76 65 74 68 2f 73 65 74 20 6d 61 63 ace/veth/set mac
2060: 2d 61 64 64 72 65 73 73 3d e2 80 a6 60 e2 80 9d -address=…`”
2070: 2c 20 62 75 74 20 74 68 61 74 20 64 6f 65 73 20 , but that does
2080: 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79 20 65 78 not currently ex
2090: 69 73 74 2e 20 41 73 20 69 74 20 73 74 61 6e 64 ist. As it stand
20a0: 73 2c 20 61 20 56 45 54 48 20 69 6e 74 65 72 66 s, a VETH interf
20b0: 61 63 65 e2 80 99 73 20 4d 41 43 20 61 64 64 72 ace’s MAC addr
20c0: 65 73 73 20 69 73 20 72 61 6e 64 6f 6d 2c 20 73 ess is random, s
20d0: 61 6d 65 20 61 73 20 74 68 65 20 64 65 66 61 75 ame as the defau
20e0: 6c 74 20 62 65 68 61 76 69 6f 72 20 6f 66 20 44 lt behavior of D
20f0: 6f 63 6b 65 72 2e 0d 0a 0d 0a 2a 20 20 20 2a 2a ocker.....* **
2100: 60 2d 2d 6e 65 74 77 6f 72 6b 60 2a 2a 3a 20 54 `--network`**: T
2110: 68 69 73 20 6f 6e 65 20 69 73 20 74 72 69 63 6b his one is trick
2120: 79 2e 20 57 68 69 6c 65 20 74 68 65 72 65 20 69 y. While there i
2130: 73 20 63 65 72 74 61 69 6e 6c 79 20 6e 6f 74 68 s certainly noth
2140: 69 6e 67 20 6c 69 6b 65 20 e2 80 9c 60 2f 63 6f ing like “`/co
2150: 6e 74 61 69 6e 65 72 2f 61 64 64 20 6e 65 74 77 ntainer/add netw
2160: 6f 72 6b 3d e2 80 a6 60 e2 80 9d 2c 20 69 74 e2 ork=…`”, it
2170: 80 99 73 20 66 61 69 72 20 74 6f 20 73 61 79 20 s fair to say
2180: 74 68 65 20 65 71 75 69 76 61 6c 65 6e 74 20 69 the equivalent i
2190: 73 2c 20 e2 80 9c 52 6f 75 74 65 72 4f 53 2e e2 s, “RouterOS.
21a0: 80 9d 20 59 6f 75 20 61 72 65 2c 20 61 66 74 65 You are, afte
21b0: 72 20 61 6c 6c 2c 20 72 75 6e 6e 69 6e 67 20 74 r all, running t
21c0: 68 69 73 20 63 6f 6e 74 61 69 6e 65 72 20 61 74 his container at
21d0: 6f 70 20 61 20 68 69 67 68 6c 79 20 66 65 61 74 op a highly feat
21e0: 75 72 65 66 75 6c 20 6e 65 74 77 6f 72 6b 20 6f ureful network o
21f0: 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e perating system.
2200: 20 42 61 72 65 2d 62 6f 6e 65 73 20 74 68 65 20 Bare-bones the
2210: 60 63 6f 6e 74 61 69 6e 65 72 2e 6e 70 6b 60 20 `container.npk`
2220: 72 75 6e 74 69 6d 65 20 6d 61 79 20 62 65 2c 20 runtime may be,
2230: 62 75 74 20 61 6e 79 20 6c 69 6d 69 74 61 74 69 but any limitati
2240: 6f 6e 73 20 79 6f 75 20 72 75 6e 20 69 6e 74 6f ons you run into
2250: 20 77 69 74 68 20 74 68 65 20 6e 65 74 77 6f 72 with the networ
2260: 6b 20 69 74 20 61 74 74 61 63 68 65 73 20 74 6f k it attaches to
2270: 20 61 72 65 20 6d 6f 72 65 20 61 20 72 65 66 6c are more a refl
2280: 65 63 74 69 6f 6e 20 6f 66 20 79 6f 75 72 20 69 ection of your i
2290: 6d 61 67 69 6e 61 74 69 6f 6e 20 61 6e 64 20 73 magination and s
22a0: 6b 69 6c 6c 20 74 68 61 6e 20 74 6f 20 6c 61 63 kill than to lac
22b0: 6b 20 6f 66 20 63 6f 6d 6d 61 6e 64 20 6f 70 74 k of command opt
22c0: 69 6f 6e 73 20 75 6e 64 65 72 20 60 2f 63 6f 6e ions under `/con
22d0: 74 61 69 6e 65 72 60 2e 0d 0a 0d 0a 2a 20 20 20 tainer`.....*
22e0: 2a 2a 60 2d 2d 70 69 64 2f 75 73 65 72 6e 73 2f **`--pid/userns/
22f0: 75 74 73 60 2a 2a 3a 20 54 68 65 20 52 6f 75 74 uts`**: The Rout
2300: 65 72 4f 53 20 63 6f 6e 74 61 69 6e 65 72 20 72 erOS container r
2310: 75 6e 6e 65 72 20 6d 75 73 74 20 75 73 65 20 4c unner must use L
2320: 69 6e 75 78 20 6e 61 6d 65 73 70 61 63 65 73 20 inux namespaces
2330: 75 6e 64 65 72 20 74 68 65 20 68 6f 6f 64 2c 20 under the hood,
2340: 62 75 74 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 but it does not
2350: 6f 66 66 65 72 20 79 6f 75 20 63 6f 6e 74 72 6f offer you contro
2360: 6c 20 6f 76 65 72 20 77 68 69 63 68 20 50 49 44 l over which PID
2370: 2c 20 66 69 6c 65 2c 20 6e 65 74 77 6f 72 6b 2c , file, network,
2380: 20 65 74 63 2e 20 6e 61 6d 65 73 70 61 63 65 73 etc. namespaces
2390: 20 65 61 63 68 20 63 6f 6e 74 61 69 6e 65 72 20 each container
23a0: 75 73 65 73 2e 0d 0a 0d 0a 2a 20 20 20 2a 2a 60 uses.....* **`
23b0: 2d 2d 72 65 61 64 2d 6f 6e 6c 79 60 2a 2a 3a 20 --read-only`**:
23c0: 52 6f 75 74 65 72 4f 53 20 6f 66 66 65 72 73 20 RouterOS offers
23d0: 70 72 65 63 69 6f 75 73 20 6c 69 74 74 6c 65 20 precious little
23e0: 69 6e 20 74 65 72 6d 73 20 6f 66 20 66 69 6c 65 in terms of file
23f0: 20 73 79 73 74 65 6d 20 70 65 72 6d 69 73 73 69 system permissi
2400: 6f 6e 20 61 64 6a 75 73 74 6d 65 6e 74 2e 20 41 on adjustment. A
2410: 73 20 61 20 72 75 6c 65 2c 20 69 74 20 69 73 20 s a rule, it is
2420: 62 65 73 74 20 74 6f 20 65 69 74 68 65 72 20 73 best to either s
2430: 68 65 6c 6c 20 69 6e 74 6f 20 74 68 65 20 63 6f hell into the co
2440: 6e 74 61 69 6e 65 72 20 61 6e 64 20 61 64 6a 75 ntainer and adju
2450: 73 74 20 70 65 72 6d 69 73 73 69 6f 6e 73 20 74 st permissions t
2460: 68 65 72 65 20 6f 72 20 72 65 62 75 69 6c 64 20 here or rebuild
2470: 74 68 65 20 63 6f 6e 74 61 69 6e 65 72 20 77 69 the container wi
2480: 74 68 20 74 68 65 20 70 65 72 6d 69 73 73 69 6f th the permissio
2490: 6e 73 20 79 6f 75 20 77 61 6e 74 20 66 72 6f 6d ns you want from
24a0: 20 67 6f 2e 20 41 6e 79 20 65 78 70 65 63 74 61 go. Any expecta
24b0: 74 69 6f 6e 73 20 62 61 73 65 64 20 6f 6e 20 62 tions based on b
24c0: 65 69 6e 67 20 61 62 6c 65 20 74 6f 20 61 64 6a eing able to adj
24d0: 75 73 74 20 61 6e 79 20 6f 66 20 74 68 69 73 20 ust any of this
24e0: 62 65 74 77 65 65 6e 20 69 6d 61 67 65 20 64 6f between image do
24f0: 77 6e 6c 6f 61 64 20 74 69 6d 65 20 61 6e 64 20 wnload time and
2500: 63 6f 6e 74 61 69 6e 65 72 20 63 72 65 61 74 69 container creati
2510: 6f 6e 20 74 69 6d 65 20 61 72 65 20 6c 69 6b 65 on time are like
2520: 6c 79 20 74 6f 20 66 6f 75 6e 64 65 72 2e 0d 0a ly to founder...
2530: 0d 0a 2a 20 20 20 2a 2a 60 2d 2d 72 65 73 74 61 ..* **`--resta
2540: 72 74 60 2a 2a 3a 20 3c 61 20 69 64 3d 22 72 65 rt`**: <a id="re
2550: 73 74 61 72 74 22 3e 3c 2f 61 3e 54 68 65 20 63 start"></a>The c
2560: 6c 6f 73 65 73 74 20 52 6f 75 74 65 72 4f 53 20 losest RouterOS
2570: 67 65 74 73 20 74 6f 20 74 68 69 73 20 69 73 20 gets to this is
2580: 69 74 73 20 60 73 74 61 72 74 2d 6f 6e 2d 62 6f its `start-on-bo
2590: 6f 74 60 20 73 65 74 74 69 6e 67 2c 20 6d 65 61 ot` setting, mea
25a0: 6e 69 6e 67 20 79 6f 75 e2 80 99 64 20 68 61 76 ning you’d hav
25b0: 65 20 74 6f 20 72 65 62 6f 6f 74 20 74 68 65 20 e to reboot the
25c0: 72 6f 75 74 65 72 20 74 6f 20 67 65 74 20 74 68 router to get th
25d0: 65 20 63 6f 6e 74 61 69 6e 65 72 20 74 6f 20 72 e container to r
25e0: 65 73 74 61 72 74 2e 20 49 66 20 79 6f 75 20 77 estart. If you w
25f0: 61 6e 74 20 61 75 74 6f 6d 61 74 69 63 20 72 65 ant automatic re
2600: 73 74 61 72 74 73 2c 20 79 6f 75 20 77 69 6c 6c starts, you will
2610: 20 68 61 76 65 20 74 6f 20 5b 73 63 72 69 70 74 have to [script
2620: 5d 20 69 74 2e 0d 0a 0d 0a 2a 20 20 20 2a 2a 60 ] it.....* **`
2630: 2d 2d 72 6d 60 2a 2a 3a 20 4e 6f 20 64 69 72 65 --rm`**: No dire
2640: 63 74 20 65 71 75 69 76 61 6c 65 6e 74 2e 20 54 ct equivalent. T
2650: 68 65 72 65 20 69 73 20 61 20 6d 61 6e 75 61 6c here is a manual
2660: 20 60 2f 63 6f 6e 74 61 69 6e 65 72 2f 72 65 6d `/container/rem
2670: 6f 76 65 60 20 63 6f 6d 6d 61 6e 64 2c 20 62 75 ove` command, bu
2680: 74 20 6e 6f 74 68 69 6e 67 20 6c 69 6b 65 20 74 t nothing like t
2690: 68 69 73 20 6f 70 74 69 6f 6e 2c 20 77 68 69 63 his option, whic
26a0: 68 20 63 61 75 73 65 73 20 74 68 65 20 63 6f 6e h causes the con
26b0: 74 61 69 6e 65 72 20 72 75 6e 74 69 6d 65 20 74 tainer runtime t
26c0: 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 o automatically
26d0: 72 65 6d 6f 76 65 20 74 68 65 20 69 6e 73 74 61 remove the insta
26e0: 6e 74 69 61 74 65 64 20 63 6f 6e 74 61 69 6e 65 ntiated containe
26f0: 72 20 61 66 74 65 72 20 69 74 20 65 78 69 74 73 r after it exits
2700: 2e 20 49 74 e2 80 99 73 20 6a 75 73 74 20 61 73 . It’s just as
2710: 20 77 65 6c 6c 20 73 69 6e 63 65 20 74 68 69 73 well since this
2720: 20 6f 70 74 69 6f 6e 20 69 73 20 6d 6f 73 74 20 option is most
2730: 6f 66 74 65 6e 20 75 73 65 64 20 77 68 65 6e 20 often used when
2740: 72 75 6e 6e 69 6e 67 20 5f 61 64 20 68 6f 63 5f running _ad hoc_
2750: 20 63 6f 6e 74 61 69 6e 65 72 73 20 6d 61 64 65 containers made
2760: 20 66 72 6f 6d 20 61 20 70 72 65 76 69 6f 75 73 from a previous
2770: 6c 79 20 64 6f 77 6e 6c 6f 61 64 65 64 20 69 6d ly downloaded im
2780: 61 67 65 3b 20 52 6f 75 74 65 72 4f 53 e2 80 99 age; RouterOS’
2790: 73 20 6c 61 63 6b 20 6f 66 20 61 6e 20 69 6d 61 s lack of an ima
27a0: 67 65 20 63 61 63 68 65 20 6d 65 61 6e 73 20 79 ge cache means y
27b0: 6f 75 20 68 61 76 65 20 74 6f 20 67 6f 20 6f 75 ou have to go ou
27c0: 74 20 6f 66 20 79 6f 75 72 20 77 61 79 20 74 6f t of your way to
27d0: 20 65 78 70 6f 72 74 20 61 20 74 61 72 62 61 6c export a tarbal
27e0: 6c 20 6f 66 20 74 68 65 20 69 6d 61 67 65 20 61 l of the image a
27f0: 6e 64 20 75 70 6c 6f 61 64 20 69 74 20 74 6f 20 nd upload it to
2800: 74 68 65 20 72 6f 75 74 65 72 2c 20 74 68 65 6e the router, then
2810: 20 75 73 65 20 e2 80 9c 60 2f 63 6f 6e 74 61 69 use “`/contai
2820: 6e 65 72 2f 61 64 64 20 66 69 6c 65 3d e2 80 a6 ner/add file=…
2830: 60 e2 80 9d 20 69 66 20 79 6f 75 20 77 61 6e 74 `” if you want
2840: 20 74 6f 20 61 76 6f 69 64 20 72 65 2d 64 6f 77 to avoid re-dow
2850: 6e 6c 6f 61 64 69 6e 67 20 74 68 65 20 69 6d 61 nloading the ima
2860: 67 65 20 66 72 6f 6d 20 74 68 65 20 72 65 70 6f ge from the repo
2870: 73 69 74 6f 72 79 20 6f 6e 20 65 61 63 68 20 72 sitory on each r
2880: 65 6c 61 75 6e 63 68 2e 0d 0a 0d 0a 54 68 61 74 elaunch.....That
2890: 20 62 72 69 6e 67 73 20 75 73 20 74 6f 20 74 68 brings us to th
28a0: 65 20 72 65 6c 61 74 65 64 20 6d 61 74 74 65 72 e related matter
28b0: 20 6f 66 e2 80 a6 0d 0a 0d 0a 5b 73 63 72 69 70 of…....[scrip
28c0: 74 5d 3a 20 68 74 74 70 73 3a 2f 2f 68 65 6c 70 t]: https://help
28d0: 2e 6d 69 6b 72 6f 74 69 6b 2e 63 6f 6d 2f 64 6f .mikrotik.com/do
28e0: 63 73 2f 64 69 73 70 6c 61 79 2f 52 4f 53 2f 53 cs/display/ROS/S
28f0: 63 72 69 70 74 69 6e 67 0d 0a 0d 0a 0d 0a 23 20 cripting......#
2900: 3c 61 20 69 64 3d 22 72 75 6e 22 3e 3c 2f 61 3e <a id="run"></a>
2910: 54 68 65 72 65 20 49 73 20 4e 6f 20 e2 80 9c 52 There Is No “R
2920: 75 6e e2 80 9d 0d 0a 0d 0a 52 6f 75 74 65 72 4f un”....RouterO
2930: 53 20 6f 66 66 65 72 73 20 6e 6f 20 73 68 6f 72 S offers no shor
2940: 74 68 61 6e 64 20 63 6f 6d 6d 61 6e 64 20 61 6b thand command ak
2950: 69 6e 20 74 6f 20 60 64 6f 63 6b 65 72 20 72 75 in to `docker ru
2960: 6e 60 20 66 6f 72 20 63 72 65 61 74 69 6e 67 20 n` for creating
2970: 61 6e 64 20 73 74 61 72 74 69 6e 67 20 61 20 63 and starting a c
2980: 6f 6e 74 61 69 6e 65 72 20 69 6e 20 61 20 73 69 ontainer in a si
2990: 6e 67 6c 65 20 73 74 65 70 2e 20 4d 6f 72 65 6f ngle step. Moreo
29a0: 76 65 72 2c 20 74 68 65 20 6c 61 63 6b 20 6f 66 ver, the lack of
29b0: 20 4c 69 6e 75 78 2d 6c 69 6b 65 20 69 6e 74 65 Linux-like inte
29c0: 72 61 63 74 69 76 65 20 74 65 72 6d 69 6e 61 6c ractive terminal
29d0: 20 68 61 6e 64 6c 69 6e 67 20 e2 80 94 20 63 6f handling — co
29e0: 76 65 72 65 64 20 5b 62 65 6c 6f 77 5d 28 23 74 vered [below](#t
29f0: 65 72 6d 69 6e 61 6c 29 20 e2 80 94 20 6d 65 61 erminal) — mea
2a00: 6e 73 20 61 20 73 69 6d 70 6c 65 20 63 6f 6d 6d ns a simple comm
2a10: 61 6e 64 20 6c 69 6b 65 e2 80 a6 0d 0a 0d 0a 20 and like…....
2a20: 20 20 20 24 20 64 6f 63 6b 65 72 20 72 75 6e 20 $ docker run
2a30: 2d 2d 72 6d 20 2d 69 74 20 61 6c 70 69 6e 65 3a --rm -it alpine:
2a40: 6c 61 74 65 73 74 0d 0a 0d 0a e2 80 a6 66 6f 6c latest....…fol
2a50: 6c 6f 77 65 64 20 62 79 e2 80 a6 0d 0a 0d 0a 20 lowed by…....
2a60: 20 20 20 73 68 2d 35 2e 31 23 20 3c 64 6f 20 73 sh-5.1# <do s
2a70: 6f 6d 65 74 68 69 6e 67 20 69 6e 73 69 64 65 20 omething inside
2a80: 74 68 65 20 63 6f 6e 74 61 69 6e 65 72 3e 0d 0a the container>..
2a90: 20 20 20 20 73 68 2d 35 2e 31 23 20 65 78 69 74 sh-5.1# exit
2aa0: 0d 0a 0d 0a e2 80 a6 6d 61 79 20 65 6e 64 20 75 ....…may end u
2ab0: 70 20 65 78 70 72 65 73 73 65 64 20 75 6e 64 65 p expressed unde
2ac0: 72 20 52 6f 75 74 65 72 4f 53 20 61 73 e2 80 a6 r RouterOS as…
2ad0: 0d 0a 0d 0a 20 20 20 20 3e 20 2f 63 6f 6e 74 61 .... > /conta
2ae0: 69 6e 65 72 0d 0a 20 20 20 20 3e 20 61 64 64 20 iner.. > add
2af0: 72 65 6d 6f 74 65 2d 69 6d 61 67 65 3d 61 6c 70 remote-image=alp
2b00: 69 6e 65 3a 6c 61 74 65 73 74 20 76 65 74 68 3d ine:latest veth=
2b10: 76 65 74 68 31 20 65 6e 74 72 79 70 6f 69 6e 74 veth1 entrypoint
2b20: 3d 73 6c 65 65 70 20 63 6d 64 3d 33 36 30 30 0d =sleep cmd=3600.
2b30: 0a 20 20 20 20 3e 20 70 72 69 6e 74 0d 0a 20 20 . > print..
2b40: 20 20 e2 80 a6 20 6e 6f 70 65 2c 20 73 74 69 6c … nope, stil
2b50: 6c 20 64 6f 77 6e 6c 6f 61 64 69 6e 67 2c 20 77 l downloading, w
2b60: 61 69 74 20 e2 80 a6 0d 0a 20 20 20 20 3e 20 70 ait ….. > p
2b70: 72 69 6e 74 0d 0a 20 20 20 20 e2 80 a6 20 6e 6f rint.. … no
2b80: 70 65 2c 20 73 74 69 6c 6c 20 65 78 74 72 61 63 pe, still extrac
2b90: 74 69 6e 67 2c 20 77 61 69 74 20 6c 6f 6e 67 65 ting, wait longe
2ba0: 72 20 e2 80 a6 0d 0a 20 20 20 20 3e 20 70 72 69 r ….. > pri
2bb0: 6e 74 0d 0a 20 20 20 20 e2 80 a6 20 6f 68 2c 20 nt.. … oh,
2bc0: 67 6f 6f 64 2c 20 67 6f 74 20 74 68 65 20 63 6f good, got the co
2bd0: 6e 74 61 69 6e 65 72 20 49 44 20 e2 80 a6 0d 0a ntainer ID …..
2be0: 20 20 20 20 3e 20 73 74 61 72 74 20 30 0d 0a 20 > start 0..
2bf0: 20 20 20 e2 80 a6 20 77 61 69 74 20 66 6f 72 20 … wait for
2c00: 69 74 20 74 6f 20 6c 61 75 6e 63 68 20 e2 80 a6 it to launch …
2c10: 0d 0a 20 20 20 20 3e 20 73 68 65 6c 6c 20 30 0d .. > shell 0.
2c20: 0a 20 20 20 20 73 68 2d 35 2e 31 23 20 3c 64 6f . sh-5.1# <do
2c30: 20 73 6f 6d 65 74 68 69 6e 67 20 69 6e 73 69 64 something insid
2c40: 65 20 74 68 65 20 63 6f 6e 74 61 69 6e 65 72 3e e the container>
2c50: 0d 0a 20 20 20 20 73 68 2d 35 2e 31 23 20 65 78 .. sh-5.1# ex
2c60: 69 74 0d 0a 20 20 20 20 3e 20 73 74 6f 70 20 30 it.. > stop 0
2c70: 0d 0a 20 20 20 20 3e 20 72 65 6d 6f 76 65 20 30 .. > remove 0
2c80: 0d 0a 0d 0a 57 68 65 77 21 20 f0 9f 98 85 0d 0a ....Whew! 😅..
2c90: 0d 0a 49 20 72 65 73 6f 72 74 65 64 20 74 6f 20 ..I resorted to
2ca0: 74 68 61 74 20 e2 80 9c 73 6c 65 65 70 20 33 36 that “sleep 36
2cb0: 30 30 e2 80 9d 20 68 61 63 6b 20 69 6e 20 6f 72 00” hack in or
2cc0: 64 65 72 20 74 6f 20 77 6f 72 6b 20 61 72 6f 75 der to work arou
2cd0: 6e 64 20 74 68 65 20 6c 61 63 6b 20 6f 66 20 69 nd the lack of i
2ce0: 6e 74 65 72 61 63 74 69 76 65 20 6d 6f 64 65 20 nteractive mode
2cf0: 69 6e 20 60 63 6f 6e 74 61 69 6e 65 72 2e 6e 70 in `container.np
2d00: 6b 60 2c 20 77 69 74 68 6f 75 74 20 77 68 69 63 k`, without whic
2d10: 68 20 63 6f 6e 74 61 69 6e 65 72 73 20 6f 66 20 h containers of
2d20: 74 68 69 73 20 74 79 70 65 20 77 69 6c 6c 20 73 this type will s
2d30: 74 61 72 74 2c 20 64 6f 20 61 20 77 68 6f 6c 65 tart, do a whole
2d40: 20 6c 6f 74 20 6f 66 20 5f 6e 6f 74 68 69 6e 67 lot of _nothing
2d50: 5f 2c 20 61 6e 64 20 74 68 65 6e 20 73 74 6f 70 _, and then stop
2d60: 2e 20 49 20 68 61 64 20 74 6f 20 67 69 76 65 20 . I had to give
2d70: 69 74 20 73 6f 6d 65 20 74 79 70 65 20 6f 66 20 it some type of
2d80: 62 75 73 79 2d 77 6f 72 6b 20 74 6f 20 6b 65 65 busy-work to kee
2d90: 70 20 69 74 20 61 6c 69 76 65 20 6c 6f 6e 67 20 p it alive long
2da0: 65 6e 6f 75 67 68 20 74 6f 20 6c 65 74 20 6d 65 enough to let me
2db0: 20 73 68 65 6c 6c 20 69 6e 20 61 6e 64 20 64 6f shell in and do
2dc0: 20 6d 79 20 61 63 74 75 61 6c 20 77 6f 72 6b 2e my actual work.
2dd0: 20 54 68 69 73 20 73 6e 65 61 6b 79 20 73 63 61 This sneaky sca
2de0: 6d 20 69 73 20 61 20 63 6f 6d 6d 6f 6e 20 6f 6e m is a common on
2df0: 65 20 66 6f 72 20 61 63 63 6f 6d 70 6c 69 73 68 e for accomplish
2e00: 69 6e 67 20 74 68 61 74 20 65 6e 64 2c 20 62 75 ing that end, bu
2e10: 74 20 69 74 20 68 61 73 20 74 68 65 20 64 6f 77 t it has the dow
2e20: 6e 73 69 64 65 20 6f 66 20 72 65 71 75 69 72 69 nside of requiri
2e30: 6e 67 20 79 6f 75 20 74 6f 20 70 72 65 64 69 63 ng you to predic
2e40: 74 20 68 6f 77 20 6c 6f 6e 67 20 79 6f 75 20 77 t how long you w
2e50: 61 6e 74 20 74 68 65 20 63 6f 6e 74 61 69 6e 65 ant the containe
2e60: 72 20 74 6f 20 72 75 6e 20 62 65 66 6f 72 65 20 r to run before
2e70: 73 74 6f 70 70 69 6e 67 3b 20 74 68 69 73 20 76 stopping; this v
2e80: 65 72 73 69 6f 6e 20 6f 6e 6c 79 20 6c 61 73 74 ersion only last
2e90: 73 20 61 6e 20 68 6f 75 72 2e 0d 0a 0d 0a 49 66 s an hour.....If
2ea0: 20 79 6f 75 20 61 72 65 20 69 6d 61 67 69 6e 67 you are imaging
2eb0: 20 6d 6f 72 65 20 63 6f 6d 70 6c 69 63 61 74 65 more complicate
2ec0: 64 20 6d 65 74 68 6f 64 73 20 66 6f 72 20 6b 65 d methods for ke
2ed0: 65 70 69 6e 67 20 63 6f 6e 74 61 69 6e 65 72 73 eping containers
2ee0: 20 72 75 6e 6e 69 6e 67 20 69 6e 20 74 68 65 20 running in the
2ef0: 62 61 63 6b 67 72 6f 75 6e 64 20 77 68 65 6e 20 background when
2f00: 74 68 65 79 20 77 65 72 65 20 64 65 73 69 67 6e they were design
2f10: 65 64 20 74 6f 20 72 75 6e 20 69 6e 74 65 72 61 ed to run intera
2f20: 63 74 69 76 65 6c 79 2c 20 79 6f 75 20 61 72 65 ctively, you are
2f30: 20 6e 65 78 74 20 6c 69 61 62 6c 65 20 74 6f 20 next liable to
2f40: 66 61 6c 6c 20 69 6e 74 6f 20 74 68 65 20 74 72 fall into the tr
2f50: 61 70 20 74 68 61 74 e2 80 a6 0d 0a 0d 0a 0d 0a ap that…......
2f60: 23 20 3c 61 20 69 64 3d 22 63 6d 64 22 3e 3c 2f # <a id="cmd"></
2f70: 61 3e 54 68 65 72 65 20 49 73 20 4e 6f 20 48 6f a>There Is No Ho
2f80: 73 74 2d 53 69 64 65 20 43 6f 6d 6d 61 6e 64 20 st-Side Command
2f90: 4c 69 6e 65 20 50 61 72 73 65 72 0d 0a 0d 0a 54 Line Parser....T
2fa0: 68 65 20 52 6f 75 74 65 72 4f 53 20 43 4c 49 20 he RouterOS CLI
2fb0: 69 73 6e e2 80 99 74 20 61 20 42 6f 75 72 6e 65 isn’t a Bourne
2fc0: 20 73 68 65 6c 6c 2c 20 61 6e 64 20 74 68 65 20 shell, and the
2fd0: 63 6f 6e 74 61 69 6e 65 72 20 66 65 61 74 75 72 container featur
2fe0: 65 e2 80 99 73 20 60 65 6e 74 72 79 70 6f 69 6e e’s `entrypoin
2ff0: 74 60 20 61 6e 64 20 60 63 6d 64 60 20 6f 70 74 t` and `cmd` opt
3000: 69 6f 6e 20 70 61 72 73 65 72 73 20 74 72 65 61 ion parsers trea
3010: 74 73 20 74 68 65 6d 20 61 73 20 73 69 6d 70 6c ts them as simpl
3020: 65 20 73 74 72 69 6e 67 73 2c 20 77 69 74 68 6f e strings, witho
3030: 75 74 20 61 6e 79 20 6f 66 20 74 68 65 20 70 61 ut any of the pa
3040: 72 73 69 6e 67 20 79 6f 75 20 67 65 74 20 66 6f rsing you get fo
3050: 72 20 66 72 65 65 20 77 68 65 6e 20 74 79 70 69 r free when typi
3060: 6e 67 20 60 64 6f 63 6b 65 72 60 20 63 6f 6d 6d ng `docker` comm
3070: 61 6e 64 73 20 69 6e 74 6f 20 61 20 4c 69 6e 75 ands into a Linu
3080: 78 20 63 6f 6d 6d 61 6e 64 20 73 68 65 6c 6c 2e x command shell.
3090: 20 54 68 65 20 6e 65 74 20 65 66 66 65 63 74 20 The net effect
30a0: 6f 66 20 61 6c 6c 20 74 68 69 73 20 69 73 20 74 of all this is t
30b0: 68 61 74 20 79 6f 75 e2 80 99 72 65 20 6c 69 6d hat you’re lim
30c0: 69 74 65 64 20 74 6f 20 74 77 6f 2d 77 6f 72 64 ited to two-word
30d0: 20 63 6f 6d 6d 61 6e 64 73 2c 20 6f 6e 65 20 69 commands, one i
30e0: 6e 20 60 65 6e 74 72 79 70 6f 69 6e 74 60 20 61 n `entrypoint` a
30f0: 6e 64 20 74 68 65 20 6f 74 68 65 72 20 69 6e 20 nd the other in
3100: 60 63 6d 64 60 2c 20 61 73 20 69 6e 20 74 68 65 `cmd`, as in the
3110: 20 61 62 6f 76 65 20 e2 80 9c 60 73 6c 65 65 70 above “`sleep
3120: 20 33 36 30 30 60 e2 80 9d 20 68 61 63 6b 2e 0d 3600`” hack..
3130: 0a 0d 0a 42 75 74 20 68 6f 77 20 74 68 65 6e 20 ...But how then
3140: 64 6f 20 79 6f 75 20 73 61 79 20 73 6f 6d 65 74 do you say somet
3150: 68 69 6e 67 20 61 6b 69 6e 20 74 6f 20 74 68 65 hing akin to the
3160: 20 66 6f 6c 6c 6f 77 69 6e 67 20 75 6e 64 65 72 following under
3170: 20 52 6f 75 74 65 72 4f 53 3f 0d 0a 0d 0a 20 20 RouterOS?....
3180: 20 20 64 6f 63 6b 65 72 20 72 75 6e 20 2d 69 74 docker run -it
3190: 20 61 6c 70 69 6e 65 3a 6c 61 74 65 73 74 20 6c alpine:latest l
31a0: 73 20 2d 6c 52 20 2f 65 74 63 0d 0a 0d 0a 59 6f s -lR /etc....Yo
31b0: 75 20 6d 69 67 68 74 20 77 61 6e 74 20 74 6f 20 u might want to
31c0: 64 6f 20 74 68 61 74 20 69 6e 20 64 65 62 75 67 do that in debug
31d0: 67 69 6e 67 20 74 6f 20 66 69 6e 64 20 6f 75 74 ging to find out
31e0: 20 77 68 61 74 20 61 20 67 69 76 65 6e 20 63 6f what a given co
31f0: 6e 66 69 67 20 66 69 6c 65 20 69 73 20 63 61 6c nfig file is cal
3200: 6c 65 64 20 61 6e 64 20 65 78 61 63 74 6c 79 20 led and exactly
3210: 77 68 65 72 65 20 69 74 20 69 73 20 69 6e 20 74 where it is in t
3220: 68 65 20 68 69 65 72 61 72 63 68 79 20 73 6f 20 he hierarchy so
3230: 74 68 61 74 20 79 6f 75 20 63 61 6e 20 74 61 72 that you can tar
3240: 67 65 74 20 69 74 20 77 69 74 68 20 61 20 60 6d get it with a `m
3250: 6f 75 6e 74 3d e2 80 a6 60 20 6f 76 65 72 72 69 ount=…` overri
3260: 64 65 2e 20 49 66 20 79 6f 75 20 74 72 79 20 74 de. If you try t
3270: 6f 20 70 61 73 73 20 69 74 20 61 6c 6c 20 61 73 o pass it all as
3280: e2 80 a6 0d 0a 0d 0a 20 20 20 20 2f 63 6f 6e 74 ….... /cont
3290: 61 69 6e 65 72 2f 61 64 64 20 e2 80 a6 20 65 6e ainer/add … en
32a0: 74 72 79 70 6f 69 6e 74 3d 22 6c 73 20 2d 6c 52 trypoint="ls -lR
32b0: 20 2f 65 74 63 22 0d 0a 0d 0a e2 80 a6 74 68 65 /etc"....…the
32c0: 20 6b 65 72 6e 65 6c 20 77 69 6c 6c 20 63 6f 6d kernel will com
32d0: 70 6c 61 69 6e 20 74 68 61 74 20 74 68 65 72 65 plain that there
32e0: 20 69 73 20 6e 6f 20 63 6f 6d 6d 61 6e 64 20 69 is no command i
32f0: 6e 20 74 68 65 20 63 6f 6e 74 61 69 6e 65 72 e2 n the container
3300: 80 99 73 20 60 50 41 54 48 60 20 63 61 6c 6c 65 s `PATH` calle
3310: 64 20 e2 80 9c 60 6c 73 20 2d 6c 52 20 2f 65 74 d “`ls -lR /et
3320: 63 60 e2 80 9d 2e 0d 0a 0d 0a 59 6f 75 20 6d 61 c`”.....You ma
3330: 79 20 74 68 65 6e 20 74 72 79 20 74 6f 20 73 70 y then try to sp
3340: 6c 69 74 20 69 74 20 61 73 e2 80 a6 0d 0a 0d 0a lit it as…....
3350: 20 20 20 20 2f 63 6f 6e 74 61 69 6e 65 72 2f 61 /container/a
3360: 64 64 20 e2 80 a6 20 65 6e 74 72 79 70 6f 69 6e dd … entrypoin
3370: 74 3d 22 6c 73 22 20 63 6d 64 3d 22 2d 6c 52 20 t="ls" cmd="-lR
3380: 2f 65 74 63 22 0d 0a 0d 0a e2 80 a6 62 75 74 20 /etc"....…but
3390: 74 68 61 74 20 77 69 6c 6c 20 65 61 72 6e 20 79 that will earn y
33a0: 6f 75 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 ou error message
33b0: 20 66 72 6f 6d 20 60 2f 62 69 6e 2f 6c 73 60 20 from `/bin/ls`
33c0: 63 6f 6d 70 6c 61 69 6e 69 6e 67 20 74 68 61 74 complaining that
33d0: 20 69 74 20 72 65 66 75 73 65 73 20 74 6f 20 61 it refuses to a
33e0: 63 63 65 70 74 20 e2 80 9c 26 6e 62 73 70 3b e2 ccept “
33f0: 80 9d 20 28 73 70 61 63 65 29 20 61 73 20 61 6e (space) as an
3400: 20 6f 70 74 69 6f 6e 20 66 6f 6c 6c 6f 77 69 6e option followin
3410: 67 20 74 68 65 20 60 52 60 21 0d 0a 0d 0a 49 66 g the `R`!....If
3420: 20 79 6f 75 20 67 65 74 20 63 75 74 65 20 61 6e you get cute an
3430: 64 20 74 72 79 20 74 6f 20 e2 80 9c 63 75 64 64 d try to “cudd
3440: 6c 65 e2 80 9d 20 74 68 65 20 6f 70 74 69 6f 6e le” the option
3450: 73 20 77 69 74 68 20 74 68 65 20 61 72 67 75 6d s with the argum
3460: 65 6e 74 73 20 61 73 e2 80 a6 0d 0a 0d 0a 20 20 ents as…....
3470: 20 20 2f 63 6f 6e 74 61 69 6e 65 72 2f 61 64 64 /container/add
3480: 20 e2 80 a6 20 65 6e 74 72 79 70 6f 69 6e 74 3d … entrypoint=
3490: 22 6c 73 22 20 63 6d 64 3d 22 2d 6c 52 2f 65 74 "ls" cmd="-lR/et
34a0: 63 22 0d 0a 0d 0a e2 80 a6 74 68 65 20 60 2f 62 c"....…the `/b
34b0: 69 6e 2f 6c 73 60 20 69 6d 70 6c 65 6d 65 6e 74 in/ls` implement
34c0: 61 74 69 6f 6e 20 77 69 6c 6c 20 63 65 72 74 61 ation will certa
34d0: 69 6e 6c 79 20 61 74 74 65 6d 70 74 20 74 6f 20 inly attempt to
34e0: 74 72 65 61 74 20 60 2f 60 20 61 73 20 61 6e 20 treat `/` as an
34f0: 6f 70 74 69 6f 6e 20 61 6e 64 20 64 69 65 20 77 option and die w
3500: 69 74 68 20 61 6e 20 65 72 72 6f 72 20 6d 65 73 ith an error mes
3510: 73 61 67 65 2e 28 5e 59 65 73 2c 20 66 6f 72 20 sage.(^Yes, for
3520: 63 65 72 74 61 69 6e 2e 20 49 20 74 65 73 74 65 certain. I teste
3530: 64 20 74 68 65 20 47 4e 55 2c 20 42 53 44 2c 20 d the GNU, BSD,
3540: 5f 61 6e 64 5f 20 42 75 73 79 42 6f 78 20 69 6d _and_ BusyBox im
3550: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 6f 66 plementations of
3560: 20 60 6c 73 60 2c 20 61 6e 64 20 74 68 65 79 20 `ls`, and they
3570: 61 6c 6c 20 64 6f 20 74 68 69 73 2e 29 0d 0a 0d all do this.)...
3580: 0a 54 68 69 6e 67 73 20 61 72 65 6e e2 80 99 74 .Things aren’t
3590: 20 61 6c 77 61 79 73 20 74 68 69 73 20 67 72 69 always this gri
35a0: 6d 2e 20 46 6f 72 20 69 6e 73 74 61 6e 63 65 2c m. For instance,
35b0: 20 79 6f 75 20 63 61 6e 20 72 75 6e 20 5b 6d 79 you can run [my
35c0: 20 60 69 70 65 72 66 33 60 20 63 6f 6e 74 61 69 `iperf3` contai
35d0: 6e 65 72 5d 28 2f 64 69 72 2f 69 70 65 72 66 33 ner](/dir/iperf3
35e0: 29 20 61 73 20 61 20 63 6c 69 65 6e 74 20 69 6e ) as a client in
35f0: 73 74 65 61 64 20 6f 66 20 69 74 73 20 64 65 66 stead of its def
3600: 61 75 6c 74 20 73 65 72 76 65 72 20 6d 6f 64 65 ault server mode
3610: 20 62 79 20 73 61 79 69 6e 67 20 73 6f 6d 65 74 by saying somet
3620: 68 69 6e 67 20 6c 69 6b 65 3a 0d 0a 0d 0a 20 20 hing like:....
3630: 20 20 2f 63 6f 6e 74 61 69 6e 65 72 2f 61 64 64 /container/add
3640: 20 e2 80 a6 20 63 6d 64 3d 22 2d 63 31 39 32 2e … cmd="-c192.
3650: 31 36 38 2e 38 38 2e 39 39 22 0d 0a 0d 0a 54 68 168.88.99"....Th
3660: 69 73 20 72 65 6c 69 65 73 20 6f 6e 20 74 68 65 is relies on the
3670: 20 66 61 63 74 20 74 68 61 74 20 74 68 65 20 60 fact that the `
3680: 69 70 65 72 66 33 60 20 63 6f 6d 6d 61 6e 64 20 iperf3` command
3690: 70 61 72 73 65 72 20 6b 6e 6f 77 73 20 68 6f 77 parser knows how
36a0: 20 74 6f 20 62 72 65 61 6b 20 74 68 65 20 68 6f to break the ho
36b0: 73 74 20 6e 61 6d 65 20 70 61 72 74 20 6f 75 74 st name part out
36c0: 20 66 72 6f 6d 20 74 68 65 20 60 2d 63 60 20 6f from the `-c` o
36d0: 70 74 69 6f 6e 20 69 74 73 65 6c 66 2c 20 73 6f ption itself, so
36e0: 6d 65 74 68 69 6e 67 20 6e 6f 74 20 61 6c 6c 20 mething not all
36f0: 63 6f 6d 6d 61 6e 64 20 70 61 72 73 65 72 73 20 command parsers
3700: 61 72 65 20 73 6d 61 72 74 20 65 6e 6f 75 67 68 are smart enough
3710: 20 74 6f 20 64 6f 2e 20 54 68 65 72 65 e2 80 99 to do. There’
3720: 73 20 35 30 20 79 65 61 72 73 20 6f 66 20 55 6e s 50 years of Un
3730: 69 78 20 61 6e 64 20 4c 69 6e 75 78 20 68 69 73 ix and Linux his
3740: 74 6f 72 79 20 65 6e 63 6f 75 72 61 67 69 6e 67 tory encouraging
3750: 20 70 72 6f 67 72 61 6d 73 20 74 6f 20 72 65 6c programs to rel
3760: 79 20 6f 6e 20 74 68 65 20 73 68 65 6c 6c 20 74 y on the shell t
3770: 6f 20 64 6f 20 61 20 6c 6f 74 20 6f 66 20 77 6f o do a lot of wo
3780: 72 6b 20 62 65 66 6f 72 65 20 74 68 65 20 70 72 rk before the pr
3790: 6f 67 72 61 6d e2 80 99 73 20 60 6d 61 69 6e 28 ogram’s `main(
37a0: 29 60 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 65 )` function is e
37b0: 76 65 6e 20 63 61 6c 6c 65 64 2e 20 54 68 65 20 ven called. The
37c0: 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 70 72 6f command line pro
37d0: 63 65 73 73 69 6e 67 20 74 68 61 74 20 60 63 6f cessing that `co
37e0: 6e 74 61 69 6e 65 72 2e 6e 70 6b 60 20 61 70 70 ntainer.npk` app
37f0: 6c 69 65 73 20 74 6f 20 69 74 73 20 60 63 6d 64 lies to its `cmd
3800: 60 20 61 72 67 75 6d 65 6e 74 20 6c 61 63 6b 73 ` argument lacks
3810: 20 61 6c 6c 20 74 68 61 74 20 70 6f 77 65 72 2e all that power.
3820: 20 49 66 20 79 6f 75 20 77 61 6e 74 20 42 6f 75 If you want Bou
3830: 72 6e 65 20 73 68 65 6c 6c 20 70 61 72 73 69 6e rne shell parsin
3840: 67 20 6f 66 20 79 6f 75 72 20 63 6f 6d 6d 61 6e g of your comman
3850: 64 20 6c 69 6e 65 2c 20 79 6f 75 20 68 61 76 65 d line, you have
3860: 20 74 6f 20 73 65 74 20 69 74 20 76 69 61 20 60 to set it via `
3870: 45 4e 54 52 59 50 4f 49 4e 54 60 20 6f 72 20 60 ENTRYPOINT` or `
3880: 43 4d 44 60 20 69 6e 20 74 68 65 20 60 44 6f 63 CMD` in the `Doc
3890: 6b 65 72 66 69 6c 65 60 2c 20 74 68 65 6e 20 72 kerfile`, then r
38a0: 65 62 75 69 6c 64 20 74 68 65 20 69 6d 61 67 65 ebuild the image
38b0: 2e 0d 0a 0d 0a 0d 0a 23 20 3c 61 20 69 64 3d 22 .......# <a id="
38c0: 74 65 72 6d 69 6e 61 6c 22 3e 3c 2f 61 3e 54 65 terminal"></a>Te
38d0: 72 6d 69 6e 61 6c 20 48 61 6e 64 6c 69 6e 67 0d rminal Handling.
38e0: 0a 0d 0a 41 6c 74 68 6f 75 67 68 20 52 6f 75 74 ...Although Rout
38f0: 65 72 4f 53 20 70 72 6f 70 65 72 20 69 73 20 62 erOS proper is b
3900: 75 69 6c 74 20 61 74 6f 70 20 4c 69 6e 75 78 2c uilt atop Linux,
3910: 20 61 6e 64 20 69 74 20 70 72 6f 76 69 64 65 73 and it provides
3920: 20 61 20 66 65 61 74 75 72 65 2d 72 69 63 68 20 a feature-rich
3930: 43 4c 49 2c 20 69 74 20 69 73 20 6e 6f 74 68 69 CLI, it is nothi
3940: 6e 67 20 6c 69 6b 65 20 61 20 4c 69 6e 75 78 20 ng like a Linux
3950: 63 6f 6d 6d 61 6e 64 20 73 68 65 6c 6c 2e 20 49 command shell. I
3960: 20 61 6d 20 6e 6f 74 20 73 70 65 61 6b 69 6e 67 am not speaking
3970: 20 6f 66 20 73 6b 69 6e 2d 6c 65 76 65 6c 20 63 of skin-level c
3980: 6f 6d 6d 61 6e 64 20 73 79 6e 74 61 78 20 64 69 ommand syntax di
3990: 66 66 65 72 65 6e 63 65 73 20 68 65 72 65 3b 20 fferences here;
39a0: 74 68 65 20 64 69 66 66 65 72 65 6e 63 65 73 20 the differences
39b0: 67 6f 20 66 61 72 20 64 65 65 70 65 72 2e 0d 0a go far deeper...
39c0: 0d 0a 57 68 65 6e 20 79 6f 75 20 53 53 48 20 69 ..When you SSH i
39d0: 6e 74 6f 20 61 20 52 6f 75 74 65 72 4f 53 20 62 nto a RouterOS b
39e0: 6f 78 2c 20 79 6f 75 e2 80 99 72 65 20 6d 69 73 ox, you’re mis
39f0: 73 69 6e 67 20 6f 75 74 20 6f 6e 20 61 20 6d 65 sing out on a me
3a00: 61 6e 69 6e 67 66 75 6c 20 64 69 73 74 69 6e 63 aningful distinc
3a10: 74 69 6f 6e 20 62 65 74 77 65 65 6e 20 73 74 64 tion between std
3a20: 6f 75 74 20 61 6e 64 20 73 74 64 65 72 72 2c 20 out and stderr,
3a30: 61 6e 64 20 74 68 65 20 6b 65 72 6e 65 6c e2 80 and the kernel
3a40: 99 73 20 75 6e 64 65 72 6c 79 69 6e 67 20 74 65 s underlying te
3a50: 72 6d 69 6f 73 2f 70 74 79 20 73 75 62 73 79 73 rmios/pty subsys
3a60: 74 65 6d 20 69 73 20 68 69 64 64 65 6e 20 66 72 tem is hidden fr
3a70: 6f 6d 20 79 6f 75 2e 20 54 68 65 73 65 20 6c 61 om you. These la
3a80: 63 6b 73 20 74 72 61 6e 73 6c 61 74 65 20 64 69 cks translate di
3a90: 72 65 63 74 6c 79 20 69 6e 74 6f 20 6c 69 6d 69 rectly into limi
3aa0: 74 61 74 69 6f 6e 73 20 69 6e 20 74 68 65 20 61 tations in the a
3ab0: 62 69 6c 69 74 79 20 6f 66 20 60 63 6f 6e 74 61 bility of `conta
3ac0: 69 6e 65 72 2e 6e 70 6b 60 20 74 6f 20 6d 69 6d iner.npk` to mim
3ad0: 69 63 20 74 68 65 20 65 78 70 65 72 69 65 6e 63 ic the experienc
3ae0: 65 20 6f 66 20 75 73 69 6e 67 20 44 6f 63 6b 65 e of using Docke
3af0: 72 20 61 74 20 74 68 65 20 63 6f 6d 6d 61 6e 64 r at the command
3b00: 20 6c 69 6e 65 2e 0d 0a 0d 0a 4f 6e 65 20 6f 66 line.....One of
3b10: 20 74 68 65 20 63 6f 72 65 20 52 6f 75 74 65 72 the core Router
3b20: 4f 53 20 64 65 73 69 67 6e 20 70 72 69 6e 63 69 OS design princi
3b30: 70 6c 65 73 20 69 73 20 62 65 69 6e 67 20 61 62 ples is being ab
3b40: 6c 65 20 74 6f 20 72 75 6e 20 68 65 61 64 6c 65 le to run headle
3b50: 73 73 6c 79 20 66 6f 72 20 6c 6f 6e 67 20 70 65 ssly for long pe
3b60: 72 69 6f 64 73 2c 20 77 69 74 68 20 74 68 65 20 riods, with the
3b70: 61 64 6d 69 6e 69 73 74 72 61 74 6f 72 20 63 6f administrator co
3b80: 6e 6e 65 63 74 69 6e 67 20 74 6f 20 74 68 65 69 nnecting to thei
3b90: 72 20 76 69 72 74 75 61 6c 20 74 65 72 6d 69 6e r virtual termin
3ba0: 61 6c 20 76 69 61 20 57 69 6e 42 6f 78 2c 20 57 al via WinBox, W
3bb0: 65 62 46 69 67 2c 20 6f 72 20 53 53 48 20 62 72 ebFig, or SSH br
3bc0: 69 65 66 6c 79 2c 20 6f 6e 6c 79 20 6c 6f 6e 67 iefly, only long
3bd0: 20 65 6e 6f 75 67 68 20 74 6f 20 61 63 63 6f 6d enough to accom
3be0: 70 6c 69 73 68 20 73 6f 6d 65 20 6e 65 74 77 6f plish some netwo
3bf0: 72 6b 20 61 64 6d 69 6e 20 74 61 73 6b 20 62 65 rk admin task be
3c00: 66 6f 72 65 20 6c 6f 67 67 69 6e 67 20 62 61 63 fore logging bac
3c10: 6b 20 6f 75 74 2e 20 54 68 65 20 52 6f 75 74 65 k out. The Route
3c20: 72 4f 53 20 43 4c 49 20 6e 65 76 65 72 20 77 61 rOS CLI never wa
3c30: 73 20 6d 65 61 6e 74 20 74 6f 20 70 72 6f 76 69 s meant to provi
3c40: 64 65 20 74 68 65 20 73 6f 72 74 20 6f 66 20 72 de the sort of r
3c50: 69 63 68 20 74 65 72 6d 69 6e 61 6c 20 65 78 70 ich terminal exp
3c60: 65 72 69 65 6e 63 65 20 79 6f 75 20 6e 65 65 64 erience you need
3c70: 20 77 68 65 6e 20 79 6f 75 20 77 6f 72 6b 20 69 when you work i
3c80: 6e 20 61 20 4c 69 6e 75 78 20 74 65 72 6d 69 6e n a Linux termin
3c90: 61 6c 20 61 6c 6c 20 64 61 79 2c 20 65 76 65 72 al all day, ever
3ca0: 79 20 64 61 79 2e 0d 0a 0d 0a 54 68 65 20 74 68 y day.....The th
3cb0: 69 6e 67 20 69 73 2c 20 44 6f 63 6b 65 72 20 5f ing is, Docker _
3cc0: 77 61 73 5f 20 64 65 73 69 67 6e 65 64 20 61 72 was_ designed ar
3cd0: 6f 75 6e 64 20 74 68 69 73 20 73 65 6e 73 69 62 ound this sensib
3ce0: 69 6c 69 74 79 2e 0d 0a 0d 0a 49 74 20 69 73 20 ility.....It is
3cf0: 66 6f 72 20 74 68 69 73 20 69 6e 68 65 72 65 6e for this inheren
3d00: 74 20 72 65 61 73 6f 6e 20 74 68 61 74 20 60 63 t reason that `c
3d10: 6f 6e 74 61 69 6e 65 72 2e 6e 70 6b 60 20 63 61 ontainer.npk` ca
3d20: 6e 6e 6f 74 20 70 72 6f 76 69 64 65 20 65 71 75 nnot provide equ
3d30: 69 76 61 6c 65 6e 74 73 20 6f 66 20 44 6f 63 6b ivalents of Dock
3d40: 65 72 e2 80 99 73 20 60 61 74 74 61 63 68 60 20 er’s `attach`
3d50: 63 6f 6d 6d 61 6e 64 2c 20 6e 6f 72 20 69 74 73 command, nor its
3d60: 20 e2 80 9c 60 64 6f 63 6b 65 72 20 72 75 6e 20 “`docker run
3d70: 2d 2d 61 74 74 61 63 68 60 e2 80 9d 20 66 6c 61 --attach`” fla
3d80: 67 2c 20 6e 6f 72 20 74 68 65 20 63 6f 6d 6d 6f g, nor the commo
3d90: 6e 20 e2 80 9c 60 64 6f 63 6b 65 72 20 72 75 6e n “`docker run
3da0: 20 2d 69 74 60 e2 80 9d 20 6f 70 74 69 6f 6e 20 -it`” option
3db0: 70 61 69 72 2e 20 54 68 65 20 63 6c 6f 73 65 73 pair. The closes
3dc0: 74 20 69 74 20 63 6f 6d 65 73 20 74 6f 20 61 6c t it comes to al
3dd0: 6c 20 74 68 69 73 20 69 73 20 69 74 73 20 5b 60 l this is its [`
3de0: 73 68 65 6c 6c 60 5d 28 23 73 68 65 6c 6c 29 20 shell`](#shell)
3df0: 63 6f 6d 6d 61 6e 64 20 69 6d 70 6c 65 6d 65 6e command implemen
3e00: 74 61 74 69 6f 6e 2c 20 77 68 69 63 68 20 63 61 tation, which ca
3e10: 6e 20 63 6f 6e 6e 65 63 74 20 79 6f 75 72 20 6c n connect your l
3e20: 6f 63 61 6c 20 74 65 72 6d 69 6e 61 6c 20 74 6f ocal terminal to
3e30: 20 61 20 74 72 75 65 20 72 65 6d 6f 74 65 20 4c a true remote L
3e40: 69 6e 75 78 20 74 65 72 6d 69 6e 61 6c 20 73 75 inux terminal su
3e50: 62 73 79 73 74 65 6d 2e 20 41 6c 61 73 2c 20 74 bsystem. Alas, t
3e60: 68 61 74 20 69 73 6e e2 80 99 74 20 61 20 63 6c hat isn’t a cl
3e70: 6f 73 65 20 e2 80 9c 60 72 75 6e 20 2d 69 74 60 ose “`run -it`
3e80: e2 80 9d 20 61 6c 74 65 72 6e 61 74 69 76 65 20 ” alternative
3e90: 62 65 63 61 75 73 65 20 79 6f 75 e2 80 99 72 65 because you’re
3ea0: 20 6c 65 66 74 20 74 79 70 69 6e 67 20 63 6f 6d left typing com
3eb0: 6d 61 6e 64 73 20 61 74 20 74 68 69 73 20 72 65 mands at this re
3ec0: 6d 6f 74 65 20 73 68 65 6c 6c 2c 20 6e 6f 74 20 mote shell, not
3ed0: 61 74 20 74 68 65 20 63 6f 6e 74 61 69 6e 65 72 at the container
3ee0: e2 80 99 73 20 60 45 4e 54 52 59 50 4f 49 4e 54 ’s `ENTRYPOINT
3ef0: 60 20 70 72 6f 63 65 73 73 2e 20 45 76 65 6e 20 ` process. Even
3f00: 74 68 65 6e 2c 20 69 74 20 64 6f 65 73 6e e2 80 then, it doesn
3f10: 99 74 20 61 6c 77 61 79 73 20 77 6f 72 6b 20 73 t always work s
3f20: 69 6e 63 65 20 61 20 67 6f 6f 64 20 6d 61 6e 79 ince a good many
3f30: 20 63 6f 6e 74 61 69 6e 65 72 73 20 6c 61 63 6b containers lack
3f40: 20 61 20 60 2f 62 69 6e 2f 73 68 60 20 70 72 6f a `/bin/sh` pro
3f50: 67 72 61 6d 20 69 6e 73 69 64 65 20 74 68 65 20 gram inside the
3f60: 63 6f 6e 74 61 69 6e 65 72 20 69 6e 20 74 68 65 container in the
3f70: 20 66 69 72 73 74 20 70 6c 61 63 65 2c 20 6f 6e first place, on
3f80: 20 70 75 72 70 6f 73 65 2c 20 74 79 70 69 63 61 purpose, typica
3f90: 6c 6c 79 20 74 6f 20 72 65 64 75 63 65 20 74 68 lly to reduce th
3fa0: 65 20 63 6f 6e 74 61 69 6e 65 72 e2 80 99 73 20 e container’s
3fb0: 61 74 74 61 63 6b 20 73 75 72 66 61 63 65 2e 28 attack surface.(
3fc0: 5e 49 6e 64 65 65 64 2c 20 61 6c 6c 20 6f 66 20 ^Indeed, all of
3fd0: 5b 6d 79 20 70 75 62 6c 69 63 20 63 6f 6e 74 61 [my public conta
3fe0: 69 6e 65 72 73 5d 28 68 74 74 70 73 3a 2f 2f 68 iners](https://h
3ff0: 75 62 2e 64 6f 63 6b 65 72 2e 63 6f 6d 2f 72 65 ub.docker.com/re
4000: 70 6f 73 69 74 6f 72 69 65 73 2f 74 61 6e 67 65 positories/tange
4010: 6e 74 73 6f 66 74 29 20 65 6c 69 64 65 20 74 68 ntsoft) elide th
4020: 65 20 73 68 65 6c 6c 20 66 6f 72 20 74 68 69 73 e shell for this
4030: 20 72 65 61 73 6f 6e 2e 29 0d 0a 0d 0a 0d 0a 23 reason.)......#
4040: 20 3c 61 20 69 64 3d 22 6c 6f 67 73 22 3e 3c 2f <a id="logs"></
4050: 61 3e 4c 6f 67 20 48 61 6e 64 6c 69 6e 67 0d 0a a>Log Handling..
4060: 0d 0a 41 6c 74 68 6f 75 67 68 20 44 6f 63 6b 65 ..Although Docke
4070: 72 20 6c 6f 67 67 69 6e 67 20 69 73 20 74 69 65 r logging is tie
4080: 64 20 69 6e 74 6f 20 74 68 69 73 20 73 61 6d 65 d into this same
4090: 20 4c 69 6e 75 78 20 74 65 72 6d 69 6e 61 6c 20 Linux terminal
40a0: 49 2f 4f 20 64 65 73 69 67 6e 2c 20 77 65 20 63 I/O design, we c
40b0: 61 6e 6e 6f 74 20 62 6c 61 6d 65 20 74 68 65 20 annot blame the
40c0: 6c 61 63 6b 20 6f 66 20 61 6e 20 65 71 75 69 76 lack of an equiv
40d0: 61 6c 65 6e 74 20 74 6f 20 e2 80 9c 60 64 6f 63 alent to “`doc
40e0: 6b 65 72 20 6c 6f 67 73 60 e2 80 9d 20 6f 6e 20 ker logs`” on
40f0: 74 68 65 20 52 6f 75 74 65 72 4f 53 20 64 65 73 the RouterOS des
4100: 69 67 6e 20 70 72 69 6e 63 69 70 6c 65 73 20 69 ign principles i
4110: 6e 20 74 68 65 20 73 61 6d 65 20 6d 61 6e 6e 65 n the same manne
4120: 72 20 61 73 20 5b 61 62 6f 76 65 5d 28 23 74 65 r as [above](#te
4130: 72 6d 69 6e 61 6c 29 2e 20 54 68 65 20 63 61 75 rminal). The cau
4140: 73 65 20 68 65 72 65 20 69 73 20 64 69 66 66 65 se here is diffe
4150: 72 65 6e 74 2c 20 73 74 65 6d 6d 69 6e 67 20 66 rent, stemming f
4160: 69 72 73 74 20 66 72 6f 6d 20 74 68 65 20 66 61 irst from the fa
4170: 63 74 20 74 68 61 74 20 52 6f 75 74 65 72 4f 53 ct that RouterOS
4180: 20 62 6f 78 65 73 20 74 72 79 20 74 6f 20 6b 65 boxes try to ke
4190: 65 70 20 6c 6f 67 67 69 6e 67 20 74 6f 20 61 20 ep logging to a
41a0: 6d 69 6e 69 6d 75 6d 20 62 79 20 64 65 66 61 75 minimum by defau
41b0: 6c 74 2c 20 77 68 65 72 65 61 73 20 44 6f 63 6b lt, whereas Dock
41c0: 65 72 20 6c 6f 67 73 20 65 76 65 72 79 74 68 69 er logs everythi
41d0: 6e 67 20 74 68 65 20 63 6f 6e 74 61 69 6e 65 72 ng the container
41e0: 20 73 61 79 73 2c 20 77 69 74 68 6f 75 74 20 72 says, without r
41f0: 65 73 74 72 69 63 74 69 6f 6e 2e 20 52 6f 75 74 estriction. Rout
4200: 65 72 4f 53 20 74 61 6b 65 73 20 74 68 65 20 73 erOS takes the s
4210: 75 72 70 72 69 73 69 6e 67 20 64 65 66 61 75 6c urprising defaul
4220: 74 20 6f 66 20 6c 6f 67 67 69 6e 67 20 74 6f 20 t of logging to
4230: 76 6f 6c 61 74 69 6c 65 20 52 41 4d 20 69 6e 20 volatile RAM in
4240: 6f 72 64 65 72 20 74 6f 20 61 76 6f 69 64 20 62 order to avoid b
4250: 75 72 6e 69 6e 67 20 6f 75 74 20 74 68 65 20 66 urning out the f
4260: 6c 61 73 68 2e 20 41 64 64 69 74 69 6f 6e 61 6c lash. Additional
4270: 6c 79 2c 20 69 74 20 69 67 6e 6f 72 65 73 20 61 ly, it ignores a
4280: 6c 6c 20 6d 65 73 73 61 67 65 73 20 69 73 73 75 ll messages issu
4290: 65 64 20 75 6e 64 65 72 20 e2 80 9c 74 6f 70 69 ed under “topi
42a0: 63 73 e2 80 9d 20 6f 74 68 65 72 20 74 68 61 6e cs” other than
42b0: 20 74 68 65 20 66 6f 75 72 20 70 72 65 63 6f 6e the four precon
42c0: 66 69 67 75 72 65 64 20 62 79 20 64 65 66 61 75 figured by defau
42d0: 6c 74 2c 20 77 68 69 63 68 20 64 6f 65 73 20 6e lt, which does n
42e0: 6f 74 20 69 6e 63 6c 75 64 65 20 74 68 65 20 e2 ot include the
42f0: 80 9c 63 6f 6e 74 61 69 6e 65 72 e2 80 9d 20 74 container” t
4300: 6f 70 69 63 20 79 6f 75 20 67 65 74 20 61 63 63 opic you get acc
4310: 65 73 73 20 74 6f 20 62 79 20 69 6e 73 74 61 6c ess to by instal
4320: 6c 69 6e 67 20 60 63 6f 6e 74 61 69 6e 65 72 2e ling `container.
4330: 6e 70 6b 60 2e 0d 0a 0d 0a 54 6f 20 70 72 65 76 npk`.....To prev
4340: 65 6e 74 20 79 6f 75 72 20 63 6f 6e 74 61 69 6e ent your contain
4350: 65 72 73 e2 80 99 20 6c 6f 67 20 6d 65 73 73 61 ers’ log messa
4360: 67 65 73 20 66 72 6f 6d 20 62 65 69 6e 67 20 73 ges from being s
4370: 65 6e 74 20 73 74 72 61 69 67 68 74 20 74 6f 20 ent straight to
4380: 74 68 65 20 62 69 74 20 62 75 63 6b 65 74 2c 20 the bit bucket,
4390: 79 6f 75 20 6d 75 73 74 20 73 61 79 3a 0d 0a 0d you must say:...
43a0: 0a 20 20 20 20 2f 63 6f 6e 74 61 69 6e 65 72 2f . /container/
43b0: 7b 61 64 64 2c 73 65 74 7d 20 e2 80 a6 20 6c 6f {add,set} … lo
43c0: 67 67 69 6e 67 3d 79 65 73 0d 0a 20 20 20 20 2f gging=yes.. /
43d0: 73 79 73 74 65 6d 2f 6c 6f 67 67 69 6e 67 20 61 system/logging a
43e0: 64 64 20 74 6f 70 69 63 73 3d 63 6f 6e 74 61 69 dd topics=contai
43f0: 6e 65 72 20 61 63 74 69 6f 6e 3d e2 80 a6 0d 0a ner action=…..
4400: 0d 0a 48 61 76 69 6e 67 20 64 6f 6e 65 20 73 6f ..Having done so
4410: 2c 20 77 65 20 68 61 76 65 20 61 20 6e 65 77 20 , we have a new
4420: 6c 69 6d 69 74 61 74 69 6f 6e 20 74 6f 20 63 6f limitation to co
4430: 6e 74 65 6e 64 20 77 69 74 68 3a 20 52 6f 75 74 ntend with: Rout
4440: 65 72 4f 53 20 6c 6f 67 67 69 6e 67 20 69 73 6e erOS logging isn
4450: e2 80 99 74 20 61 73 20 70 6f 77 65 72 66 75 6c ’t as powerful
4460: 20 61 73 20 74 68 65 20 44 6f 63 6b 65 72 20 e2 as the Docker
4470: 80 9c 60 6c 6f 67 73 60 e2 80 9d 20 63 6f 6d 6d `logs`” comm
4480: 61 6e 64 2c 20 77 68 69 63 68 20 62 79 20 64 65 and, which by de
4490: 66 61 75 6c 74 20 77 6f 72 6b 73 20 61 73 20 69 fault works as i
44a0: 66 20 79 6f 75 20 61 73 6b 65 64 20 69 74 2c 20 f you asked it,
44b0: e2 80 9c 54 65 6c 6c 20 6d 65 20 77 68 61 74 20 “Tell me what
44c0: 74 68 69 73 20 70 61 72 74 69 63 75 6c 61 72 20 this particular
44d0: 63 6f 6e 74 61 69 6e 65 72 20 6c 6f 67 67 65 64 container logged
44e0: 20 73 69 6e 63 65 20 74 68 65 20 6c 61 73 74 20 since the last
44f0: 74 69 6d 65 20 49 20 61 73 6b 65 64 2e e2 80 9d time I asked.”
4500: 20 52 6f 75 74 65 72 4f 53 20 6c 6f 67 67 69 6e RouterOS loggin
4510: 67 2c 20 6f 6e 20 74 68 65 20 6f 74 68 65 72 20 g, on the other
4520: 68 61 6e 64 2c 20 6d 69 78 65 73 20 65 76 65 72 hand, mixes ever
4530: 79 74 68 69 6e 67 20 74 6f 67 65 74 68 65 72 20 ything together
4540: 69 6e 20 72 65 61 6c 20 74 69 6d 65 2c 20 72 65 in real time, re
4550: 71 75 69 72 69 6e 67 20 79 6f 75 20 74 6f 20 64 quiring you to d
4560: 69 67 20 74 68 72 6f 75 67 68 20 74 68 65 20 68 ig through the h
4570: 69 73 74 6f 72 79 20 6d 61 6e 75 61 6c 6c 79 2e istory manually.
4580: 0d 0a 0d 0a 28 54 68 65 20 73 61 6d 65 20 69 73 ....(The same is
4590: 20 74 72 75 65 20 6f 66 20 60 70 6f 64 6d 61 6e true of `podman
45a0: 20 6c 6f 67 73 60 2c 20 65 78 63 65 70 74 20 74 logs`, except t
45b0: 68 61 74 20 69 74 20 74 69 65 73 20 69 6e 74 6f hat it ties into
45c0: 20 73 79 73 74 65 6d 64 e2 80 99 73 20 75 6e 69 systemd’s uni
45d0: 66 69 65 64 20 e2 80 9c 6a 6f 75 72 6e 61 6c e2 fied “journal
45e0: 80 9d 20 73 75 62 73 79 73 74 65 6d 2c 20 61 20 subsystem, a
45f0: 63 6f 6e 74 72 6f 76 65 72 73 69 61 6c 20 64 65 controversial de
4600: 73 69 67 6e 20 63 68 6f 69 63 65 20 74 68 61 74 sign choice that
4610: 20 65 6e 64 65 64 20 75 70 20 70 61 79 69 6e 67 ended up paying
4620: 20 6f 66 66 20 68 61 6e 64 73 6f 6d 65 6c 79 20 off handsomely
4630: 77 68 65 6e 20 50 6f 64 6d 61 6e 20 63 61 6d 65 when Podman came
4640: 20 61 6c 6f 6e 67 20 61 6e 64 20 77 61 6e 74 65 along and wante
4650: 64 20 74 6f 20 70 75 6c 6c 20 75 70 20 70 65 72 d to pull up per
4660: 2d 63 6f 6e 74 61 69 6e 65 72 20 6c 6f 67 73 20 -container logs
4670: 74 6f 20 6d 61 74 63 68 20 74 68 65 20 77 61 79 to match the way
4680: 20 44 6f 63 6b 65 72 20 62 65 68 61 76 65 64 2e Docker behaved.
4690: 29 0d 0a 0d 0a 0d 0a 23 20 3c 61 20 69 64 3d 22 )......# <a id="
46a0: 63 70 75 22 3e 3c 2f 61 3e 43 50 55 20 4c 69 6d cpu"></a>CPU Lim
46b0: 69 74 61 74 69 6f 6e 73 0d 0a 0d 0a 54 68 69 73 itations....This
46c0: 20 6c 69 6d 69 74 61 74 69 6f 6e 20 63 6f 6d 65 limitation come
46d0: 73 20 69 6e 20 74 77 6f 20 73 75 62 63 6c 61 73 s in two subclas
46e0: 73 65 73 3a 0d 0a 0d 0a 0d 0a 23 23 20 3c 61 20 ses:......## <a
46f0: 69 64 3d 22 65 6d 75 22 3e 3c 2f 61 3e 54 68 65 id="emu"></a>The
4700: 72 65 20 49 73 20 4e 6f 20 42 75 69 6c 74 2d 49 re Is No Built-I
4710: 6e 20 43 50 55 20 45 6d 75 6c 61 74 69 6f 6e 0d n CPU Emulation.
4720: 0a 0d 0a 44 6f 63 6b 65 72 20 6c 65 74 73 20 79 ...Docker lets y
4730: 6f 75 20 72 75 6e 20 61 6e 20 69 6d 61 67 65 20 ou run an image
4740: 62 75 69 6c 74 20 66 6f 72 20 61 6e 6f 74 68 65 built for anothe
4750: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6f r architecture o
4760: 6e 20 79 6f 75 72 20 6c 6f 63 61 6c 20 73 79 73 n your local sys
4770: 74 65 6d 20 74 68 72 6f 75 67 68 20 74 72 61 6e tem through tran
4780: 73 70 61 72 65 6e 74 20 43 50 55 20 65 6d 75 6c sparent CPU emul
4790: 61 74 69 6f 6e 2e 20 49 66 20 79 6f 75 20 61 72 ation. If you ar
47a0: 65 20 6f 6e 20 61 6e 20 78 38 36 5f 36 34 20 68 e on an x86_64 h
47b0: 6f 73 74 2c 20 74 68 69 73 20 63 6f 6d 6d 61 6e ost, this comman
47c0: 64 20 73 68 6f 75 6c 64 20 64 72 6f 70 20 79 6f d should drop yo
47d0: 75 20 69 6e 74 6f 20 61 6e 20 41 6c 70 69 6e 65 u into an Alpine
47e0: 20 73 68 65 6c 6c 3a 0d 0a 0d 0a 20 20 20 20 20 shell:....
47f0: 24 20 64 6f 63 6b 65 72 20 72 75 6e 20 2d 2d 72 $ docker run --r
4800: 6d 20 2d 69 74 20 2d 2d 70 6c 61 74 66 6f 72 6d m -it --platform
4810: 20 6c 69 6e 75 78 2f 61 72 6d 36 34 20 61 6c 70 linux/arm64 alp
4820: 69 6e 65 3a 6c 61 74 65 73 74 0d 0a 0d 0a 54 68 ine:latest....Th
4830: 65 20 73 61 6d 65 20 77 69 6c 6c 20 77 6f 72 6b e same will work
4840: 20 6f 6e 20 72 65 63 65 6e 74 20 76 65 72 73 69 on recent versi
4850: 6f 6e 73 20 6f 66 20 50 6f 64 6d 61 6e 2c 20 61 ons of Podman, a
4860: 6e 64 20 79 6f 75 20 63 61 6e 20 67 65 74 20 69 nd you can get i
4870: 74 20 74 6f 20 77 6f 72 6b 20 6f 6e 20 6f 6c 64 t to work on old
4880: 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 50 6f 64 versions of Pod
4890: 6d 61 6e 20 77 69 74 68 20 61 20 62 69 74 20 6f man with a bit o
48a0: 66 20 6d 61 6e 75 61 6c 20 73 65 74 75 70 2e 28 f manual setup.(
48b0: 5e 49 74 e2 80 99 73 20 6f 66 66 2d 74 6f 70 69 ^It’s off-topi
48c0: 63 20 74 6f 20 67 6f 20 69 6e 74 6f 20 74 68 65 c to go into the
48d0: 20 64 65 74 61 69 6c 73 20 68 65 72 65 2c 20 62 details here, b
48e0: 75 74 20 69 74 20 61 6d 6f 75 6e 74 73 20 74 6f ut it amounts to
48f0: 20 e2 80 9c 60 70 6f 64 6d 61 6e 20 6d 61 63 68 “`podman mach
4900: 69 6e 65 20 73 73 68 60 e2 80 9d 20 66 6f 6c 6c ine ssh`” foll
4910: 6f 77 65 64 20 62 79 20 61 20 e2 80 9c 60 64 6e owed by a “`dn
4920: 66 20 69 6e 73 74 61 6c 6c 20 71 65 6d 75 2d 73 f install qemu-s
4930: 74 61 74 69 63 2d 2a 60 e2 80 9d 20 63 6f 6d 6d tatic-*`” comm
4940: 61 6e 64 2e 29 0d 0a 0d 0a 46 6f 72 20 74 68 61 and.)....For tha
4950: 74 20 74 6f 20 77 6f 72 6b 20 75 6e 64 65 72 20 t to work under
4960: 60 63 6f 6e 74 61 69 6e 65 72 2e 6e 70 6b 60 2c `container.npk`,
4970: 20 74 68 65 20 52 6f 75 74 65 72 4f 53 20 64 65 the RouterOS de
4980: 76 65 6c 6f 70 65 72 73 20 77 6f 75 6c 64 20 68 velopers would h
4990: 61 76 65 20 74 6f 20 73 68 69 70 20 74 68 65 20 ave to ship the
49a0: 51 45 4d 55 20 61 6e 64 20 4c 69 6e 75 78 20 6b QEMU and Linux k
49b0: 65 72 6e 65 6c 20 5b 60 62 69 6e 66 6d 74 5f 6d ernel [`binfmt_m
49c0: 69 73 63 60 5d 28 68 74 74 70 73 3a 2f 2f 65 6e isc`](https://en
49d0: 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 .wikipedia.org/w
49e0: 69 6b 69 2f 42 69 6e 66 6d 74 5f 6d 69 73 63 29 iki/Binfmt_misc)
49f0: 20 62 72 69 64 67 65 73 20 6e 65 65 64 65 64 20 bridges needed
4a00: 74 6f 20 67 65 74 20 74 68 65 20 4f 53 20 74 6f to get the OS to
4a10: 20 61 63 63 65 70 74 20 74 68 65 73 65 20 e2 80 accept these
4a20: 9c 66 6f 72 65 69 67 6e e2 80 9d 20 62 69 6e 61 foreign” bina
4a30: 72 69 65 73 2e 20 53 69 6e 63 65 20 69 74 20 77 ries. Since it w
4a40: 6f 75 6c 64 20 61 70 70 72 6f 78 69 6d 61 74 65 ould approximate
4a50: 6c 79 20 64 6f 75 62 6c 65 20 74 68 65 20 73 69 ly double the si
4a60: 7a 65 20 6f 66 20 52 6f 75 74 65 72 4f 53 20 74 ze of RouterOS t
4a70: 6f 20 64 6f 20 74 68 69 73 20 66 6f 72 20 61 6c o do this for al
4a80: 6c 20 74 68 65 20 70 6f 70 75 6c 61 72 20 43 50 l the popular CP
4a90: 55 20 61 72 63 68 69 74 65 63 74 75 72 65 73 2c U architectures,
4aa0: 20 74 68 65 79 20 6e 61 74 75 72 61 6c 6c 79 20 they naturally
4ab0: 63 68 6f 73 65 20 5f 6e 6f 74 5f 20 74 6f 20 64 chose _not_ to d
4ac0: 6f 20 74 68 69 73 2e 0d 0a 0d 0a 57 68 61 74 20 o this.....What
4ad0: 74 68 69 73 20 6d 65 61 6e 73 20 69 6e 20 70 72 this means in pr
4ae0: 61 63 74 69 63 65 20 69 73 20 74 68 61 74 20 79 actice is that y
4af0: 6f 75 20 68 61 76 65 20 74 6f 20 62 65 20 73 75 ou have to be su
4b00: 72 65 20 74 68 65 20 69 6d 61 67 65 73 20 79 6f re the images yo
4b10: 75 20 77 61 6e 74 20 74 6f 20 75 73 65 20 77 65 u want to use we
4b20: 72 65 20 62 75 69 6c 74 20 66 6f 72 20 74 68 65 re built for the
4b30: 20 43 50 55 20 74 79 70 65 20 69 6e 20 79 6f 75 CPU type in you
4b40: 72 20 52 6f 75 74 65 72 4f 53 20 64 65 76 69 63 r RouterOS devic
4b50: 65 2e 20 54 68 69 73 20 69 73 20 74 72 75 65 20 e. This is true
4b60: 65 76 65 6e 20 62 65 74 77 65 65 6e 20 63 6c 6f even between clo
4b70: 73 65 6c 79 2d 72 65 6c 61 74 65 64 20 70 6c 61 sely-related pla
4b80: 74 66 6f 72 6d 73 2e 20 41 6e 20 41 52 4d 36 34 tforms. An ARM64
4b90: 20 72 6f 75 74 65 72 20 77 6f 6e e2 80 99 74 20 router won’t
4ba0: 72 75 6e 20 61 20 33 32 2d 62 69 74 20 41 52 4d run a 32-bit ARM
4bb0: 76 37 20 69 6d 61 67 65 2c 20 69 66 20 6f 6e 6c v7 image, if onl
4bc0: 79 20 62 65 63 61 75 73 65 20 69 74 20 77 69 6c y because it wil
4bd0: 6c 20 61 73 73 75 6d 65 20 61 20 33 32 2d 62 69 l assume a 32-bi
4be0: 74 20 4c 69 6e 75 78 20 6b 65 72 6e 65 6c 20 73 t Linux kernel s
4bf0: 79 73 63 61 6c 6c 20 69 6e 74 65 72 66 61 63 65 yscall interface
4c00: 2e 0d 0a 0d 0a 3c 61 20 69 64 3d 22 71 65 6d 75 .....<a id="qemu
4c10: 22 3e 3c 2f 61 3e 54 68 65 72 65 20 69 73 20 61 "></a>There is a
4c20: 6e 20 65 78 63 65 70 74 69 6f 6e 3a 20 79 6f 75 n exception: you
4c30: 20 63 61 6e 20 73 68 69 70 20 79 6f 75 72 20 6f can ship your o
4c40: 77 6e 20 43 50 55 20 65 6d 75 6c 61 74 69 6f 6e wn CPU emulation
4c50: 2e 20 54 61 6b 65 20 5b 74 68 69 73 20 74 68 72 . Take [this thr
4c60: 65 61 64 5d 28 68 74 74 70 73 3a 2f 2f 66 6f 72 ead](https://for
4c70: 75 6d 2e 6d 69 6b 72 6f 74 69 6b 2e 63 6f 6d 2f um.mikrotik.com/
4c80: 76 69 65 77 74 6f 70 69 63 2e 70 68 70 3f 74 3d viewtopic.php?t=
4c90: 31 38 39 34 38 35 29 2c 20 66 6f 72 20 65 78 61 189485), for exa
4ca0: 6d 70 6c 65 2c 20 77 68 69 63 68 20 64 65 73 63 mple, which desc
4cb0: 72 69 62 65 73 20 61 20 63 6f 6e 74 61 69 6e 65 ribes a containe
4cc0: 72 20 74 68 61 74 20 62 75 6e 64 6c 65 73 20 74 r that bundles t
4cd0: 68 65 20 33 32 2d 62 69 74 20 49 6e 74 65 6c 2d he 32-bit Intel-
4ce0: 63 6f 6d 70 69 6c 65 64 20 60 6e 65 74 69 6e 73 compiled `netins
4cf0: 74 61 6c 6c 2d 63 6c 69 60 20 4c 69 6e 75 78 20 tall-cli` Linux
4d00: 62 69 6e 61 72 79 20 61 6c 6f 6e 67 20 77 69 74 binary along wit
4d10: 68 20 61 6e 20 41 52 4d 20 62 75 69 6c 64 20 6f h an ARM build o
4d20: 66 20 6f 66 20 60 71 65 6d 75 2d 69 33 38 36 60 f of `qemu-i386`
4d30: 20 73 6f 20 74 68 61 74 20 69 74 20 77 69 6c 6c so that it will
4d40: 20 72 75 6e 20 6f 6e 20 41 52 4d 20 52 6f 75 74 run on ARM Rout
4d50: 65 72 4f 53 20 62 6f 78 65 73 2e 20 46 6f 72 20 erOS boxes. For
4d60: 61 20 70 72 6f 63 65 73 73 20 74 68 61 74 20 69 a process that i
4d70: 73 6e e2 80 99 74 20 43 50 55 2d 62 6f 75 6e 64 sn’t CPU-bound
4d80: 20 e2 80 94 20 61 6e 64 20 4e 65 74 49 6e 73 74 — and NetInst
4d90: 61 6c 6c 20 69 73 20 76 65 72 79 20 6d 75 63 68 all is very much
4da0: 20 49 2f 4f 2d 62 6f 75 6e 64 20 e2 80 94 20 74 I/O-bound — t
4db0: 68 69 73 20 63 61 6e 20 62 65 20 61 20 72 65 61 his can be a rea
4dc0: 73 6f 6e 61 62 6c 65 20 73 6f 6c 75 74 69 6f 6e sonable solution
4dd0: 20 61 73 20 6c 6f 6e 67 20 61 73 20 79 6f 75 e2 as long as you
4de0: 80 99 72 65 20 77 69 6c 6c 69 6e 67 20 74 6f 20 re willing to
4df0: 70 61 79 20 74 68 65 20 7e 34 20 6d 65 67 73 20 pay the ~4 megs
4e00: 74 68 65 20 65 6d 75 6c 61 74 6f 72 20 74 61 6b the emulator tak
4e10: 65 73 20 75 70 2e 0d 0a 0d 0a 0d 0a 23 23 20 3c es up.......## <
4e20: 61 20 69 64 3d 22 63 6f 6d 70 61 74 22 3e 3c 2f a id="compat"></
4e30: 61 3e 49 74 20 4f 6e 6c 79 20 53 75 70 70 6f 72 a>It Only Suppor
4e40: 74 73 20 49 6e 74 65 6c 20 61 6e 64 20 41 52 4d ts Intel and ARM
4e50: 0d 0a 0d 0a 4d 69 6b 72 6f 54 69 6b 20 68 61 73 ....MikroTik has
4e60: 20 73 68 69 70 70 65 64 20 61 6e 20 61 77 66 75 shipped an awfu
4e70: 6c 20 6c 6f 74 20 6f 66 20 4d 49 50 53 2d 62 61 l lot of MIPS-ba
4e80: 73 65 64 20 70 72 6f 64 75 63 74 20 6f 76 65 72 sed product over
4e90: 20 74 68 65 20 79 65 61 72 73 2c 20 61 6e 64 20 the years, and
4ea0: 69 74 20 63 6f 6e 74 69 6e 75 65 73 20 74 6f 20 it continues to
4eb0: 64 6f 20 73 6f 2c 20 6d 6f 73 74 20 72 65 63 65 do so, most rece
4ec0: 6e 74 6c 79 20 61 73 20 6f 66 20 74 68 69 73 20 ntly as of this
4ed0: 77 72 69 74 69 6e 67 20 69 6e 20 74 68 65 69 72 writing in their
4ee0: 20 5b 43 52 53 35 31 38 2d 31 36 58 53 2d 32 58 [CRS518-16XS-2X
4ef0: 51 2d 52 4d 5d 28 68 74 74 70 73 3a 2f 2f 6d 69 Q-RM](https://mi
4f00: 6b 72 6f 74 69 6b 2e 63 6f 6d 2f 70 72 6f 64 75 krotik.com/produ
4f10: 63 74 2f 63 72 73 35 31 38 5f 31 36 78 73 5f 32 ct/crs518_16xs_2
4f20: 78 71 29 2e 20 41 74 6f 70 20 74 68 61 74 2c 20 xq). Atop that,
4f30: 74 68 65 72 65 20 61 72 65 20 6f 74 68 65 72 20 there are other
4f40: 43 50 55 20 61 72 63 68 69 74 65 63 74 75 72 65 CPU architecture
4f50: 73 20 69 6e 20 74 68 65 20 68 69 73 74 6f 72 69 s in the histori
4f60: 63 61 6c 20 6d 69 78 20 6c 69 6b 65 20 50 6f 77 cal mix like Pow
4f70: 65 72 50 43 20 61 6e 64 20 54 49 4c 45 2e 20 4d erPC and TILE. M
4f80: 69 6b 72 6f 54 69 6b 20 64 6f 65 73 6e e2 80 99 ikroTik doesn’
4f90: 74 20 73 68 69 70 20 61 20 60 63 6f 6e 74 61 69 t ship a `contai
4fa0: 6e 65 72 2e 6e 70 6b 60 20 66 6f 72 20 61 6e 79 ner.npk` for any
4fb0: 20 6f 66 20 74 68 65 73 65 20 70 6c 61 74 66 6f of these platfo
4fc0: 72 6d 73 2e 0d 0a 0d 0a 42 75 74 20 77 68 79 20 rms.....But why
4fd0: 6e 6f 74 3f 0d 0a 0d 0a 54 6f 20 62 72 69 6e 67 not?....To bring
4fe0: 20 75 70 20 65 61 63 68 20 6e 65 77 20 62 75 69 up each new bui
4ff0: 6c 64 20 74 61 72 67 65 74 2c 20 74 68 65 20 63 ld target, the c
5000: 72 65 61 74 6f 72 73 20 6f 66 20 79 6f 75 72 20 reators of your
5010: 63 6f 6e 74 61 69 6e 65 72 20 62 75 69 6c 64 20 container build
5020: 74 6f 6f 6c 63 68 61 69 6e 20 6f 66 20 63 68 6f toolchain of cho
5030: 69 63 65 20 6d 75 73 74 20 62 72 69 6e 67 20 74 ice must bring t
5040: 6f 67 65 74 68 65 72 3a 0d 0a 0d 0a 2a 20 61 20 ogether:....* a
5050: 51 45 4d 55 20 65 6d 75 6c 61 74 6f 72 20 66 6f QEMU emulator fo
5060: 72 20 74 68 65 20 74 61 72 67 65 74 20 73 79 73 r the target sys
5070: 74 65 6d 0d 0a 2a 20 61 20 73 75 66 66 69 63 69 tem..* a suffici
5080: 65 6e 74 6c 79 20 63 6f 6d 70 6c 65 74 65 20 4c ently complete L
5090: 69 6e 75 78 20 64 69 73 74 72 6f 20 70 6f 72 74 inux distro port
50a0: 65 64 20 74 6f 20 74 68 61 74 20 74 61 72 67 65 ed to that targe
50b0: 74 0d 0a 2a 20 74 68 65 20 60 62 69 6e 66 6d 74 t..* the `binfmt
50c0: 5f 6d 69 73 63 60 20 6b 65 72 6e 65 6c 20 6d 6f _misc` kernel mo
50d0: 64 75 6c 65 73 20 74 68 61 74 20 74 69 65 20 74 dules that tie t
50e0: 68 65 73 65 20 74 77 6f 20 74 6f 67 65 74 68 65 hese two togethe
50f0: 72 0d 0a 0d 0a 51 45 4d 55 20 69 73 20 e2 80 9c r....QEMU is “
5100: 65 61 73 79 e2 80 9d 20 69 6e 20 74 68 65 20 73 easy” in the s
5110: 65 6e 73 65 20 74 68 61 74 20 74 68 65 20 68 61 ense that the ha
5120: 72 64 20 77 6f 72 6b 20 68 61 73 20 61 6c 72 65 rd work has alre
5130: 61 64 79 20 62 65 65 6e 20 64 6f 6e 65 3b 20 74 ady been done; t
5140: 68 65 72 65 20 61 72 65 20 51 45 4d 55 20 65 6d here are QEMU em
5150: 75 6c 61 74 6f 72 73 20 66 6f 72 20 65 76 65 72 ulators for ever
5160: 79 20 43 50 55 20 74 79 70 65 20 4d 69 6b 72 6f y CPU type Mikro
5170: 54 69 6b 20 65 76 65 72 20 73 68 69 70 70 65 64 Tik ever shipped
5180: 2e 20 28 5b 44 65 74 61 69 6c 73 5d 28 68 74 74 . ([Details](htt
5190: 70 73 3a 2f 2f 77 77 77 2e 71 65 6d 75 2e 6f 72 ps://www.qemu.or
51a0: 67 2f 64 6f 63 73 2f 6d 61 73 74 65 72 2f 73 79 g/docs/master/sy
51b0: 73 74 65 6d 2f 74 61 72 67 65 74 73 2e 68 74 6d stem/targets.htm
51c0: 6c 29 29 20 54 68 65 72 65 e2 80 99 73 20 61 20 l)) There’s a
51d0: 70 61 72 74 69 61 6c 20 65 78 63 65 70 74 69 6f partial exceptio
51e0: 6e 20 77 69 74 68 20 54 49 4c 45 2c 20 77 68 69 n with TILE, whi
51f0: 63 68 20 6f 6e 63 65 20 65 78 69 73 74 65 64 20 ch once existed
5200: 69 6e 20 51 45 4d 55 20 63 6f 72 65 20 62 75 74 in QEMU core but
5210: 20 68 61 73 20 62 65 65 6e 20 72 65 6d 6f 76 65 has been remove
5220: 64 20 66 6f 72 20 79 65 61 72 73 2c 20 66 6f 6c d for years, fol
5230: 6c 6f 77 69 6e 67 20 74 68 65 20 72 65 6d 6f 76 lowing the remov
5240: 61 6c 20 6f 66 20 54 49 4c 45 20 73 75 70 70 6f al of TILE suppo
5250: 72 74 20 66 72 6f 6d 20 74 68 65 20 4c 69 6e 75 rt from the Linu
5260: 78 20 6b 65 72 6e 65 6c 2e 20 54 68 65 20 74 68 x kernel. The th
5270: 69 6e 67 20 69 73 2c 20 54 49 4c 45 20 68 61 73 ing is, TILE has
5280: 6e e2 80 99 74 20 70 72 6f 67 72 65 73 73 65 64 n’t progressed
5290: 20 69 6e 20 74 68 65 20 6d 65 61 6e 74 69 6d 65 in the meantime
52a0: 2c 20 73 6f 20 62 72 69 6e 67 69 6e 67 20 75 70 , so bringing up
52b0: 20 61 20 51 45 4d 55 20 54 49 4c 45 20 65 6d 75 a QEMU TILE emu
52c0: 6c 61 74 6f 72 20 73 68 6f 75 6c 64 20 62 65 20 lator should be
52d0: 61 20 6d 61 74 74 65 72 20 6f 66 20 70 75 74 74 a matter of putt
52e0: 69 6e 67 20 69 6e 20 74 68 65 20 77 6f 72 6b 20 ing in the work
52f0: 74 6f 20 70 6f 72 74 20 69 74 20 74 6f 20 61 20 to port it to a
5300: 64 65 63 61 64 65 2d 6e 65 77 65 72 20 76 65 72 decade-newer ver
5310: 73 69 6f 6e 20 6f 66 20 4c 69 6e 75 78 2e 0d 0a sion of Linux...
5320: 0d 0a 54 68 65 20 62 69 6e 66 6d 74 20 70 69 65 ..The binfmt pie
5330: 63 65 20 69 73 20 61 6c 73 6f 20 65 61 73 79 20 ce is also easy
5340: 65 6e 6f 75 67 68 2e 0d 0a 0d 0a 54 68 61 74 20 enough.....That
5350: 6c 65 61 76 65 73 20 74 68 65 20 4c 69 6e 75 78 leaves the Linux
5360: 20 64 69 73 74 72 6f 73 20 66 6f 72 20 74 68 65 distros for the
5370: 20 74 61 72 67 65 74 20 70 6c 61 74 66 6f 72 6d target platform
5380: 73 20 75 73 65 64 20 61 73 20 63 6f 6e 74 61 69 s used as contai
5390: 6e 65 72 20 62 61 73 65 20 69 6d 61 67 65 73 2e ner base images.
53a0: 20 54 68 61 74 e2 80 99 73 20 74 68 65 20 74 72 That’s the tr
53b0: 75 65 20 73 74 69 63 6b 69 6e 67 20 70 6f 69 6e ue sticking poin
53c0: 74 2e 0d 0a 0d 0a 4f 6e 65 20 6f 66 20 74 68 65 t.....One of the
53d0: 20 6d 6f 73 74 20 70 6f 77 65 72 66 75 6c 20 69 most powerful i
53e0: 64 65 61 73 20 69 6e 20 74 68 65 20 4f 43 49 20 deas in the OCI
53f0: 63 6f 6e 74 61 69 6e 65 72 20 65 63 6f 73 70 68 container ecosph
5400: 65 72 65 20 69 73 20 74 68 61 74 20 79 6f 75 20 ere is that you
5410: 64 6f 6e e2 80 99 74 20 63 72 6f 73 73 2d 63 6f don’t cross-co
5420: 6d 70 69 6c 65 20 70 72 6f 67 72 61 6d 73 2c 20 mpile programs,
5430: 79 6f 75 20 62 6f 6f 74 20 61 6e 20 5f 65 78 69 you boot an _exi
5440: 73 74 69 6e 67 5f 20 4c 69 6e 75 78 20 64 69 73 sting_ Linux dis
5450: 74 72 6f 20 69 6d 61 67 65 20 66 6f 72 20 74 68 tro image for th
5460: 65 20 74 61 72 67 65 74 20 70 6c 61 74 66 6f 72 e target platfor
5470: 6d 20 75 6e 64 65 72 20 51 45 4d 55 2c 20 74 68 m under QEMU, th
5480: 65 6e 20 75 73 65 20 74 68 65 20 6e 61 74 69 76 en use the nativ
5490: 65 20 74 6f 6f 6c 69 6e 67 20 74 6f 20 70 72 6f e tooling to pro
54a0: 64 75 63 65 20 e2 80 9c 6e 61 74 69 76 65 e2 80 duce “native
54b0: 9d 20 62 69 6e 61 72 69 65 73 2c 20 77 68 69 63 binaries, whic
54c0: 68 20 74 68 65 20 60 62 69 6e 66 6d 74 5f 6d 69 h the `binfmt_mi
54d0: 73 63 60 20 70 69 65 63 65 20 74 68 65 6e 20 74 sc` piece then t
54e0: 75 72 6e 73 20 62 61 63 6b 20 61 72 6f 75 6e 64 urns back around
54f0: 20 61 6e 64 20 72 75 6e 73 20 75 6e 64 65 72 20 and runs under
5500: 51 45 4d 55 20 61 67 61 69 6e 2e 0d 0a 0d 0a 49 QEMU again.....I
5510: 74 e2 80 99 73 20 61 20 6c 6f 74 20 6f 66 20 77 t’s a lot of w
5520: 6f 72 6b 20 74 6f 20 67 65 74 20 61 20 73 69 6e ork to get a sin
5530: 67 6c 65 20 6e 65 77 20 4c 69 6e 75 78 20 64 69 gle new Linux di
5540: 73 74 72 6f 20 77 6f 72 6b 69 6e 67 20 75 6e 64 stro working und
5550: 65 72 20 60 62 75 69 6c 64 78 60 2c 20 65 76 65 er `buildx`, eve
5560: 6e 20 69 66 20 79 6f 75 20 73 74 61 72 74 20 77 n if you start w
5570: 69 74 68 20 61 6e 20 65 78 69 73 74 69 6e 67 20 ith an existing
5580: 74 68 69 72 64 2d 70 61 72 74 79 20 70 6f 72 74 third-party port
5590: 20 73 75 63 68 20 61 73 20 74 68 65 20 4d 61 63 such as the Mac
55a0: 20 50 50 43 20 62 75 69 6c 64 73 20 6f 66 20 55 PPC builds of U
55b0: 62 75 6e 74 75 2e 20 47 6f 6f 64 20 6c 75 63 6b buntu. Good luck
55c0: 20 69 66 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 if you want to
55d0: 73 75 70 70 6f 72 74 20 61 6e 20 6f 64 64 62 61 support an oddba
55e0: 6c 6c 20 43 50 55 20 6c 69 6b 65 20 54 49 4c 45 ll CPU like TILE
55f0: 2c 20 74 68 6f 75 67 68 2e 0d 0a 0d 0a 42 75 74 , though.....But
5600: 20 74 68 65 6e 2c 20 68 61 76 69 6e 67 20 64 6f then, having do
5610: 6e 65 20 73 6f 2c 20 79 6f 75 e2 80 99 72 65 20 ne so, you’re
5620: 69 6e 20 61 20 66 72 65 73 68 20 6a 61 6d 20 77 in a fresh jam w
5630: 68 65 6e 20 79 6f 75 20 74 72 79 20 74 6f 20 72 hen you try to r
5640: 65 62 75 69 6c 64 20 61 6e 20 65 78 69 73 74 69 ebuild an existi
5650: 6e 67 20 63 6f 6e 74 61 69 6e 65 72 20 74 68 61 ng container tha
5660: 74 20 73 61 79 73 20 e2 80 9c 60 46 52 4f 4d 60 t says “`FROM`
5670: e2 80 9d 20 73 6f 6d 65 74 68 69 6e 67 20 65 6c ” something el
5680: 73 65 3b 20 60 75 62 69 39 60 2c 20 66 6f 72 20 se; `ubi9`, for
5690: 69 6e 73 74 61 6e 63 65 2e 20 44 6f 20 79 6f 75 instance. Do you
56a0: 20 72 65 70 65 61 74 20 61 6c 6c 20 74 68 61 74 repeat all that
56b0: 20 70 6f 72 74 69 6e 67 20 77 6f 72 6b 20 66 6f porting work fo
56c0: 72 20 52 48 45 4c e2 80 99 73 20 5b 55 42 49 5d r RHEL’s [UBI]
56d0: 28 68 74 74 70 73 3a 2f 2f 77 77 77 2e 72 65 64 (https://www.red
56e0: 68 61 74 2e 63 6f 6d 2f 65 6e 2f 62 6c 6f 67 2f hat.com/en/blog/
56f0: 69 6e 74 72 6f 64 75 63 69 6e 67 2d 72 65 64 2d introducing-red-
5700: 68 61 74 2d 75 6e 69 76 65 72 73 61 6c 2d 62 61 hat-universal-ba
5710: 73 65 2d 69 6d 61 67 65 29 2c 20 6f 72 20 64 6f se-image), or do
5720: 20 79 6f 75 20 65 78 70 65 6e 64 20 74 68 65 20 you expend the
5730: 6c 65 73 73 65 72 20 65 66 66 6f 72 74 20 74 6f lesser effort to
5740: 20 70 6f 72 74 20 74 68 65 20 63 6f 6e 74 61 69 port the contai
5750: 6e 65 72 20 66 72 6f 6d 20 52 48 45 4c 20 74 6f ner from RHEL to
5760: 20 74 68 65 20 55 62 75 6e 74 75 20 69 6d 61 67 the Ubuntu imag
5770: 65 20 62 61 73 65 20 79 6f 75 20 61 6c 72 65 61 e base you alrea
5780: 64 79 20 68 61 76 65 3f 0d 0a 0d 0a 54 68 65 6e dy have?....Then
5790: 20 79 6f 75 20 63 6f 6d 65 20 61 63 72 6f 73 73 you come across
57a0: 20 6f 6e 65 20 6f 66 20 74 68 65 20 68 75 67 65 one of the huge
57b0: 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6e 74 61 number of conta
57c0: 69 6e 65 72 73 20 62 61 73 65 64 20 6f 6e 20 41 iners based on A
57d0: 6c 70 69 6e 65 2c 20 61 6e 64 20 79 6f 75 e2 80 lpine, and you
57e0: 99 72 65 20 62 61 63 6b 20 69 6e 20 74 68 65 20 re back in the
57f0: 73 6f 75 70 20 61 67 61 69 6e 2e 20 57 68 69 6c soup again. Whil
5800: 65 20 5b 69 74 73 20 43 50 55 20 73 75 70 70 6f e [its CPU suppo
5810: 72 74 20 6c 69 73 74 5d 28 68 74 74 70 73 3a 2f rt list](https:/
5820: 2f 77 69 6b 69 2e 61 6c 70 69 6e 65 6c 69 6e 75 /wiki.alpinelinu
5830: 78 2e 6f 72 67 2f 77 69 6b 69 2f 52 65 71 75 69 x.org/wiki/Requi
5840: 72 65 6d 65 6e 74 73 29 20 69 73 20 62 72 6f 61 rements) is broa
5850: 64 65 72 20 74 68 61 6e 20 5b 74 68 65 20 6f 6e der than [the on
5860: 65 20 66 6f 72 20 55 62 75 6e 74 75 5d 28 68 74 e for Ubuntu](ht
5870: 74 70 73 3a 2f 2f 75 62 75 6e 74 75 2e 63 6f 6d tps://ubuntu.com
5880: 2f 63 70 75 2d 63 6f 6d 70 61 74 69 62 69 6c 69 /cpu-compatibili
5890: 74 79 29 2c 20 74 68 65 72 65 20 69 73 20 6e 6f ty), there is no
58a0: 20 54 49 4c 45 20 6f 72 20 4d 49 50 53 20 61 74 TILE or MIPS at
58b0: 20 61 6c 6c 2c 20 61 6e 64 20 69 74 73 20 50 50 all, and its PP
58c0: 43 20 73 75 70 70 6f 72 74 20 69 73 20 36 34 2d C support is 64-
58d0: 62 69 74 20 6f 6e 6c 79 2e 20 41 72 65 20 79 6f bit only. Are yo
58e0: 75 20 67 6f 69 6e 67 20 74 6f 20 70 6f 72 74 20 u going to port
58f0: 74 68 65 20 41 6c 70 69 6e 65 20 62 61 73 65 20 the Alpine base
5900: 69 6d 61 67 65 20 61 6e 64 20 65 6e 6f 75 67 68 image and enough
5910: 20 6f 66 20 69 74 73 20 70 61 63 6b 61 67 65 20 of its package
5920: 72 65 70 6f 73 69 74 6f 72 79 20 74 6f 20 67 65 repository to ge
5930: 74 20 79 6f 75 72 20 63 6f 6e 74 61 69 6e 65 72 t your container
5940: 20 62 75 69 6c 64 69 6e 67 3f 0d 0a 0d 0a 54 68 building?....Th
5950: 65 6e 20 74 68 65 72 65 e2 80 99 73 20 44 65 62 en there’s Deb
5960: 69 61 6e 2c 20 61 6e 6f 74 68 65 72 20 70 6f 70 ian, another pop
5970: 75 6c 61 72 20 4f 43 49 20 69 6d 61 67 65 20 62 ular OCI image b
5980: 61 73 65 2c 20 6f 6e 65 20 74 68 61 74 e2 80 99 ase, one that’
5990: 73 20 62 65 65 6e 20 70 6f 72 74 65 64 20 74 6f s been ported to
59a0: 20 61 20 6c 6f 74 20 6f 66 20 73 74 72 61 6e 67 a lot of strang
59b0: 65 20 70 6c 61 74 66 6f 72 6d 73 2c 20 62 75 74 e platforms, but
59c0: 20 63 68 61 6e 63 65 73 20 61 72 65 20 74 68 61 chances are tha
59d0: 74 20 69 74 20 77 61 73 20 73 6f 6d 65 6f 6e 65 t it was someone
59e0: e2 80 99 73 20 77 69 6c 64 20 70 72 6f 6a 65 63 ’s wild projec
59f0: 74 2c 20 6e 6f 77 20 61 62 61 6e 64 6f 6e 65 64 t, now abandoned
5a00: 2e 20 49 74 e2 80 99 73 20 6c 69 6b 65 6c 79 20 . It’s likely
5a10: 74 68 65 20 41 50 54 20 70 61 63 6b 61 67 65 20 the APT package
5a20: 72 65 70 6f 20 69 73 6e e2 80 99 74 20 77 6f 72 repo isn’t wor
5a30: 6b 69 6e 67 20 61 6e 79 20 6d 6f 72 65 2c 20 66 king any more, f
5a40: 6f 72 20 6f 6e 65 2c 20 62 65 63 61 75 73 65 20 or one, because
5a50: 77 68 6f 20 77 61 6e 74 73 20 74 6f 20 68 6f 73 who wants to hos
5a60: 74 20 61 20 68 75 67 65 20 73 65 74 20 6f 66 20 t a huge set of
5a70: 70 61 63 6b 61 67 65 73 20 66 6f 72 20 61 20 64 packages for a d
5a80: 65 61 64 20 70 72 6f 6a 65 63 74 3f 0d 0a 0d 0a ead project?....
5a90: 49 6e 20 62 72 69 65 66 2c 20 74 68 65 20 72 65 In brief, the re
5aa0: 61 73 6f 6e 20 4d 69 6b 72 6f 54 69 6b 20 64 6f ason MikroTik do
5ab0: 65 73 6e e2 80 99 74 20 73 68 69 70 20 60 63 6f esn’t ship `co
5ac0: 6e 74 61 69 6e 65 72 2e 6e 70 6b 60 20 66 6f 72 ntainer.npk` for
5ad0: 20 33 32 2d 62 69 74 20 50 50 43 2c 20 33 32 2d 32-bit PPC, 32-
5ae0: 62 69 74 20 4d 49 50 53 2c 20 61 6e 64 20 54 49 bit MIPS, and TI
5af0: 4c 45 20 69 73 20 74 68 61 74 20 74 68 65 72 65 LE is that there
5b00: 20 61 72 65 20 66 65 77 20 4c 69 6e 75 78 20 64 are few Linux d
5b10: 69 73 74 72 6f 20 69 6d 61 67 65 73 20 69 6e 20 istro images in
5b20: 4f 43 49 20 66 6f 72 6d 61 74 20 74 6f 20 75 73 OCI format to us
5b30: 65 20 61 73 20 62 61 73 65 20 69 6d 61 67 65 73 e as base images
5b40: 2c 20 61 6e 64 20 69 74 20 69 73 6e e2 80 99 74 , and it isn’t
5b50: 20 67 72 65 61 74 6c 79 20 69 6e 20 74 68 65 69 greatly in thei
5b60: 72 20 69 6e 74 65 72 65 73 74 20 74 6f 20 70 75 r interest to pu
5b70: 6c 6c 20 74 68 61 74 20 74 6f 67 65 74 68 65 72 ll that together
5b80: 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20 along with the
5b90: 51 45 4d 55 20 61 6e 64 20 60 62 69 6e 66 6d 74 QEMU and `binfmt
5ba0: 5f 6d 69 73 63 60 20 70 69 65 63 65 73 20 66 6f _misc` pieces fo
5bb0: 72 20 79 6f 75 2c 20 6e 6f 72 20 69 73 20 69 74 r you, nor is it
5bc0: 20 69 6e 20 74 68 65 20 66 69 6e 61 6e 63 69 61 in the financia
5bd0: 6c 20 69 6e 74 65 72 65 73 74 20 6f 66 20 44 6f l interest of Do
5be0: 63 6b 65 72 2c 20 50 6f 64 6d 61 6e 2c 20 65 74 cker, Podman, et
5bf0: 63 2e 0d 0a 0d 0a 54 68 65 72 65 e2 80 99 73 20 c.....There’s
5c00: 6e 6f 74 68 69 6e 67 20 73 74 6f 70 70 69 6e 67 nothing stopping
5c10: 20 61 6e 79 6f 6e 65 20 72 65 61 64 69 6e 67 20 anyone reading
5c20: 74 68 69 73 20 74 68 61 74 20 68 61 73 20 74 68 this that has th
5c30: 65 20 73 6b 69 6c 6c 20 61 6e 64 20 6d 6f 74 69 e skill and moti
5c40: 76 61 74 69 6f 6e 20 74 6f 20 64 6f 20 74 68 69 vation to do thi
5c50: 73 20 66 72 6f 6d 20 64 6f 69 6e 67 20 73 6f 2c s from doing so,
5c60: 20 62 75 74 20 79 6f 75 e2 80 99 6c 6c 20 68 61 but you’ll ha
5c70: 76 65 20 74 6f 20 70 72 6f 76 65 20 6f 75 74 20 ve to prove out
5c80: 79 6f 75 72 20 63 6f 6e 74 61 69 6e 65 72 73 20 your containers
5c90: 75 6e 64 65 72 20 65 6d 75 6c 61 74 69 6f 6e 2e under emulation.
5ca0: 20 4e 6f 74 20 75 6e 74 69 6c 20 74 68 65 6e 20 Not until then
5cb0: 64 6f 20 49 20 73 65 65 20 4d 69 6b 72 6f 54 69 do I see MikroTi
5cc0: 6b 20 62 65 69 6e 67 20 66 6f 72 63 65 64 20 74 k being forced t
5cd0: 6f 20 74 61 6b 65 20 6e 6f 74 69 63 65 20 61 6e o take notice an
5ce0: 64 20 70 72 6f 76 69 64 65 20 61 20 62 75 69 6c d provide a buil
5cf0: 64 20 6f 66 20 60 63 6f 6e 74 61 69 6e 65 72 2e d of `container.
5d00: 6e 70 6b 60 20 66 6f 72 20 74 68 61 74 20 70 6c npk` for that pl
5d10: 61 74 66 6f 72 6d 2e 20 49 74 e2 80 99 73 20 6e atform. It’s n
5d20: 6f 74 20 71 75 69 74 65 20 61 20 63 6c 61 73 73 ot quite a class
5d30: 69 63 20 63 68 69 63 6b 65 6e 2d 61 6e 64 2d 65 ic chicken-and-e
5d40: 67 67 20 73 69 74 75 61 74 69 6f 6e 2c 20 62 75 gg situation, bu
5d50: 74 20 49 20 63 61 6e e2 80 99 74 20 69 67 6e 6f t I can’t igno
5d60: 72 65 20 74 68 65 20 68 69 73 73 20 6f 66 20 72 re the hiss of r
5d70: 61 64 69 6f 20 73 69 6c 65 6e 63 65 20 49 20 67 adio silence I g
5d80: 6f 74 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 ot in response t
5d90: 6f 20 5b 74 68 69 73 20 63 68 61 6c 6c 65 6e 67 o [this challeng
5da0: 65 5d 28 68 74 74 70 73 3a 2f 2f 66 6f 72 75 6d e](https://forum
5db0: 2e 6d 69 6b 72 6f 74 69 6b 2e 63 6f 6d 2f 76 69 .mikrotik.com/vi
5dc0: 65 77 74 6f 70 69 63 2e 70 68 70 3f 74 3d 32 30 ewtopic.php?t=20
5dd0: 34 38 36 38 23 70 31 30 35 38 33 35 31 29 20 6f 4868#p1058351) o
5de0: 6e 20 74 68 65 20 66 6f 72 75 6d 2e 0d 0a 0d 0a n the forum.....
5df0: 55 6e 74 69 6c 20 73 6f 6d 65 6f 6e 65 20 62 72 Until someone br
5e00: 65 61 6b 73 20 74 68 69 73 20 6c 6f 67 6a 61 6d eaks this logjam
5e10: 2c 20 69 74 e2 80 99 73 20 66 61 69 72 20 65 6e , it’s fair en
5e20: 6f 75 67 68 20 74 6f 20 73 61 79 20 74 68 61 74 ough to say that
5e30: 20 52 6f 75 74 65 72 4f 53 e2 80 99 73 20 63 6f RouterOS’s co
5e40: 6e 74 61 69 6e 65 72 20 72 75 6e 6e 65 72 20 6f ntainer runner o
5e50: 6e 6c 79 20 73 75 70 70 6f 72 74 73 20 41 52 4d nly supports ARM
5e60: 20 61 6e 64 20 49 6e 74 65 6c 20 43 50 55 73 2e and Intel CPUs.
5e70: 0d 0a 0d 0a 0d 0a 23 20 3c 61 20 69 64 3d 22 74 ......# <a id="t
5e80: 6c 63 22 3e 3c 2f 61 3e 52 65 6d 61 69 6e 69 6e lc"></a>Remainin
5e90: 67 20 54 6f 70 2d 4c 65 76 65 6c 20 43 6f 6d 6d g Top-Level Comm
5ea0: 61 6e 64 73 0d 0a 0d 0a 53 6f 20 65 6e 64 73 20 ands....So ends
5eb0: 6d 79 20 63 6f 76 65 72 61 67 65 20 6f 66 20 74 my coverage of t
5ec0: 68 65 20 68 65 61 76 79 20 70 6f 69 6e 74 73 2e he heavy points.
5ed0: 20 45 76 65 72 79 74 68 69 6e 67 20 65 6c 73 65 Everything else
5ee0: 20 77 65 20 63 61 6e 20 74 6f 75 63 68 20 6f 6e we can touch on
5ef0: 20 62 72 69 65 66 6c 79 2c 20 6f 66 74 65 6e 20 briefly, often
5f00: 62 79 20 72 65 66 65 72 65 6e 63 65 20 74 6f 20 by reference to
5f10: 6d 61 74 74 65 72 73 20 63 6f 76 65 72 65 64 20 matters covered
5f20: 70 72 65 76 69 6f 75 73 6c 79 2e 0d 0a 0d 0a 46 previously.....F
5f30: 6f 72 20 6c 61 63 6b 20 6f 66 20 61 6e 79 20 62 or lack of any b
5f40: 65 74 74 65 72 20 6f 72 67 61 6e 69 7a 61 74 69 etter organizati
5f50: 6f 6e 20 70 72 69 6e 63 69 70 6c 65 2c 20 49 e2 on principle, I
5f60: 80 99 76 65 20 63 68 6f 73 65 6e 20 74 6f 20 63 ve chosen to c
5f70: 6f 76 65 72 20 74 68 65 20 72 65 6d 61 69 6e 69 over the remaini
5f80: 6e 67 20 60 64 6f 63 6b 65 72 60 20 43 4c 49 20 ng `docker` CLI
5f90: 63 6f 6d 6d 61 6e 64 73 20 69 6e 20 61 6c 70 68 commands in alph
5fa0: 61 62 65 74 69 63 61 6c 20 6f 72 64 65 72 2e 20 abetical order.
5fb0: 49 20 73 6b 69 70 20 6f 76 65 72 20 73 68 6f 72 I skip over shor
5fc0: 74 20 61 6c 69 61 73 65 73 20 6c 69 6b 65 20 60 t aliases like `
5fd0: 64 6f 63 6b 65 72 20 72 6d 69 60 20 66 6f 72 20 docker rmi` for
5fe0: 60 64 6f 63 6b 65 72 20 69 6d 61 67 65 20 72 6d `docker image rm
5ff0: 60 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 63 6f ` in order to co
6000: 76 65 72 20 74 68 69 6e 67 73 20 6f 6e 6c 79 20 ver things only
6010: 6f 6e 63 65 2c 20 61 6e 64 20 49 20 64 6f 6e e2 once, and I don
6020: 80 99 74 20 72 65 70 65 61 74 20 61 6e 79 20 6f t repeat any o
6030: 66 20 74 68 65 20 60 63 72 65 61 74 65 60 2f 60 f the `create`/`
6040: 6c 6f 61 64 60 2f 60 72 75 6e 60 20 64 69 73 63 load`/`run` disc
6050: 75 73 73 69 6f 6e 20 5b 61 62 6f 76 65 5d 28 23 ussion [above](#
6060: 63 72 65 61 74 65 29 2e 20 42 65 63 61 75 73 65 create). Because
6070: 20 50 6f 64 6d 61 6e 20 63 6c 6f 6e 65 64 20 74 Podman cloned t
6080: 68 65 20 44 6f 63 6b 65 72 20 43 4c 49 2c 20 74 he Docker CLI, t
6090: 68 69 73 20 6f 72 64 65 72 69 6e 67 20 6d 61 74 his ordering mat
60a0: 63 68 65 73 20 75 70 20 66 61 69 72 6c 79 20 77 ches up fairly w
60b0: 65 6c 6c 20 77 69 74 68 20 69 74 73 20 74 6f 70 ell with its top
60c0: 2d 6c 65 76 65 6c 20 63 6f 6d 6d 61 6e 64 20 73 -level command s
60d0: 74 72 75 63 74 75 72 65 20 61 73 20 77 65 6c 6c tructure as well
60e0: 2c 20 74 68 65 20 70 72 69 6d 61 72 79 20 65 78 , the primary ex
60f0: 63 65 70 74 69 6f 6e 20 62 65 69 6e 67 20 74 68 ception being th
6100: 61 74 20 49 20 64 6f 20 6e 6f 74 20 63 75 72 72 at I do not curr
6110: 65 6e 74 6c 79 20 67 6f 20 69 6e 74 6f 20 61 6e ently go into an
6120: 79 20 6f 66 20 50 6f 64 6d 61 6e e2 80 99 73 20 y of Podman’s
6130: 70 75 72 65 20 65 78 74 65 6e 73 69 6f 6e 73 2c pure extensions,
6140: 20 6f 6e 65 73 20 73 75 63 68 20 61 73 20 69 74 ones such as it
6150: 73 20 65 70 6f 6e 79 6d 6f 75 73 20 60 70 6f 64 s eponymous `pod
6160: 60 20 63 6f 6d 6d 61 6e 64 2e 0d 0a 0d 0a 0d 0a ` command.......
6170: 23 23 20 3c 61 20 69 64 3d 22 62 75 69 6c 64 22 ## <a id="build"
6180: 3e 3c 2f 61 3e 60 62 75 69 6c 64 60 2f 60 62 75 ></a>`build`/`bu
6190: 69 6c 64 78 60 0d 0a 0d 0a 52 6f 75 74 65 72 4f ildx`....RouterO
61a0: 53 20 70 72 6f 76 69 64 65 73 20 61 20 62 61 72 S provides a bar
61b0: 65 2d 62 6f 6e 65 73 20 63 6f 6e 74 61 69 6e 65 e-bones containe
61c0: 72 20 72 75 6e 74 69 6d 65 20 6f 6e 6c 79 2c 20 r runtime only,
61d0: 6e 6f 74 20 61 6e 79 20 6f 66 20 74 68 65 20 69 not any of the i
61e0: 6d 61 67 65 20 62 75 69 6c 64 69 6e 67 20 74 6f mage building to
61f0: 6f 6c 63 68 61 69 6e 2e 0d 0a 0d 0a 0d 0a 23 23 olchain.......##
6200: 20 3c 61 20 69 64 3d 22 63 6f 6d 6d 69 74 22 3e <a id="commit">
6210: 3c 2f 61 3e 60 63 6f 6d 6d 69 74 60 0d 0a 0d 0a </a>`commit`....
6220: 47 69 76 65 6e 20 74 68 65 20 5b 67 6c 6f 62 61 Given the [globa
6230: 6c 20 6c 69 6d 69 74 61 74 69 6f 6e 73 5d 28 23 l limitations](#
6240: 67 6c 6f 62 61 6c 29 2c 20 69 74 20 73 68 6f 75 global), it shou
6250: 6c 64 20 62 65 20 6e 6f 20 73 75 72 70 72 69 73 ld be no surpris
6260: 65 20 74 68 61 74 20 52 6f 75 74 65 72 4f 53 20 e that RouterOS
6270: 68 61 73 20 6e 6f 20 77 61 79 20 74 6f 20 63 6f has no way to co
6280: 6d 6d 69 74 20 63 68 61 6e 67 65 73 20 6d 61 64 mmit changes mad
6290: 65 20 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 e to the current
62a0: 20 69 6d 61 67 65 20 6c 61 79 65 72 20 74 6f 20 image layer to
62b0: 61 20 6e 65 77 20 6c 61 79 65 72 2e 0d 0a 0d 0a a new layer.....
62c0: 0d 0a 23 23 20 3c 61 20 69 64 3d 22 63 6f 6d 70 ..## <a id="comp
62d0: 6f 73 65 22 3e 3c 2f 61 3e 60 63 6f 6d 70 6f 73 ose"></a>`compos
62e0: 65 60 0d 0a 0d 0a 52 6f 75 74 65 72 4f 53 20 63 e`....RouterOS c
62f0: 6f 6d 70 6c 65 74 65 6c 79 20 6c 61 63 6b 73 20 ompletely lacks
6300: 6d 75 6c 74 69 2d 63 6f 6e 74 61 69 6e 65 72 20 multi-container
6310: 6f 72 63 68 65 73 74 72 61 74 69 6f 6e 20 66 65 orchestration fe
6320: 61 74 75 72 65 73 2c 20 69 6e 63 6c 75 64 69 6e atures, includin
6330: 67 20 6c 69 67 68 74 77 65 69 67 68 74 20 73 69 g lightweight si
6340: 6e 67 6c 65 2d 62 6f 78 20 6f 6e 65 73 20 6c 69 ngle-box ones li
6350: 6b 65 20 5b 43 6f 6d 70 6f 73 65 5d 28 68 74 74 ke [Compose](htt
6360: 70 73 3a 2f 2f 64 6f 63 73 2e 64 6f 63 6b 65 72 ps://docs.docker
6370: 2e 63 6f 6d 2f 63 6f 6d 70 6f 73 65 2f 29 20 6f .com/compose/) o
6380: 72 20 5b 4b 69 6e 64 5d 28 68 74 74 70 73 3a 2f r [Kind](https:/
6390: 2f 6b 69 6e 64 2e 73 69 67 73 2e 6b 38 73 2e 69 /kind.sigs.k8s.i
63a0: 6f 29 20 76 69 72 74 75 61 6c 20 63 6c 75 73 74 o) virtual clust
63b0: 65 72 73 2e 0d 0a 0d 0a 0d 0a 23 23 20 3c 61 20 ers.......## <a
63c0: 69 64 3d 22 63 70 22 3e 3c 2f 61 3e 60 63 70 60 id="cp"></a>`cp`
63d0: 0d 0a 0d 0a 52 6f 75 74 65 72 4f 53 20 64 6f 65 ....RouterOS doe
63e0: 73 20 6c 65 74 20 79 6f 75 20 6d 6f 75 6e 74 20 s let you mount
63f0: 61 20 76 6f 6c 75 6d 65 20 69 6e 73 69 64 65 20 a volume inside
6400: 61 20 63 6f 6e 74 61 69 6e 65 72 2c 20 74 68 65 a container, the
6410: 6e 20 75 73 65 20 74 68 65 20 72 65 67 75 6c 61 n use the regula
6420: 72 20 60 2f 66 69 6c 65 60 20 66 61 63 69 6c 69 r `/file` facili
6430: 74 79 20 74 6f 20 63 6f 70 79 20 66 69 6c 65 73 ty to copy files
6440: 20 69 6e 20 75 6e 64 65 72 20 74 68 61 74 20 76 in under that v
6450: 6f 6c 75 6d 65 e2 80 99 73 20 6d 6f 75 6e 74 20 olume’s mount
6460: 70 6f 69 6e 74 2c 20 62 75 74 20 74 68 69 73 20 point, but this
6470: 69 73 20 6e 6f 74 20 61 74 20 61 6c 6c 20 74 68 is not at all th
6480: 65 20 73 61 6d 65 20 74 68 69 6e 67 20 61 73 20 e same thing as
6490: 74 68 65 20 e2 80 9c 60 64 6f 63 6b 65 72 20 63 the “`docker c
64a0: 70 60 e2 80 9d 20 63 6f 6d 6d 61 6e 64 2e 20 54 p`” command. T
64b0: 68 65 72 65 20 69 73 20 6e 6f 20 77 61 79 20 74 here is no way t
64c0: 6f 20 6f 76 65 72 77 72 69 74 65 20 69 6e 2d 63 o overwrite in-c
64d0: 6f 6e 74 61 69 6e 65 72 20 66 69 6c 65 73 20 77 ontainer files w
64e0: 69 74 68 20 65 78 74 65 72 6e 61 6c 20 64 61 74 ith external dat
64f0: 61 20 73 68 6f 72 74 20 6f 66 20 72 65 62 75 69 a short of rebui
6500: 6c 64 69 6e 67 20 74 68 65 20 63 6f 6e 74 61 69 lding the contai
6510: 6e 65 72 20 6f 72 20 75 73 69 6e 67 20 69 6e 2d ner or using in-
6520: 63 6f 6e 74 61 69 6e 65 72 20 6d 65 63 68 61 6e container mechan
6530: 69 73 6d 73 20 6c 69 6b 65 20 60 2f 62 69 6e 2f isms like `/bin/
6540: 73 68 60 20 74 6f 20 64 6f 20 74 68 65 20 63 6f sh` to do the co
6550: 70 79 69 6e 67 20 66 6f 72 20 79 6f 75 2e 0d 0a pying for you...
6560: 0d 0a 49 66 20 79 6f 75 20 63 6f 6d 65 20 66 72 ..If you come fr
6570: 6f 6d 20 61 20 44 6f 63 6b 65 72 20 6f 72 20 50 om a Docker or P
6580: 6f 64 6d 61 6e 20 62 61 63 6b 67 72 6f 75 6e 64 odman background
6590: 2c 20 74 68 65 69 72 20 6c 6f 63 61 6c 20 6f 76 , their local ov
65a0: 65 72 6c 61 79 20 69 6d 61 67 65 20 73 74 6f 72 erlay image stor
65b0: 65 73 20 6d 69 67 68 74 20 6c 65 61 64 20 79 6f es might lead yo
65c0: 75 20 69 6e 74 6f 20 74 68 69 6e 6b 69 6e 67 20 u into thinking
65d0: 79 6f 75 20 63 6f 75 6c 64 20 64 72 69 6c 6c 20 you could drill
65e0: 64 6f 77 6e 20 69 6e 74 6f 20 74 68 65 20 47 55 down into the GU
65f0: 49 44 2d 6e 61 6d 65 64 20 e2 80 9c 63 6f 6e 74 ID-named “cont
6600: 61 69 6e 65 72 20 73 74 6f 72 65 e2 80 9d 20 64 ainer store” d
6610: 69 72 65 63 74 6f 72 69 65 73 20 76 69 73 69 62 irectories visib
6620: 6c 65 20 75 6e 64 65 72 20 60 2f 66 69 6c 65 60 le under `/file`
6630: 20 61 6e 64 20 70 65 72 66 6f 72 6d 20 5f 61 64 and perform _ad
6640: 20 68 6f 63 5f 20 61 64 6d 69 6e 69 73 74 72 61 hoc_ administra
6650: 74 69 6f 6e 20 6f 70 65 72 61 74 69 6f 6e 73 20 tion operations
6660: 6c 69 6b 65 20 6f 76 65 72 77 72 69 74 69 6e 67 like overwriting
6670: 20 65 78 69 73 74 69 6e 67 20 63 6f 6e 66 69 67 existing config
6680: 20 66 69 6c 65 73 20 69 6e 73 69 64 65 20 74 68 files inside th
6690: 65 20 63 6f 6e 74 61 69 6e 65 72 2c 20 62 75 74 e container, but
66a0: 20 61 6c 61 73 2c 20 69 74 20 64 6f 65 73 20 6e alas, it does n
66b0: 6f 74 2e 0d 0a 0d 0a 0d 0a 23 23 20 3c 61 20 69 ot.......## <a i
66c0: 64 3d 22 64 69 66 66 22 3e 3c 2f 61 3e 60 64 69 d="diff"></a>`di
66d0: 66 66 60 0d 0a 0d 0a 57 69 74 68 20 6e 6f 20 6c ff`....With no l
66e0: 6f 63 61 6c 20 69 6d 61 67 65 20 63 61 63 68 65 ocal image cache
66f0: 2c 20 74 68 65 72 65 20 63 61 6e 20 62 65 20 6e , there can be n
6700: 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 63 6f 6d o equivalent com
6710: 6d 61 6e 64 2e 0d 0a 0d 0a 0d 0a 23 23 20 3c 61 mand.......## <a
6720: 20 69 64 3d 22 65 76 65 6e 74 73 22 3e 3c 2f 61 id="events"></a
6730: 3e 60 65 76 65 6e 74 73 60 0d 0a 0d 0a 52 6f 75 >`events`....Rou
6740: 74 65 72 4f 53 20 64 6f 65 73 6e e2 80 99 74 20 terOS doesn’t
6750: 73 75 70 70 6f 72 74 20 63 6f 6e 74 61 69 6e 65 support containe
6760: 72 20 65 76 65 6e 74 73 2e 0d 0a 0d 0a 0d 0a 23 r events.......#
6770: 23 20 3c 61 20 69 64 3d 22 65 78 65 63 22 3e 3c # <a id="exec"><
6780: 2f 61 3e 60 65 78 65 63 60 0d 0a 0d 0a 54 68 65 /a>`exec`....The
6790: 72 65 20 69 73 20 6e 6f 20 77 61 79 20 69 6e 20 re is no way in
67a0: 52 6f 75 74 65 72 4f 53 20 74 6f 20 65 78 65 63 RouterOS to exec
67b0: 75 74 65 20 61 20 63 6f 6d 6d 61 6e 64 20 69 6e ute a command in
67c0: 73 69 64 65 20 61 20 72 75 6e 6e 69 6e 67 20 63 side a running c
67d0: 6f 6e 74 61 69 6e 65 72 20 73 68 6f 72 74 20 6f ontainer short o
67e0: 66 20 60 2f 63 6f 6e 74 61 69 6e 65 72 2f 73 68 f `/container/sh
67f0: 65 6c 6c 60 2c 20 77 68 69 63 68 20 6f 66 20 63 ell`, which of c
6800: 6f 75 72 73 65 20 6f 6e 6c 79 20 77 6f 72 6b 73 ourse only works
6810: 20 69 66 20 74 68 65 72 65 20 69 73 20 61 20 60 if there is a `
6820: 2f 62 69 6e 2f 73 68 60 20 69 6e 73 69 64 65 20 /bin/sh` inside
6830: 74 68 65 20 63 6f 6e 74 61 69 6e 65 72 2e 0d 0a the container...
6840: 0d 0a 0d 0a 23 23 20 3c 61 20 69 64 3d 22 65 78 ....## <a id="ex
6850: 70 6f 72 74 22 3e 3c 2f 61 3e 60 65 78 70 6f 72 port"></a>`expor
6860: 74 60 2f 60 73 61 76 65 60 0d 0a 0d 0a 54 68 65 t`/`save`....The
6870: 72 65 20 69 73 20 6e 6f 20 77 61 79 20 74 6f 20 re is no way to
6880: 70 72 6f 64 75 63 65 20 61 20 74 61 72 62 61 6c produce a tarbal
6890: 6c 20 6f 66 20 61 20 72 75 6e 6e 69 6e 67 20 63 l of a running c
68a0: 6f 6e 74 61 69 6e 65 72 e2 80 99 73 20 66 69 6c ontainer’s fil
68b0: 65 73 79 73 74 65 6d 20 6f 72 20 74 6f 20 73 61 esystem or to sa
68c0: 76 65 20 69 74 73 20 73 74 61 74 65 20 62 61 63 ve its state bac
68d0: 6b 20 74 6f 20 61 6e 20 5b 4f 43 49 5d 20 69 6d k to an [OCI] im
68e0: 61 67 65 20 74 61 72 62 61 6c 6c 2e 0d 0a 0d 0a age tarball.....
68f0: 54 68 65 20 5b 64 6f 63 75 6d 65 6e 74 65 64 20 The [documented
6900: 61 64 76 69 63 65 5d 5b 69 6d 67 74 62 5d 20 66 advice][imgtb] f
6910: 6f 72 20 67 65 74 74 69 6e 67 20 73 75 63 68 20 or getting such
6920: 61 20 74 61 72 62 61 6c 6c 20 69 73 20 74 6f 20 a tarball is to
6930: 64 6f 20 74 68 69 73 20 6f 6e 20 74 68 65 20 50 do this on the P
6940: 43 20 73 69 64 65 20 76 69 61 20 60 64 6f 63 6b C side via `dock
6950: 65 72 60 20 63 6f 6d 6d 61 6e 64 73 2c 20 74 68 er` commands, th
6960: 65 6e 20 75 70 6c 6f 61 64 20 74 68 65 20 74 61 en upload the ta
6970: 72 62 61 6c 6c 20 66 72 6f 6d 20 74 68 65 20 50 rball from the P
6980: 43 20 74 6f 20 74 68 65 20 52 6f 75 74 65 72 4f C to the RouterO
6990: 53 20 64 65 76 69 63 65 2e 0d 0a 0d 0a 5b 69 6d S device.....[im
69a0: 67 74 62 5d 3a 20 68 74 74 70 73 3a 2f 2f 68 65 gtb]: https://he
69b0: 6c 70 2e 6d 69 6b 72 6f 74 69 6b 2e 63 6f 6d 2f lp.mikrotik.com/
69c0: 64 6f 63 73 2f 64 69 73 70 6c 61 79 2f 52 4f 53 docs/display/ROS
69d0: 2f 43 6f 6e 74 61 69 6e 65 72 23 43 6f 6e 74 61 /Container#Conta
69e0: 69 6e 65 72 2d 63 29 62 75 69 6c 64 61 6e 69 6d iner-c)buildanim
69f0: 61 67 65 6f 6e 50 43 0d 0a 0d 0a 0d 0a 23 23 20 ageonPC......##
6a00: 3c 61 20 69 64 3d 22 68 69 73 74 6f 72 79 22 3e <a id="history">
6a10: 3c 2f 61 3e 60 68 69 73 74 6f 72 79 60 0d 0a 0d </a>`history`...
6a20: 0a 52 6f 75 74 65 72 4f 53 20 64 6f 65 73 6e e2 .RouterOS doesn
6a30: 80 99 74 20 6b 65 65 70 20 74 68 69 73 20 69 6e t keep this in
6a40: 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 0d 0a 0d 0a formation.......
6a50: 23 23 20 3c 61 20 69 64 3d 22 69 6d 61 67 65 22 ## <a id="image"
6a60: 3e 3c 2f 61 3e 60 69 6d 61 67 65 60 2f 60 69 6d ></a>`image`/`im
6a70: 61 67 65 73 60 0d 0a 0d 0a 54 68 65 20 6c 61 63 ages`....The lac
6a80: 6b 20 6f 66 20 61 20 62 75 69 6c 64 20 74 6f 6f k of a build too
6a90: 6c 63 68 61 69 6e 20 6d 65 61 6e 73 20 74 68 65 lchain means the
6aa0: 72 65 20 69 73 20 6e 6f 20 73 65 6e 73 69 62 6c re is no sensibl
6ab0: 65 20 65 71 75 69 76 61 6c 65 6e 74 20 66 6f 72 e equivalent for
6ac0: 20 74 68 65 20 e2 80 9c 60 64 6f 63 6b 65 72 20 the “`docker
6ad0: 69 6d 61 67 65 20 62 75 69 6c 64 60 e2 80 9d 20 image build`”
6ae0: 73 75 62 63 6f 6d 6d 61 6e 64 2e 0d 0a 0d 0a 54 subcommand.....T
6af0: 68 65 20 6c 61 63 6b 20 6f 66 20 61 20 6c 6f 63 he lack of a loc
6b00: 61 6c 20 69 6d 61 67 65 20 63 61 63 68 65 20 6d al image cache m
6b10: 65 61 6e 73 20 52 6f 75 74 65 72 4f 53 20 68 61 eans RouterOS ha
6b20: 73 20 6e 6f 20 6e 65 65 64 20 66 6f 72 20 61 6e s no need for an
6b30: 79 20 6f 66 20 74 68 65 73 65 20 73 75 62 63 6f y of these subco
6b40: 6d 6d 61 6e 64 73 3a 0d 0a 0d 0a 2a 20 20 20 60 mmands:....* `
6b50: 68 69 73 74 6f 72 79 60 0d 0a 2a 20 20 20 60 69 history`..* `i
6b60: 6d 70 6f 72 74 60 2f 60 6c 6f 61 64 60 2f 60 73 mport`/`load`/`s
6b70: 61 76 65 60 0d 0a 2a 20 20 20 60 6c 73 60 0d 0a ave`..* `ls`..
6b80: 2a 20 20 20 60 70 72 75 6e 65 60 0d 0a 2a 20 20 * `prune`..*
6b90: 20 60 72 6d 60 0d 0a 2a 20 20 20 60 74 61 67 60 `rm`..* `tag`
6ba0: 0d 0a 2a 20 20 20 60 74 72 65 65 60 0d 0a 0d 0a ..* `tree`....
6bb0: 54 68 65 20 72 65 73 74 20 61 72 65 20 69 6d 70 The rest are imp
6bc0: 6c 69 63 69 74 6c 79 20 63 6f 76 65 72 65 64 20 licitly covered
6bd0: 65 6c 73 65 77 68 65 72 65 3a 20 5b 60 69 6e 73 elsewhere: [`ins
6be0: 70 65 63 74 60 5d 28 23 69 6e 73 70 65 63 74 29 pect`](#inspect)
6bf0: 20 61 6e 64 20 5b 60 70 75 73 68 2f 70 75 6c 6c and [`push/pull
6c00: 60 5d 28 23 70 75 73 68 29 2e 0d 0a 0d 0a 0d 0a `](#push).......
6c10: 23 23 20 3c 61 20 69 64 3d 22 69 6d 70 6f 72 74 ## <a id="import
6c20: 22 3e 3c 2f 61 3e 60 69 6d 70 6f 72 74 60 0d 0a "></a>`import`..
6c30: 0d 0a 54 68 69 73 20 69 73 20 60 2f 63 6f 6e 74 ..This is `/cont
6c40: 61 69 6e 65 72 2f 61 64 64 20 66 69 6c 65 3d 6f ainer/add file=o
6c50: 63 69 2d 69 6d 61 67 65 2e 74 61 72 60 20 69 6e ci-image.tar` in
6c60: 20 52 6f 75 74 65 72 4f 53 2e 0d 0a 0d 0a 0d 0a RouterOS.......
6c70: 23 23 20 3c 61 20 69 64 3d 22 69 6e 66 6f 22 3e ## <a id="info">
6c80: 3c 2f 61 3e 60 69 6e 66 6f 60 0d 0a 0d 0a 57 69 </a>`info`....Wi
6c90: 74 68 20 74 68 65 20 75 6e 64 65 72 73 74 61 6e th the understan
6ca0: 64 69 6e 67 20 74 68 61 74 20 52 6f 75 74 65 72 ding that Router
6cb0: 4f 53 20 68 61 73 20 66 61 72 20 66 65 77 65 72 OS has far fewer
6cc0: 20 63 6f 6e 66 69 67 75 72 61 62 6c 65 73 20 74 configurables t
6cd0: 68 61 6e 20 61 20 62 69 67 2d 62 6f 79 20 63 6f han a big-boy co
6ce0: 6e 74 61 69 6e 65 72 20 65 6e 67 69 6e 65 2c 20 ntainer engine,
6cf0: 74 68 65 20 63 6c 6f 73 65 73 74 20 63 6f 6d 6d the closest comm
6d00: 61 6e 64 20 74 6f 20 74 68 69 73 20 69 6e 20 52 and to this in R
6d10: 6f 75 74 65 72 4f 53 20 69 73 20 60 2f 63 6f 6e outerOS is `/con
6d20: 74 61 69 6e 65 72 2f 63 6f 6e 66 69 67 2f 70 72 tainer/config/pr
6d30: 69 6e 74 60 2e 20 54 68 65 20 6f 75 74 70 75 74 int`. The output
6d40: 20 69 73 20 69 6e 20 74 79 70 69 63 61 6c 20 52 is in typical R
6d50: 6f 75 74 65 72 4f 53 20 e2 80 9c 70 72 69 6e 74 outerOS “print
6d60: e2 80 9d 20 66 6f 72 6d 61 74 2c 20 6e 6f 74 20 ” format, not
6d70: 4a 53 4f 4e 2e 0d 0a 0d 0a 0d 0a 23 23 20 3c 61 JSON.......## <a
6d80: 20 69 64 3d 22 69 6e 73 70 65 63 74 22 3e 3c 2f id="inspect"></
6d90: 61 3e 60 69 6e 73 70 65 63 74 60 0d 0a 0d 0a 54 a>`inspect`....T
6da0: 68 65 20 63 6c 6f 73 65 73 74 20 61 70 70 72 6f he closest appro
6db0: 78 69 6d 61 74 69 6f 6e 20 74 6f 20 74 68 69 73 ximation to this
6dc0: 20 69 6e 20 52 6f 75 74 65 72 4f 53 20 69 73 20 in RouterOS is
6dd0: 0d 0a 0d 0a 20 20 20 20 2f 63 6f 6e 74 61 69 6e .... /contain
6de0: 65 72 2f 70 72 69 6e 74 20 64 65 74 61 69 6c 20 er/print detail
6df0: 77 68 65 72 65 20 e2 80 a6 0d 0a 0d 0a 59 6f 75 where …....You
6e00: 20 67 65 74 20 6f 6e 6c 79 20 61 20 66 65 77 20 get only a few
6e10: 6c 69 6e 65 73 20 6f 66 20 69 6e 66 6f 72 6d 61 lines of informa
6e20: 74 69 6f 6e 20 62 61 63 6b 20 66 72 6f 6d 20 74 tion back from t
6e30: 68 69 73 2c 20 6d 61 69 6e 6c 79 20 77 68 61 74 his, mainly what
6e40: 20 79 6f 75 20 67 61 76 65 20 69 74 20 74 6f 20 you gave it to
6e50: 63 72 65 61 74 65 20 74 68 65 20 63 6f 6e 74 61 create the conta
6e60: 69 6e 65 72 20 66 72 6f 6d 20 74 68 65 20 69 6d iner from the im
6e70: 61 67 65 2e 20 59 6f 75 20 77 69 6c 6c 20 6e 6f age. You will no
6e80: 74 20 67 65 74 20 74 68 65 20 70 61 67 65 73 20 t get the pages
6e90: 6f 66 20 4a 53 4f 4e 20 64 61 74 61 20 74 68 65 of JSON data the
6ea0: 20 44 6f 63 6b 65 72 20 43 4c 49 20 67 69 76 65 Docker CLI give
6eb0: 73 2e 0d 0a 0d 0a 41 20 72 65 6c 61 74 65 64 20 s.....A related
6ec0: 6c 69 6d 69 74 61 74 69 6f 6e 20 69 73 20 74 68 limitation is th
6ed0: 61 74 20 74 68 65 20 63 6f 6e 66 69 67 75 72 61 at the configura
6ee0: 62 6c 65 20 69 74 65 6d 73 20 61 72 65 20 6f 66 ble items are of
6ef0: 74 65 6e 20 67 6c 6f 62 61 6c 20 69 6e 20 52 6f ten global in Ro
6f00: 75 74 65 72 4f 53 2c 20 73 65 74 20 66 6f 72 20 uterOS, set for
6f10: 61 6c 6c 20 63 6f 6e 74 61 69 6e 65 72 73 20 72 all containers r
6f20: 75 6e 6e 69 6e 67 20 6f 6e 20 74 68 65 20 62 6f unning on the bo
6f30: 78 2c 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 x, not available
6f40: 20 74 6f 20 62 65 20 73 65 74 20 6f 6e 20 61 20 to be set on a
6f50: 70 65 72 2d 63 6f 6e 74 61 69 6e 65 72 20 62 61 per-container ba
6f60: 73 69 73 2e 20 41 20 67 6f 6f 64 20 65 78 61 6d sis. A good exam
6f70: 70 6c 65 20 6f 66 20 74 68 69 73 20 69 73 20 74 ple of this is t
6f80: 68 65 20 6d 65 6d 6f 72 79 20 6c 69 6d 69 74 2c he memory limit,
6f90: 20 73 65 74 20 76 69 61 20 60 2f 63 6f 6e 74 61 set via `/conta
6fa0: 69 6e 65 72 2f 63 6f 6e 66 69 67 2f 73 65 74 20 iner/config/set
6fb0: 72 61 6d 2d 68 69 67 68 3d e2 80 a6 60 2e 0d 0a ram-high=…`...
6fc0: 0d 0a 0d 0a 23 23 20 3c 61 20 69 64 3d 22 6b 69 ....## <a id="ki
6fd0: 6c 6c 22 20 6e 61 6d 65 3d 22 73 74 6f 70 22 3e ll" name="stop">
6fe0: 3c 2f 61 3e 60 6b 69 6c 6c 60 2f 60 73 74 6f 70 </a>`kill`/`stop
6ff0: 60 0d 0a 0d 0a 52 6f 75 74 65 72 4f 53 20 64 6f `....RouterOS do
7000: 65 73 6e e2 80 99 74 20 6d 61 6b 65 20 61 20 64 esn’t make a d
7010: 69 73 74 69 6e 63 74 69 6f 6e 20 62 65 74 77 65 istinction betwe
7020: 65 6e 20 e2 80 9c 6b 69 6c 6c e2 80 9d 20 61 6e en “kill” an
7030: 64 20 e2 80 9c 73 74 6f 70 e2 80 9d 2e 20 54 68 d “stop”. Th
7040: 65 20 60 2f 63 6f 6e 74 61 69 6e 65 72 2f 73 74 e `/container/st
7050: 6f 70 60 20 63 6f 6d 6d 61 6e 64 20 62 65 68 61 op` command beha
7060: 76 65 73 20 6d 6f 72 65 20 6c 69 6b 65 20 60 64 ves more like `d
7070: 6f 63 6b 65 72 20 6b 69 6c 6c 60 20 6f 72 20 60 ocker kill` or `
7080: 64 6f 63 6b 65 72 20 73 74 6f 70 20 2d 74 30 60 docker stop -t0`
7090: 20 69 6e 20 74 68 61 74 20 69 74 20 64 6f 65 73 in that it does
70a0: 6e e2 80 99 74 20 74 72 79 20 74 6f 20 62 72 69 n’t try to bri
70b0: 6e 67 20 74 68 65 20 63 6f 6e 74 61 69 6e 65 72 ng the container
70c0: 20 64 6f 77 6e 20 67 72 61 63 65 66 75 6c 6c 79 down gracefully
70d0: 20 62 65 66 6f 72 65 20 67 69 76 69 6e 67 20 75 before giving u
70e0: 70 20 61 6e 64 20 6b 69 6c 6c 69 6e 67 20 69 74 p and killing it
70f0: 2e 0d 0a 0d 0a 0d 0a 23 23 20 3c 61 20 69 64 3d .......## <a id=
7100: 22 6c 6f 67 69 6e 22 3e 3c 2f 61 3e 60 6c 6f 67 "login"></a>`log
7110: 69 6e 60 2f 60 6c 6f 67 6f 75 74 60 0d 0a 0d 0a in`/`logout`....
7120: 52 6f 75 74 65 72 4f 53 20 6f 6e 6c 79 20 61 6c RouterOS only al
7130: 6c 6f 77 73 20 79 6f 75 20 74 6f 20 63 6f 6e 66 lows you to conf
7140: 69 67 75 72 65 20 61 20 73 69 6e 67 6c 65 20 69 igure a single i
7150: 6d 61 67 65 20 72 65 67 69 73 74 72 79 2c 20 69 mage registry, i
7160: 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 6c 6f 67 ncluding the log
7170: 69 6e 20 70 61 72 61 6d 65 74 65 72 73 3a 0d 0a in parameters:..
7180: 0d 0a 20 20 20 20 2f 63 6f 6e 74 61 69 6e 65 72 .. /container
7190: 2f 63 6f 6e 66 69 67 2f 73 65 74 20 72 65 67 69 /config/set regi
71a0: 73 74 72 79 2d 75 72 6c 3d e2 80 a6 20 75 73 65 stry-url=… use
71b0: 72 6e 61 6d 65 3d e2 80 a6 20 70 61 73 73 77 6f rname=… passwo
71c0: 72 64 3d e2 80 a6 0d 0a 0d 0a 54 68 65 20 6f 6e rd=…....The on
71d0: 6c 79 20 77 61 79 20 74 6f 20 e2 80 9c 6c 6f 67 ly way to “log
71e0: 20 6f 75 74 e2 80 9d 20 69 73 20 74 6f 20 6f 76 out” is to ov
71f0: 65 72 77 72 69 74 65 20 74 68 65 20 75 73 65 72 erwrite the user
7200: 6e 61 6d 65 20 61 6e 64 20 70 61 73 73 77 6f 72 name and passwor
7210: 64 20 76 69 61 3a 0d 0a 0d 0a 20 20 20 20 2f 63 d via:.... /c
7220: 6f 6e 74 61 69 6e 65 72 2f 63 6f 6e 66 69 67 2f ontainer/config/
7230: 73 65 74 20 75 73 65 72 6e 61 6d 65 3d 22 22 20 set username=""
7240: 70 61 73 73 77 6f 72 64 3d 22 22 0d 0a 0d 0a 0d password="".....
7250: 0a 23 23 20 3c 61 20 69 64 3d 22 70 61 75 73 65 .## <a id="pause
7260: 22 3e 3c 2f 61 3e 60 70 61 75 73 65 60 2f 60 75 "></a>`pause`/`u
7270: 6e 70 61 75 73 65 60 0d 0a 0d 0a 4e 6f 20 73 75 npause`....No su
7280: 63 68 20 66 65 61 74 75 72 65 20 69 6e 20 52 6f ch feature in Ro
7290: 75 74 65 72 4f 53 3b 20 61 20 63 6f 6e 74 61 69 uterOS; a contai
72a0: 6e 65 72 20 69 73 20 72 75 6e 6e 69 6e 67 20 6f ner is running o
72b0: 72 20 6e 6f 74 2e 0d 0a 0d 0a 49 66 20 74 68 65 r not.....If the
72c0: 20 63 6f 6e 74 61 69 6e 65 72 20 68 61 73 20 61 container has a
72d0: 20 73 68 65 6c 6c 2c 20 79 6f 75 20 63 6f 75 6c shell, you coul
72e0: 64 20 74 72 79 20 61 20 63 6f 6d 6d 61 6e 64 20 d try a command
72f0: 73 65 71 75 65 6e 63 65 20 6c 69 6b 65 20 74 68 sequence like th
7300: 69 73 20 74 6f 20 67 65 74 20 74 68 65 20 70 61 is to get the pa
7310: 75 73 65 20 65 66 66 65 63 74 3a 0d 0a 0d 0a 20 use effect:....
7320: 20 20 20 3e 20 2f 63 6f 6e 74 61 69 6e 65 72 2f > /container/
7330: 73 68 65 6c 6c 20 30 0d 0a 20 20 20 20 24 20 70 shell 0.. $ p
7340: 6b 69 6c 6c 20 2d 53 54 4f 50 20 27 6e 61 6d 65 kill -STOP 'name
7350: 20 6f 66 20 65 6e 74 72 79 70 6f 69 6e 74 27 0d of entrypoint'.
7360: 0a 0d 0a 49 66 20 74 68 61 74 20 77 6f 72 6b 65 ...If that worke
7370: 64 2c 20 73 65 6e 64 69 6e 67 20 61 20 60 43 4f d, sending a `CO
7380: 4e 54 60 20 73 69 67 6e 61 6c 20 77 69 6c 6c 20 NT` signal will
7390: 75 6e 70 61 75 73 65 20 74 68 65 20 70 72 6f 63 unpause the proc
73a0: 65 73 73 2e 0d 0a 0d 0a 0d 0a 23 23 20 3c 61 20 ess.......## <a
73b0: 69 64 3d 22 70 6f 72 74 22 3e 3c 2f 61 3e 60 70 id="port"></a>`p
73c0: 6f 72 74 60 0d 0a 0d 0a 52 6f 75 74 65 72 4f 53 ort`....RouterOS
73d0: 20 65 78 70 6f 73 65 73 20 61 6c 6c 20 70 6f 72 exposes all por
73e0: 74 73 20 64 65 66 69 6e 65 64 20 66 6f 72 20 61 ts defined for a
73f0: 20 63 6f 6e 74 61 69 6e 65 72 20 69 6e 20 74 68 container in th
7400: 65 20 60 45 58 50 4f 53 45 60 20 64 69 72 65 63 e `EXPOSE` direc
7410: 74 69 76 65 20 69 6e 20 74 68 65 20 60 44 6f 63 tive in the `Doc
7420: 6b 65 72 66 69 6c 65 60 2e 20 54 68 65 20 6f 6e kerfile`. The on
7430: 6c 79 20 77 61 79 73 20 74 6f 20 69 6e 73 74 61 ly ways to insta
7440: 6e 74 69 61 74 65 20 61 20 63 6f 6e 74 61 69 6e ntiate a contain
7450: 65 72 20 77 69 74 68 20 66 65 77 65 72 20 65 78 er with fewer ex
7460: 70 6f 73 65 64 20 70 6f 72 74 73 20 69 73 20 74 posed ports is t
7470: 6f 20 65 69 74 68 65 72 20 72 65 62 75 69 6c 64 o either rebuild
7480: 20 69 74 20 77 69 74 68 20 61 20 64 69 66 66 65 it with a diffe
7490: 72 65 6e 74 20 60 45 58 50 4f 53 45 60 20 76 61 rent `EXPOSE` va
74a0: 6c 75 65 20 6f 72 20 74 6f 20 63 72 65 61 74 65 lue or to create
74b0: 20 61 20 64 65 72 69 76 65 64 20 63 6f 6e 74 61 a derived conta
74c0: 69 6e 65 72 20 77 69 74 68 20 74 68 65 20 60 46 iner with the `F
74d0: 52 4f 4d 60 20 64 69 72 65 63 74 69 76 65 20 61 ROM` directive a
74e0: 6e 64 20 73 65 74 20 61 20 6e 65 77 20 60 45 58 nd set a new `EX
74f0: 50 4f 53 45 60 20 76 61 6c 75 65 2e 0d 0a 0d 0a POSE` value.....
7500: 28 53 65 65 20 61 6c 73 6f 20 74 68 65 20 64 69 (See also the di
7510: 73 63 75 73 73 69 6f 6e 20 6f 66 20 5b 60 2d 2d scussion of [`--
7520: 70 75 62 6c 69 73 68 60 5d 28 23 70 75 62 6c 69 publish`](#publi
7530: 73 68 29 20 61 62 6f 76 65 2e 29 0d 0a 0d 0a 0d sh) above.).....
7540: 0a 23 23 20 3c 61 20 69 64 3d 22 70 73 22 3e 3c .## <a id="ps"><
7550: 2f 61 3e 60 70 73 60 2f 60 73 74 61 74 73 60 2f /a>`ps`/`stats`/
7560: 60 74 6f 70 60 0d 0a 0d 0a 54 68 65 20 63 6c 6f `top`....The clo
7570: 73 65 73 74 20 74 68 69 6e 67 20 69 6e 20 52 6f sest thing in Ro
7580: 75 74 65 72 4f 53 20 69 73 20 74 68 65 20 60 2f uterOS is the `/
7590: 63 6f 6e 74 61 69 6e 65 72 2f 70 72 69 6e 74 20 container/print
75a0: 66 6f 6c 6c 6f 77 2a 60 20 63 6f 6d 6d 61 6e 64 follow*` command
75b0: 73 2e 0d 0a 0d 0a 41 20 6d 6f 72 65 20 64 69 72 s.....A more dir
75c0: 65 63 74 20 61 6c 74 65 72 6e 61 74 69 76 65 20 ect alternative
75d0: 77 6f 75 6c 64 20 62 65 20 74 6f 20 73 68 65 6c would be to shel
75e0: 6c 20 69 6e 74 6f 20 74 68 65 20 63 6f 6e 74 61 l into the conta
75f0: 69 6e 65 72 20 61 6e 64 20 72 75 6e 20 77 68 61 iner and run wha
7600: 74 65 76 65 72 20 69 74 20 68 61 73 20 66 6f 72 tever it has for
7610: 20 61 20 60 74 6f 70 60 20 63 6f 6d 6d 61 6e 64 a `top` command
7620: 2c 20 62 75 74 20 6f 66 20 63 6f 75 72 73 65 20 , but of course
7630: 74 68 61 74 20 69 73 20 63 6f 6e 74 69 6e 67 65 that is continge
7640: 6e 74 20 6f 6e 20 61 6e 79 20 6f 66 20 74 68 61 nt on any of tha
7650: 74 20 62 65 69 6e 67 20 61 76 61 69 6c 61 62 6c t being availabl
7660: 65 2e 0d 0a 0d 0a 0d 0a 23 23 20 3c 61 20 69 64 e.......## <a id
7670: 3d 22 70 75 73 68 22 3e 3c 2f 61 3e 60 70 75 73 ="push"></a>`pus
7680: 68 60 2f 60 70 75 6c 6c 60 0d 0a 0d 0a 52 6f 75 h`/`pull`....Rou
7690: 74 65 72 4f 53 20 6d 61 69 6e 74 61 69 6e 73 20 terOS maintains
76a0: 6e 6f 20 6c 6f 63 61 6c 20 69 6d 61 67 65 20 63 no local image c
76b0: 61 63 68 65 2c 20 74 68 75 73 20 63 61 6e 6e 6f ache, thus canno
76c0: 74 20 70 75 73 68 20 6f 72 20 70 75 6c 6c 20 69 t push or pull i
76d0: 6d 61 67 65 73 2e 0d 0a 0d 0a 57 68 69 6c 65 20 mages.....While
76e0: 69 74 20 5f 63 61 6e 5f 20 70 75 6c 6c 20 66 72 it _can_ pull fr
76f0: 6f 6d 20 61 6e 20 5b 4f 43 49 5d 20 69 6d 61 67 om an [OCI] imag
7700: 65 20 72 65 70 6f 2c 20 69 74 20 64 6f 65 73 20 e repo, it does
7710: 73 6f 20 61 73 20 70 61 72 74 20 6f 66 20 60 2f so as part of `/
7720: 63 6f 6e 74 61 69 6e 65 72 2f 61 64 64 60 2c 20 container/add`,
7730: 77 68 69 63 68 20 69 73 20 63 6c 6f 73 65 72 20 which is closer
7740: 74 6f 20 61 20 60 64 6f 63 6b 65 72 20 63 72 65 to a `docker cre
7750: 61 74 65 60 20 63 6f 6d 6d 61 6e 64 20 74 68 61 ate` command tha
7760: 6e 20 74 6f 20 60 64 6f 63 6b 65 72 20 70 75 6c n to `docker pul
7770: 6c 60 2e 0d 0a 0d 0a 54 68 65 72 65 20 69 73 20 l`.....There is
7780: 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 61 74 no equivalent at
7790: 20 61 6c 6c 20 74 6f 20 60 64 6f 63 6b 65 72 20 all to `docker
77a0: 70 75 73 68 60 2e 0d 0a 0d 0a 0d 0a 23 23 20 3c push`.......## <
77b0: 61 20 69 64 3d 22 72 65 6e 61 6d 65 22 3e 3c 2f a id="rename"></
77c0: 61 3e 60 72 65 6e 61 6d 65 60 0d 0a 0d 0a 52 6f a>`rename`....Ro
77d0: 75 74 65 72 4f 53 20 64 6f 65 73 6e e2 80 99 74 uterOS doesn’t
77e0: 20 6c 65 74 20 79 6f 75 20 73 65 74 20 74 68 65 let you set the
77f0: 20 6e 61 6d 65 20 6f 6e 20 63 72 65 61 74 69 6f name on creatio
7800: 6e 2c 20 6d 75 63 68 20 6c 65 73 73 20 72 65 6e n, much less ren
7810: 61 6d 65 20 69 74 20 6c 61 74 65 72 2e 20 54 68 ame it later. Th
7820: 65 20 63 6c 6f 73 65 73 74 20 79 6f 75 20 63 61 e closest you ca
7830: 6e 20 63 6f 6d 65 20 74 6f 20 74 68 69 73 20 69 n come to this i
7840: 73 20 74 6f 20 61 64 64 20 61 20 63 75 73 74 6f s to add a custo
7850: 6d 20 60 63 6f 6d 6d 65 6e 74 60 2c 20 77 68 69 m `comment`, whi
7860: 63 68 20 79 6f 75 20 63 61 6e 20 62 6f 74 68 20 ch you can both
7870: 73 65 74 20 61 74 20 e2 80 9c 60 61 64 64 60 e2 set at “`add`
7880: 80 9d 20 74 69 6d 65 20 61 6e 64 20 61 66 74 65 time and afte
7890: 72 20 63 72 65 61 74 69 6f 6e 2e 0d 0a 0d 0a 0d r creation......
78a0: 0a 23 23 20 3c 61 20 69 64 3d 22 72 65 73 74 61 .## <a id="resta
78b0: 72 74 22 3e 3c 2f 61 3e 60 72 65 73 74 61 72 74 rt"></a>`restart
78c0: 60 0d 0a 0d 0a 54 68 69 73 20 73 68 6f 72 74 63 `....This shortc
78d0: 75 74 20 66 6f 72 20 5b 60 73 74 6f 70 60 5d 28 ut for [`stop`](
78e0: 23 73 74 6f 70 29 20 66 6f 6c 6c 6f 77 65 64 20 #stop) followed
78f0: 62 79 20 5b 60 73 74 61 72 74 60 5d 28 23 73 74 by [`start`](#st
7900: 61 72 74 29 20 64 6f 65 73 6e e2 80 99 74 20 65 art) doesn’t e
7910: 78 69 73 74 2e 0d 0a 0d 0a 49 74 20 6f 66 74 65 xist.....It ofte
7920: 6e 20 65 6e 64 73 20 75 70 20 62 65 69 6e 67 20 n ends up being
7930: 6d 6f 72 65 20 63 6f 6d 70 6c 65 78 20 74 68 61 more complex tha
7940: 6e 20 74 68 61 74 20 62 65 63 61 75 73 65 20 74 n that because t
7950: 68 65 20 60 73 74 6f 70 60 20 6f 70 65 72 61 74 he `stop` operat
7960: 69 6f 6e 20 69 73 20 61 73 79 6e 63 68 72 6f 6e ion is asynchron
7970: 6f 75 73 2e 20 54 68 65 72 65 20 61 72 65 20 6e ous. There are n
7980: 6f 20 66 6c 61 67 73 20 74 6f 20 6d 61 6b 65 20 o flags to make
7990: 69 74 20 62 6c 6f 63 6b 20 75 6e 74 69 6c 20 74 it block until t
79a0: 68 65 20 63 6f 6e 74 61 69 6e 65 72 20 64 6f 65 he container doe
79b0: 73 20 73 74 6f 70 2c 20 6e 6f 72 20 61 20 77 61 s stop, nor a wa
79c0: 79 20 74 6f 20 73 65 74 20 61 20 74 69 6d 65 6f y to set a timeo
79d0: 75 74 20 6f 6e 20 69 74 2c 20 61 66 74 65 72 20 ut on it, after
79e0: 77 68 69 63 68 20 69 74 20 6b 69 6c 6c 73 20 74 which it kills t
79f0: 68 65 20 63 6f 6e 74 61 69 6e 65 72 20 6f 75 74 he container out
7a00: 72 69 67 68 74 2c 20 61 73 20 79 6f 75 20 67 65 right, as you ge
7a10: 74 20 77 69 74 68 20 74 68 65 20 62 69 67 2d 62 t with the big-b
7a20: 6f 79 20 65 6e 67 69 6e 65 73 2e 20 59 6f 75 20 oy engines. You
7a30: 61 72 65 20 6c 69 6b 65 6c 79 20 74 6f 20 6e 65 are likely to ne
7a40: 65 64 20 61 20 70 6f 6c 6c 69 6e 67 20 6c 6f 6f ed a polling loo
7a50: 70 20 74 6f 20 77 61 69 74 20 75 6e 74 69 6c 20 p to wait until
7a60: 74 68 65 20 72 75 6e 6e 69 6e 67 20 63 6f 6e 74 the running cont
7a70: 61 69 6e 65 72 e2 80 99 73 20 73 74 61 74 65 20 ainer’s state
7a80: 74 72 61 6e 73 69 74 69 6f 6e 73 20 74 6f 20 e2 transitions to
7a90: 80 9c 73 74 6f 70 70 65 64 e2 80 9d 20 62 65 66 stopped” bef
7aa0: 6f 72 65 20 63 61 6c 6c 69 6e 67 20 60 2f 63 6f ore calling `/co
7ab0: 6e 74 61 69 6e 65 72 2f 73 74 61 72 74 60 20 6f ntainer/start` o
7ac0: 6e 20 69 74 2e 0d 0a 0d 0a 53 65 65 20 61 6c 73 n it.....See als
7ad0: 6f 20 5b 60 2d 2d 72 65 73 74 61 72 74 60 5d 28 o [`--restart`](
7ae0: 23 72 65 73 74 61 72 74 29 20 61 62 6f 76 65 2e #restart) above.
7af0: 0d 0a 0d 0a 0d 0a 23 23 20 3c 61 20 69 64 3d 22 ......## <a id="
7b00: 72 6d 22 3e 3c 2f 61 3e 60 72 6d 60 0d 0a 0d 0a rm"></a>`rm`....
7b10: 52 6f 75 74 65 72 4f 53 20 73 70 65 6c 6c 73 20 RouterOS spells
7b20: 74 68 69 73 20 60 2f 63 6f 6e 74 61 69 6e 65 72 this `/container
7b30: 2f 72 65 6d 6f 76 65 60 2c 20 62 75 74 20 64 6f /remove`, but do
7b40: 20 62 65 20 61 77 61 72 65 2c 20 74 68 65 72 65 be aware, there
7b50: 20 69 73 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e is no equivalen
7b60: 74 20 66 6f 72 20 60 64 6f 63 6b 65 72 20 72 6d t for `docker rm
7b70: 20 2d 66 60 20 74 6f 20 66 6f 72 63 65 20 74 68 -f` to force th
7b80: 65 20 72 65 6d 6f 76 61 6c 20 6f 66 20 61 20 72 e removal of a r
7b90: 75 6e 6e 69 6e 67 20 63 6f 6e 74 61 69 6e 65 72 unning container
7ba0: 2e 20 52 6f 75 74 65 72 4f 53 20 6d 61 6b 65 73 . RouterOS makes
7bb0: 20 79 6f 75 20 73 74 6f 70 20 69 74 20 66 69 72 you stop it fir
7bc0: 73 74 2e 0d 0a 0d 0a 41 6e 6f 74 68 65 72 20 6b st.....Another k
7bd0: 6e 6f 63 6b 2d 6f 6e 20 65 66 66 65 63 74 20 74 nock-on effect t
7be0: 6f 20 62 65 20 61 77 61 72 65 20 6f 66 20 73 74 o be aware of st
7bf0: 65 6d 73 20 66 72 6f 6d 20 74 68 65 20 6c 61 63 ems from the lac
7c00: 6b 20 6f 66 20 61 20 6c 6f 63 61 6c 20 69 6d 61 k of a local ima
7c10: 67 65 20 63 61 63 68 65 3a 20 72 65 6d 6f 76 69 ge cache: removi
7c20: 6e 67 20 61 20 63 6f 6e 74 61 69 6e 65 72 20 61 ng a container a
7c30: 6e 64 20 72 65 69 6e 73 74 61 6c 6c 69 6e 67 20 nd reinstalling
7c40: 69 74 20 66 72 6f 6d 20 74 68 65 20 2a 73 61 6d it from the *sam
7c50: 65 2a 20 72 65 6d 6f 74 65 20 69 6d 61 67 65 20 e* remote image
7c60: 72 65 71 75 69 72 65 73 20 52 6f 75 74 65 72 4f requires RouterO
7c70: 53 20 74 6f 20 72 65 2d 64 6f 77 6e 6c 6f 61 64 S to re-download
7c80: 20 74 68 65 20 69 6d 61 67 65 2c 20 65 76 65 6e the image, even
7c90: 20 77 68 65 6e 20 64 6f 6e 65 20 62 61 63 6b 2d when done back-
7ca0: 74 6f 2d 62 61 63 6b 2c 20 65 76 65 6e 20 69 66 to-back, even if
7cb0: 20 79 6f 75 20 6e 65 76 65 72 20 73 74 61 72 74 you never start
7cc0: 20 74 68 65 20 63 6f 6e 74 61 69 6e 65 72 20 62 the container b
7cd0: 65 74 77 65 65 6e 20 61 6e 64 20 74 68 65 72 65 etween and there
7ce0: 62 79 20 63 61 75 73 65 20 69 74 20 74 6f 20 6d by cause it to m
7cf0: 61 6b 65 20 63 68 61 6e 67 65 73 20 74 6f 20 74 ake changes to t
7d00: 68 65 20 65 78 70 61 6e 64 65 64 20 69 6d 61 67 he expanded imag
7d10: 65 e2 80 99 73 20 66 69 6c 65 73 2e 20 59 6f 75 e’s files. You
7d20: 20 63 61 6e 20 65 6e 64 20 75 70 20 68 69 74 74 can end up hitt
7d30: 69 6e 67 20 61 6e 6e 6f 79 69 6e 67 20 72 61 74 ing annoying rat
7d40: 65 2d 6c 69 6d 69 74 69 6e 67 20 6f 6e 20 74 68 e-limiting on th
7d50: 65 20 e2 80 9c 66 72 65 65 e2 80 9d 20 72 65 67 e “free” reg
7d60: 69 73 74 72 69 65 73 20 69 6e 20 74 68 65 20 6d istries in the m
7d70: 69 64 64 6c 65 20 6f 66 20 61 20 68 6f 74 2d 61 iddle of a hot-a
7d80: 6e 64 2d 68 65 61 76 79 20 64 65 62 75 67 67 69 nd-heavy debuggi
7d90: 6e 67 20 73 65 73 73 69 6f 6e 20 64 75 65 20 74 ng session due t
7da0: 6f 20 74 68 69 73 2e 20 41 73 6b 20 6d 65 20 68 o this. Ask me h
7db0: 6f 77 20 49 20 6b 6e 6f 77 2e 20 f0 9f 98 81 0d ow I know. 😁.
7dc0: 0a 0d 0a 54 68 65 20 73 6f 6c 75 74 69 6f 6e 20 ...The solution
7dd0: 69 73 20 74 6f 20 70 72 6f 64 75 63 65 20 61 6e is to produce an
7de0: 20 5b 4f 43 49 5d 20 69 6d 61 67 65 20 74 61 72 [OCI] image tar
7df0: 62 61 6c 6c 20 69 6e 20 74 68 65 20 66 6f 72 6d ball in the form
7e00: 61 74 20 73 75 62 73 65 74 20 74 68 61 74 20 60 at subset that `
7e10: 2f 63 6f 6e 74 61 69 6e 65 72 2f 61 64 64 20 66 /container/add f
7e20: 69 6c 65 3d e2 80 a6 60 20 77 69 6c 6c 20 61 63 ile=…` will ac
7e30: 63 65 70 74 2e 0d 0a 0d 0a 42 75 74 20 74 68 61 cept.....But tha
7e40: 74 20 62 72 69 6e 67 73 20 75 70 20 61 20 6e 65 t brings up a ne
7e50: 77 20 6c 69 6d 69 74 61 74 69 6f 6e 20 77 6f 72 w limitation wor
7e60: 74 68 20 6d 65 6e 74 69 6f 6e 69 6e 67 3a 20 60 th mentioning: `
7e70: 63 6f 6e 74 61 69 6e 65 72 2e 6e 70 6b 60 20 69 container.npk` i
7e80: 73 6e e2 80 99 74 20 31 30 30 25 20 4f 43 49 2d sn’t 100% OCI-
7e90: 63 6f 6d 70 6c 69 61 6e 74 2e 20 49 74 20 63 61 compliant. It ca
7ea0: 6e e2 80 99 74 20 68 61 6e 64 6c 65 20 6d 75 6c n’t handle mul
7eb0: 74 69 2d 70 6c 61 74 66 6f 72 6d 20 69 6d 61 67 ti-platform imag
7ec0: 65 20 74 61 72 62 61 6c 6c 73 2c 20 66 6f 72 20 e tarballs, for
7ed0: 6f 6e 65 2e 20 59 6f 75 20 68 61 76 65 20 74 6f one. You have to
7ee0: 20 67 69 76 65 20 74 68 65 20 6d 61 74 63 68 69 give the matchi
7ef0: 6e 67 20 60 2d 2d 70 6c 61 74 66 6f 72 6d 60 20 ng `--platform`
7f00: 6f 70 74 69 6f 6e 20 77 68 65 6e 20 64 6f 77 6e option when down
7f10: 6c 6f 61 64 69 6e 67 20 74 68 65 20 74 61 72 62 loading the tarb
7f20: 61 6c 6c 20 74 6f 20 67 65 74 20 73 6f 6d 65 74 all to get somet
7f30: 68 69 6e 67 20 60 63 6f 6e 74 61 69 6e 65 72 2e hing `container.
7f40: 6e 70 6b 60 20 77 69 6c 6c 20 61 63 63 65 70 74 npk` will accept
7f50: 2e 0d 0a 0d 0a 0d 0a 23 23 20 3c 61 20 69 64 3d .......## <a id=
7f60: 22 73 65 61 72 63 68 22 3e 3c 2f 61 3e 60 73 65 "search"></a>`se
7f70: 61 72 63 68 60 0d 0a 0d 0a 54 68 65 72 65 20 69 arch`....There i
7f80: 73 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 s no equivalent
7f90: 74 6f 20 74 68 69 73 20 69 6e 20 52 6f 75 74 65 to this in Route
7fa0: 72 4f 53 2e 20 59 6f 75 20 77 69 6c 6c 20 6e 65 rOS. You will ne
7fb0: 65 64 20 74 6f 20 63 6f 6e 6e 65 63 74 20 74 6f ed to connect to
7fc0: 20 79 6f 75 72 20 69 6d 61 67 65 20 72 65 67 69 your image regi
7fd0: 73 74 72 79 20 6f 66 20 63 68 6f 69 63 65 20 61 stry of choice a
7fe0: 6e 64 20 75 73 65 20 69 74 73 20 73 65 61 72 63 nd use its searc
7ff0: 68 20 65 6e 67 69 6e 65 2e 0d 0a 0d 0a 0d 0a 23 h engine.......#
8000: 23 20 3c 61 20 69 64 3d 22 73 65 63 72 65 74 22 # <a id="secret"
8010: 3e 3c 2f 61 3e 60 73 65 63 72 65 74 60 0d 0a 0d ></a>`secret`...
8020: 0a 54 68 69 73 20 74 79 70 69 63 61 6c 6c 79 20 .This typically
8030: 73 68 6f 77 73 20 75 70 20 61 73 20 70 61 72 74 shows up as part
8040: 20 6f 66 20 44 6f 63 6b 65 72 20 53 77 61 72 6d of Docker Swarm
8050: 2c 20 4b 75 62 65 72 6e 65 74 65 73 2c 20 6f 72 , Kubernetes, or
8060: 20 50 6f 64 6d 61 6e 20 70 6f 64 73 2c 20 6e 6f Podman pods, no
8070: 6e 65 20 6f 66 20 77 68 69 63 68 20 65 78 69 73 ne of which exis
8080: 74 73 20 75 6e 64 65 72 20 52 6f 75 74 65 72 4f ts under RouterO
8090: 53 2c 20 77 68 69 63 68 20 69 73 20 77 68 79 20 S, which is why
80a0: 69 74 20 73 68 6f 75 6c 64 6e e2 80 99 74 20 73 it shouldn’t s
80b0: 75 72 70 72 69 73 65 20 79 6f 75 20 74 68 61 74 urprise you that
80c0: 20 52 6f 75 74 65 72 4f 53 20 68 61 73 20 6e 6f RouterOS has no
80d0: 20 73 65 63 72 65 74 2d 73 68 61 72 69 6e 67 20 secret-sharing
80e0: 66 61 63 69 6c 69 74 79 2e 20 54 68 65 20 73 74 facility. The st
80f0: 61 6e 64 61 72 64 20 66 61 6c 6c 62 61 63 6b 73 andard fallbacks
8100: 20 66 6f 72 20 74 68 69 73 20 61 72 65 20 70 61 for this are pa
8110: 73 73 65 64 2d 69 6e 20 65 6e 76 69 72 6f 6e 6d ssed-in environm
8120: 65 6e 74 20 76 61 72 69 61 62 6c 65 73 20 6f 72 ent variables or
8130: 20 62 69 6e 64 2d 6d 6f 75 6e 74 65 64 20 76 6f bind-mounted vo
8140: 6c 75 6d 65 73 2e 0d 0a 0d 0a 0d 0a 23 23 20 3c lumes.......## <
8150: 61 20 69 64 3d 22 73 74 61 72 74 22 3e 3c 2f 61 a id="start"></a
8160: 3e 60 73 74 61 72 74 60 0d 0a 0d 0a 52 6f 75 74 >`start`....Rout
8170: 65 72 4f 53 20 68 61 73 20 60 2f 63 6f 6e 74 61 erOS has `/conta
8180: 69 6e 65 72 2f 73 74 61 72 74 60 2c 20 77 69 74 iner/start`, wit
8190: 68 20 6c 69 6d 69 74 61 74 69 6f 6e 73 20 79 6f h limitations yo
81a0: 75 20 63 61 6e 20 72 65 61 73 6f 6e 61 62 6c 79 u can reasonably
81b0: 20 69 6e 66 65 72 20 66 72 6f 6d 20 74 68 65 20 infer from the
81c0: 72 65 73 74 20 6f 66 20 74 68 69 73 20 61 72 74 rest of this art
81d0: 69 63 6c 65 2e 0d 0a 0d 0a 0d 0a 23 23 20 3c 61 icle.......## <a
81e0: 20 69 64 3d 22 73 77 61 72 6d 22 3e 3c 2f 61 3e id="swarm"></a>
81f0: 60 73 77 61 72 6d 60 0d 0a 0d 0a 45 78 74 65 6e `swarm`....Exten
8200: 64 69 6e 67 20 66 72 6f 6d 20 74 68 65 20 6c 61 ding from the la
8210: 63 6b 20 6f 66 20 73 69 6e 67 6c 65 2d 62 6f 78 ck of single-box
8220: 20 63 6f 6e 74 61 69 6e 65 72 20 6f 72 63 68 65 container orche
8230: 73 74 72 61 74 69 6f 6e 20 66 65 61 74 75 72 65 stration feature
8240: 73 2c 20 52 6f 75 74 65 72 4f 53 20 61 6c 73 6f s, RouterOS also
8250: 20 63 6f 6d 70 6c 65 74 65 6c 79 20 6c 61 63 6b completely lack
8260: 73 20 61 20 5f 63 6c 75 73 74 65 72 5f 20 6f 72 s a _cluster_ or
8270: 63 68 65 73 74 72 61 74 69 6f 6e 20 66 65 61 74 chestration feat
8280: 75 72 65 2c 20 6e 6f 74 20 65 76 65 6e 20 61 20 ure, not even a
8290: 6c 69 67 68 74 77 65 69 67 68 74 20 6f 6e 65 20 lightweight one
82a0: 6c 69 6b 65 20 5b 44 6f 63 6b 65 72 20 53 77 61 like [Docker Swa
82b0: 72 6d 5d 28 68 74 74 70 73 3a 2f 2f 64 6f 63 73 rm](https://docs
82c0: 2e 64 6f 63 6b 65 72 2e 63 6f 6d 2f 65 6e 67 69 .docker.com/engi
82d0: 6e 65 2f 73 77 61 72 6d 2f 29 20 6f 72 20 5b 6b ne/swarm/) or [k
82e0: 33 73 5d 28 68 74 74 70 73 3a 2f 2f 6b 33 73 2e 3s](https://k3s.
82f0: 69 6f 29 2c 20 61 6e 64 20 69 74 20 63 65 72 74 io), and it cert
8300: 61 69 6e 6c 79 20 64 6f 65 73 6e e2 80 99 74 20 ainly doesn’t
8310: 73 75 70 70 6f 72 74 20 74 68 65 20 62 65 68 65 support the behe
8320: 6d 6f 74 68 20 74 68 61 74 20 69 73 20 4b 75 62 moth that is Kub
8330: 65 72 6e 65 74 65 73 2e 0d 0a 0d 0a 0d 0a 23 23 ernetes.......##
8340: 20 3c 61 20 69 64 3d 22 74 61 67 22 3e 3c 2f 61 <a id="tag"></a
8350: 3e 60 74 61 67 60 0d 0a 0d 0a 52 6f 75 74 65 72 >`tag`....Router
8360: 4f 53 20 64 6f 65 73 20 6e 6f 74 68 69 6e 67 20 OS does nothing
8370: 6d 6f 72 65 20 77 69 74 68 20 74 61 67 73 20 74 more with tags t
8380: 68 61 6e 20 74 6f 20 73 65 6c 65 63 74 20 77 68 han to select wh
8390: 69 63 68 20 69 6d 61 67 65 20 74 6f 20 64 6f 77 ich image to dow
83a0: 6e 6c 6f 61 64 20 66 72 6f 6d 20 61 20 72 65 67 nload from a reg
83b0: 69 73 74 72 79 2e 20 57 69 74 68 6f 75 74 20 61 istry. Without a
83c0: 20 6c 6f 63 61 6c 20 69 6d 61 67 65 20 63 61 63 local image cac
83d0: 68 65 2c 20 79 6f 75 20 63 61 6e 6e 6f 74 20 72 he, you cannot r
83e0: 65 2d 74 61 67 20 61 6e 20 69 6d 61 67 65 2e 0d e-tag an image..
83f0: 0a 0d 0a 0d 0a 23 23 20 3c 61 20 69 64 3d 22 75 .....## <a id="u
8400: 70 64 61 74 65 22 3e 3c 2f 61 3e 60 75 70 64 61 pdate"></a>`upda
8410: 74 65 60 0d 0a 0d 0a 54 68 65 72 65 20 69 73 20 te`....There is
8420: 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73 68 no equivalent sh
8430: 6f 72 74 20 6f 66 20 74 68 69 73 3a 0d 0a 0d 0a ort of this:....
8440: 20 20 20 20 2f 63 6f 6e 74 61 69 6e 65 72 2f 73 /container/s
8450: 74 6f 70 20 30 0d 0a 20 20 20 20 e2 80 a6 77 61 top 0.. …wa
8460: 69 74 20 66 6f 72 20 69 74 20 74 6f 20 73 74 6f it for it to sto
8470: 70 e2 80 a6 0d 0a 20 20 20 20 2f 63 6f 6e 74 61 p….. /conta
8480: 69 6e 65 72 2f 72 65 6d 6f 76 65 20 30 0d 0a 20 iner/remove 0..
8490: 20 20 20 2f 63 6f 6e 74 61 69 6e 65 72 2f 61 64 /container/ad
84a0: 64 20 e2 80 a6 0d 0a 0d 0a 54 68 65 20 6c 61 73 d …....The las
84b0: 74 20 73 74 65 70 20 69 73 20 74 68 65 20 74 72 t step is the tr
84c0: 69 63 6b 79 20 6f 6e 65 20 73 69 6e 63 65 20 60 icky one since `
84d0: 2f 63 6f 6e 74 61 69 6e 65 72 2f 70 72 69 6e 74 /container/print
84e0: 60 20 73 68 6f 77 73 20 6d 6f 73 74 20 62 75 74 ` shows most but
84f0: 20 6e 6f 74 20 61 6c 6c 20 6f 66 20 74 68 65 20 not all of the
8500: 6f 70 74 69 6f 6e 73 20 79 6f 75 20 67 61 76 65 options you gave
8510: 20 74 6f 20 63 72 65 61 74 65 20 69 74 2e 20 49 to create it. I
8520: 66 20 79 6f 75 20 64 69 64 6e e2 80 99 74 20 77 f you didn’t w
8530: 72 69 74 65 20 64 6f 77 6e 20 68 6f 77 20 79 6f rite down how yo
8540: 75 20 64 69 64 20 74 68 61 74 2c 20 79 6f 75 e2 u did that, you
8550: 80 99 72 65 20 67 6f 69 6e 67 20 74 6f 20 68 61 re going to ha
8560: 76 65 20 74 6f 20 77 6f 72 6b 20 74 68 61 74 20 ve to work that
8570: 6f 75 74 20 74 6f 20 63 6f 6d 70 6c 65 74 65 20 out to complete
8580: 74 68 65 20 63 6f 6d 6d 61 6e 64 20 73 65 71 75 the command sequ
8590: 65 6e 63 65 2e 0d 0a 0d 0a 0d 0a 23 23 20 3c 61 ence.......## <a
85a0: 20 69 64 3d 22 76 65 72 73 69 6f 6e 22 3e 3c 2f id="version"></
85b0: 61 3e 60 76 65 72 73 69 6f 6e 60 0d 0a 0d 0a 57 a>`version`....W
85c0: 68 69 6c 65 20 52 6f 75 74 65 72 4f 53 e2 80 99 hile RouterOS’
85d0: 73 20 60 63 6f 6e 74 61 69 6e 65 72 2e 6e 70 6b s `container.npk
85e0: 60 20 74 65 63 68 6e 69 63 61 6c 6c 79 20 64 6f ` technically do
85f0: 65 73 20 68 61 76 65 20 61 6e 20 69 6e 64 65 70 es have an indep
8600: 65 6e 64 65 6e 74 20 76 65 72 73 69 6f 6e 20 6e endent version n
8610: 75 6d 62 65 72 20 6f 66 20 69 74 73 20 6f 77 6e umber of its own
8620: 2c 20 69 74 20 69 73 20 6d 65 61 6e 74 20 74 6f , it is meant to
8630: 20 61 6c 77 61 79 73 20 6d 61 74 63 68 20 74 68 always match th
8640: 61 74 20 6f 66 20 74 68 65 20 60 72 6f 75 74 65 at of the `route
8650: 72 6f 73 2e 6e 70 6b 60 20 70 61 63 6b 61 67 65 ros.npk` package
8660: 20 79 6f 75 20 68 61 76 65 20 69 6e 73 74 61 6c you have instal
8670: 6c 65 64 2e 20 52 6f 75 74 65 72 4f 53 20 61 75 led. RouterOS au
8680: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 75 70 67 72 tomatically upgr
8690: 61 64 65 73 20 62 6f 74 68 20 69 6e 20 6c 6f 63 ades both in loc
86a0: 6b 2d 73 74 65 70 2c 20 6d 61 6b 69 6e 67 20 74 k-step, making t
86b0: 68 69 73 20 74 68 65 20 63 6c 6f 73 65 73 74 20 his the closest
86c0: 65 71 75 69 76 61 6c 65 6e 74 20 63 6f 6d 6d 61 equivalent comma
86d0: 6e 64 3a 0d 0a 0d 0a 20 20 20 20 2f 73 79 73 74 nd:.... /syst
86e0: 65 6d 2f 70 61 63 6b 61 67 65 2f 70 72 69 6e 74 em/package/print
86f0: 0d 0a 0d 0a 0d 0a 23 23 20 3c 61 20 69 64 3d 22 ......## <a id="
8700: 77 61 69 74 22 3e 3c 2f 61 3e 60 77 61 69 74 60 wait"></a>`wait`
8710: 0d 0a 0d 0a 54 68 65 20 63 6c 6f 73 65 73 74 20 ....The closest
8720: 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 74 68 equivalent to th
8730: 69 73 20 77 6f 75 6c 64 20 62 65 20 74 6f 20 63 is would be to c
8740: 61 6c 6c 20 60 2f 63 6f 6e 74 61 69 6e 65 72 2f all `/container/
8750: 73 74 6f 70 60 20 69 6e 20 61 20 52 6f 75 74 65 stop` in a Route
8760: 72 4f 53 20 73 63 72 69 70 74 20 61 6e 64 20 74 rOS script and t
8770: 68 65 6e 20 70 6f 6c 6c 20 6f 6e 20 60 2f 63 6f hen poll on `/co
8780: 6e 74 61 69 6e 65 72 2f 70 72 69 6e 74 20 77 68 ntainer/print wh
8790: 65 72 65 20 e2 80 a6 60 20 75 6e 74 69 6c 20 69 ere …` until i
87a0: 74 20 73 74 6f 70 70 65 64 2e 0a 5a 20 63 38 38 t stopped..Z c88
87b0: 35 66 64 66 30 33 32 39 31 37 61 38 36 36 63 61 5fdf032917a866ca
87c0: 32 62 61 37 30 64 39 33 66 39 39 65 64 0a 2ba70d93f99ed.