MikroTik Solutions

Hex Artifact Content
Login

Hex Artifact Content

Artifact 4bb9d75386ee6f91b8d91f970f2f468465b03b65c008277b3c90fdf26e1c2b66:

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 “&nbsp;
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.