storage: use "console" for shell examples

This allows for easier copying of the commands, without selecting the
prompt.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
Sebastiaan van Stijn 2021-08-06 17:03:27 +02:00
parent 051a690f64
commit 4afcaf3b2d
No known key found for this signature in database
GPG Key ID: 76698F39D527CE8C
10 changed files with 108 additions and 108 deletions

View File

@ -103,7 +103,7 @@ first one.
<div class="tab-content">
<div id="mount-run" class="tab-pane fade in active" markdown="1">
```bash
```console
$ docker run -d \
-it \
--name devtest \
@ -114,7 +114,7 @@ $ docker run -d \
</div><!--mount-->
<div id="v-run" class="tab-pane fade" markdown="1">
```bash
```console
$ docker run -d \
-it \
--name devtest \
@ -147,7 +147,7 @@ set to `rprivate`.
Stop the container:
```bash
```console
$ docker container stop devtest
$ docker container rm devtest
@ -174,7 +174,7 @@ The `--mount` and `-v` examples have the same end result.
<div class="tab-content">
<div id="mount-empty-run" class="tab-pane fade in active" markdown="1">
```bash
```console
$ docker run -d \
-it \
--name broken-container \
@ -188,7 +188,7 @@ starting container process caused "exec: \"nginx\": executable file not found in
</div><!--mount-->
<div id="v-empty-run" class="tab-pane fade" markdown="1">
```bash
```console
$ docker run -d \
-it \
--name broken-container \
@ -204,7 +204,7 @@ starting container process caused "exec: \"nginx\": executable file not found in
The container is created but does not start. Remove it:
```bash
```console
$ docker container rm broken-container
```
@ -228,7 +228,7 @@ The `--mount` and `-v` examples have the same result.
<div class="tab-content">
<div id="mount-readonly" class="tab-pane fade in active" markdown="1">
```bash
```console
$ docker run -d \
-it \
--name devtest \
@ -239,7 +239,7 @@ $ docker run -d \
</div><!--mount-->
<div id="v-readonly" class="tab-pane fade" markdown="1">
```bash
```console
$ docker run -d \
-it \
--name devtest \
@ -268,7 +268,7 @@ correctly. Look for the `Mounts` section:
Stop the container:
```bash
```console
$ docker container stop devtest
$ docker container rm devtest
@ -316,7 +316,7 @@ The `--mount` and `-v` examples have the same result.
<div class="tab-content">
<div id="mount-propagation" class="tab-pane fade in active" markdown="1">
```bash
```console
$ docker run -d \
-it \
--name devtest \
@ -328,7 +328,7 @@ $ docker run -d \
</div><!--mount-->
<div id="v-propagation" class="tab-pane fade" markdown="1">
```bash
```console
$ docker run -d \
-it \
--name devtest \
@ -367,7 +367,7 @@ the bind mount's contents:
It is not possible to modify the selinux label using the `--mount` flag.
```bash
```console
$ docker run -d \
-it \
--name devtest \

View File

@ -37,7 +37,7 @@ storage driver is configured, Docker uses it by default.
1. Use the following command to verify that your kernel supports AUFS.
```bash
```console
$ grep aufs /proc/filesystems
nodev aufs
@ -45,7 +45,7 @@ storage driver is configured, Docker uses it by default.
2. Check which storage driver Docker is using.
```bash
```console
$ docker info
<truncated output>
@ -88,7 +88,7 @@ minimize overhead.
The following `docker pull` command shows a Docker host downloading a Docker
image comprising five layers.
```bash
```console
$ docker pull ubuntu
Using default tag: latest

View File

@ -41,7 +41,7 @@ Btrfs Filesystem as Btrfs.
- `btrfs` support must exist in your kernel. To check this, run the following
command:
```bash
```console
$ grep btrfs /proc/filesystems
btrfs
@ -60,7 +60,7 @@ This procedure is essentially identical on SLES and Ubuntu.
2. Copy the contents of `/var/lib/docker/` to a backup location, then empty
the contents of `/var/lib/docker/`:
```bash
```console
$ sudo cp -au /var/lib/docker /var/lib/docker.bk
$ sudo rm -rf /var/lib/docker/*
```
@ -70,7 +70,7 @@ This procedure is essentially identical on SLES and Ubuntu.
`/dev/xvdg`. Double-check the block device names because this is a
destructive operation.
```bash
```console
$ sudo mkfs.btrfs -f /dev/xvdf /dev/xvdg
```
@ -80,7 +80,7 @@ This procedure is essentially identical on SLES and Ubuntu.
4. Mount the new Btrfs filesystem on the `/var/lib/docker/` mount point. You
can specify any of the block devices used to create the Btrfs filesystem.
```bash
```console
$ sudo mount -t btrfs /dev/xvdf /var/lib/docker
```
@ -89,7 +89,7 @@ This procedure is essentially identical on SLES and Ubuntu.
5. Copy the contents of `/var/lib/docker.bk` to `/var/lib/docker/`.
```bash
```console
$ sudo cp -au /var/lib/docker.bk/* /var/lib/docker/
```
@ -112,7 +112,7 @@ This procedure is essentially identical on SLES and Ubuntu.
7. Start Docker. After it is running, verify that `btrfs` is being used as the
storage driver.
```bash
```console
$ docker info
Containers: 0
@ -140,7 +140,7 @@ roughly 1 GB.
To add a block device to a Btrfs volume, use the `btrfs device add` and
`btrfs filesystem balance` commands.
```bash
```console
$ sudo btrfs device add /dev/svdh /var/lib/docker
$ sudo btrfs filesystem balance /var/lib/docker

View File

@ -57,7 +57,7 @@ For production systems, see
1. Stop Docker.
```bash
```console
$ sudo systemctl stop docker
```
@ -77,14 +77,14 @@ For production systems, see
3. Start Docker.
```bash
```console
$ sudo systemctl start docker
```
4. Verify that the daemon is using the `devicemapper` storage driver. Use the
`docker info` command and look for `Storage Driver`.
```bash
```console
$ docker info
Containers: 0
@ -204,7 +204,7 @@ assumes that the Docker daemon is in the `stopped` state.
2. Stop Docker.
```bash
```console
$ sudo systemctl stop docker
```
@ -222,7 +222,7 @@ assumes that the Docker daemon is in the `stopped` state.
> **Warning**: The next few steps are destructive, so be sure that you have
> specified the correct device!
```bash
```console
$ sudo pvcreate /dev/xvdf
Physical volume "/dev/xvdf" successfully created.
@ -231,7 +231,7 @@ assumes that the Docker daemon is in the `stopped` state.
5. Create a `docker` volume group on the same device, using the `vgcreate`
command.
```bash
```console
$ sudo vgcreate docker /dev/xvdf
Volume group "docker" successfully created
@ -242,7 +242,7 @@ assumes that the Docker daemon is in the `stopped` state.
to allow for automatic expanding of the data or metadata if space runs low,
as a temporary stop-gap. These are the recommended values.
```bash
```console
$ sudo lvcreate --wipesignatures y -n thinpool docker -l 95%VG
Logical volume "thinpool" created.
@ -255,7 +255,7 @@ assumes that the Docker daemon is in the `stopped` state.
7. Convert the volumes to a thin pool and a storage location for metadata for
the thin pool, using the `lvconvert` command.
```bash
```console
$ sudo lvconvert -y \
--zero n \
-c 512K \
@ -270,7 +270,7 @@ assumes that the Docker daemon is in the `stopped` state.
8. Configure autoextension of thin pools via an `lvm` profile.
```bash
```console
$ sudo vi /etc/lvm/profile/docker-thinpool.profile
```
@ -297,7 +297,7 @@ assumes that the Docker daemon is in the `stopped` state.
10. Apply the LVM profile, using the `lvchange` command.
```bash
```console
$ sudo lvchange --metadataprofile docker-thinpool docker/thinpool
Logical volume docker/thinpool changed.
@ -305,7 +305,7 @@ assumes that the Docker daemon is in the `stopped` state.
11. Ensure monitoring of the logical volume is enabled.
```bash
```console
$ sudo lvs -o+seg_monitor
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Monitor
@ -317,7 +317,7 @@ assumes that the Docker daemon is in the `stopped` state.
this step, automatic extension of the logical volume will not occur,
regardless of any settings in the applied profile.
```bash
```console
$ sudo lvchange --monitor y docker/thinpool
```
@ -329,7 +329,7 @@ assumes that the Docker daemon is in the `stopped` state.
exists, move it out of the way so that Docker can use the new LVM pool to
store the contents of image and containers.
```bash
```console
$ sudo su -
# mkdir /var/lib/docker.bk
# mv /var/lib/docker/* /var/lib/docker.bk
@ -358,19 +358,19 @@ assumes that the Docker daemon is in the `stopped` state.
**systemd**:
```bash
```console
$ sudo systemctl start docker
```
**service**:
```bash
```console
$ sudo service docker start
```
15. Verify that Docker is using the new configuration using `docker info`.
```bash
```console
$ docker info
Containers: 0
@ -407,7 +407,7 @@ assumes that the Docker daemon is in the `stopped` state.
16. After you have verified that the configuration is correct, you can remove the
`/var/lib/docker.bk` directory which contains the previous configuration.
```bash
```console
$ sudo rm -rf /var/lib/docker.bk
```
@ -422,7 +422,7 @@ tool at the OS level, such as Nagios.
To view the LVM logs, you can use `journalctl`:
```bash
```console
$ sudo journalctl -fu dm-event.service
```
@ -464,7 +464,7 @@ If you do not want to use `device_tool`, you can [resize the thin pool manually]
2. Use the tool. The following example resizes the thin pool to 200GB.
```bash
```console
$ ./device_tool resize 200GB
```
@ -480,7 +480,7 @@ it has significant performance and stability drawbacks.
If you are using `loop-lvm` mode, the output of `docker info` shows file
paths for `Data loop file` and `Metadata loop file`:
```bash
```console
$ docker info |grep 'loop file'
Data loop file: /var/lib/docker/devicemapper/data
@ -492,7 +492,7 @@ thin pool is 100 GB, and is increased to 200 GB.
1. List the sizes of the devices.
```bash
```console
$ sudo ls -lh /var/lib/docker/devicemapper/
total 1175492
@ -504,13 +504,13 @@ thin pool is 100 GB, and is increased to 200 GB.
which is used to increase **or** decrease the size of a file. Note that
decreasing the size is a destructive operation.
```bash
```console
$ sudo truncate -s 200G /var/lib/docker/devicemapper/data
```
3. Verify the file size changed.
```bash
```console
$ sudo ls -lh /var/lib/docker/devicemapper/
total 1.2G
@ -522,7 +522,7 @@ thin pool is 100 GB, and is increased to 200 GB.
the loopback device in memory, in GB. Reload it, then list the size again.
After the reload, the size is 200 GB.
```bash
```console
$ echo $[ $(sudo blockdev --getsize64 /dev/loop0) / 1024 / 1024 / 1024 ]
100
@ -578,7 +578,7 @@ block device and other parameters to suit your situation.
Use the `pvdisplay` command to find the physical block devices currently in
use by your thin pool, and the volume group's name.
```bash
```console
$ sudo pvdisplay |grep 'VG Name'
PV Name /dev/xvdf
@ -591,7 +591,7 @@ block device and other parameters to suit your situation.
2. Extend the volume group, using the `vgextend` command with the `VG Name`
from the previous step, and the name of your **new** block device.
```bash
```console
$ sudo vgextend docker /dev/xvdg
Physical volume "/dev/xvdg" successfully created.
@ -602,7 +602,7 @@ block device and other parameters to suit your situation.
volume right away, without auto-extend. To extend the metadata thinpool
instead, use `docker/thinpool_tmeta`.
```bash
```console
$ sudo lvextend -l+100%FREE -n docker/thinpool
Size of logical volume docker/thinpool_tdata changed from 95.00 GiB (24319 extents) to 198.00 GiB (50688 extents).
@ -636,8 +636,8 @@ If you reboot the host and find that the `docker` service failed to start,
look for the error, "Non existing device". You need to re-activate the
logical volumes with this command:
```bash
sudo lvchange -ay docker/thinpool
```console
$ sudo lvchange -ay docker/thinpool
```
## How the `devicemapper` storage driver works
@ -648,7 +648,7 @@ sudo lvchange -ay docker/thinpool
Use the `lsblk` command to see the devices and their pools, from the operating
system's point of view:
```bash
```console
$ sudo lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
@ -663,7 +663,7 @@ xvdf 202:80 0 100G 0 disk
Use the `mount` command to see the mount-point Docker is using:
```bash
```console
$ mount |grep devicemapper
/dev/xvda1 on /var/lib/docker/devicemapper type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
```

View File

@ -70,13 +70,13 @@ need to use the legacy `overlay` driver, specify it instead.
1. Stop Docker.
```bash
```console
$ sudo systemctl stop docker
```
2. Copy the contents of `/var/lib/docker` to a temporary location.
```bash
```console
$ cp -au /var/lib/docker /var/lib/docker.bk
```
@ -97,7 +97,7 @@ need to use the legacy `overlay` driver, specify it instead.
5. Start Docker.
```bash
```console
$ sudo systemctl start docker
```
@ -105,7 +105,7 @@ need to use the legacy `overlay` driver, specify it instead.
Use the `docker info` command and look for `Storage Driver` and
`Backing filesystem`.
```bash
```console
$ docker info
Containers: 0
@ -149,7 +149,7 @@ six directories under `/var/lib/docker/overlay2`.
> **Warning**: Do not directly manipulate any files or directories within
> `/var/lib/docker/`. These files and directories are managed by Docker.
```bash
```console
$ ls -l /var/lib/docker/overlay2
total 24
@ -165,7 +165,7 @@ The new `l` (lowercase `L`) directory contains shortened layer identifiers as
symbolic links. These identifiers are used to avoid hitting the page size
limitation on arguments to the `mount` command.
```bash
```console
$ ls -l /var/lib/docker/overlay2/l
total 20
@ -180,7 +180,7 @@ The lowest layer contains a file called `link`, which contains the name of the
shortened identifier, and a directory called `diff` which contains the
layer's contents.
```bash
```console
$ ls /var/lib/docker/overlay2/3a36935c9df35472229c57f4a27105a136f5e4dbef0f87905b2e506e494e348b/
diff link
@ -200,7 +200,7 @@ contents. It also contains a `merged` directory, which contains the unified
contents of its parent layer and itself, and a `work` directory which is used
internally by OverlayFS.
```bash
```console
$ ls /var/lib/docker/overlay2/223c2864175491657d238e2664251df13b63adb8d050924fd1bfcdb278b866f7
diff link lower merged work
@ -217,7 +217,7 @@ etc sbin usr var
To view the mounts which exist when you use the `overlay` storage driver with
Docker, use the `mount` command. The output below is truncated for readability.
```bash
```console
$ mount | grep overlay
overlay on /var/lib/docker/overlay2/9186877cdf386d0a3b016149cf30c208f326dca307529e646afce5b3f83f5304/merged
@ -273,7 +273,7 @@ the container is the `upperdir` and is writable.
The following `docker pull` command shows a Docker host downloading a Docker
image comprising five layers.
```bash
```console
$ docker pull ubuntu
Using default tag: latest
@ -297,7 +297,7 @@ the directory IDs.
> **Warning**: Do not directly manipulate any files or directories within
> `/var/lib/docker/`. These files and directories are managed by Docker.
```bash
```console
$ ls -l /var/lib/docker/overlay/
total 20
@ -312,7 +312,7 @@ The image layer directories contain the files unique to that layer as well as
hard links to the data that is shared with lower layers. This allows for
efficient use of disk space.
```bash
```console
$ ls -i /var/lib/docker/overlay/38f3ed2eac129654acef11c32670b534670c3a06e483fce313d72e3e0a15baa8/root/bin/ls
19793696 /var/lib/docker/overlay/38f3ed2eac129654acef11c32670b534670c3a06e483fce313d72e3e0a15baa8/root/bin/ls
@ -328,7 +328,7 @@ Containers also exist on-disk in the Docker host's filesystem under
`/var/lib/docker/overlay/`. If you list a running container's subdirectory
using the `ls -l` command, three directories and one file exist:
```bash
```console
$ ls -l /var/lib/docker/overlay/<directory-of-running-container>
total 16
@ -341,7 +341,7 @@ drwx------ 3 root root 4096 Jun 20 16:39 work
The `lower-id` file contains the ID of the top layer of the image the container
is based on, which is the OverlayFS `lowerdir`.
```bash
```console
$ cat /var/lib/docker/overlay/ec444863a55a9f1ca2df72223d459c5d940a721b2288ff86a3f27be28b53be6c/lower-id
55f1e14c361b90570df46371b20ce6d480c434981cbda5fd68c6ff61aa0a5358
@ -358,7 +358,7 @@ The `work` directory is internal to OverlayFS.
To view the mounts which exist when you use the `overlay` storage driver with
Docker, use the `mount` command. The output below is truncated for readability.
```bash
```console
$ mount | grep overlay
overlay on /var/lib/docker/overlay/ec444863a55a.../merged

View File

@ -17,7 +17,7 @@ mechanism to verify other storage back-ends against, in a testing environment.
1. Stop Docker.
```bash
```console
$ sudo systemctl stop docker
```
@ -44,14 +44,14 @@ mechanism to verify other storage back-ends against, in a testing environment.
3. Start Docker.
```bash
```console
$ sudo systemctl start docker
```
4. Verify that the daemon is using the `vfs` storage driver.
Use the `docker info` command and look for `Storage Driver`.
```bash
```console
$ docker info
Storage Driver: vfs
@ -79,7 +79,7 @@ it is a deep copy of its parent layer. These layers are all located under
The following `docker pull` command shows a Docker host downloading a Docker
image comprising five layers.
```bash
```console
$ docker pull ubuntu
Using default tag: latest
@ -99,7 +99,7 @@ image layer IDs shown in the `docker pull` command. To see the size taken up on
disk by each layer, you can use the `du -sh` command, which gives the size as a
human-readable value.
```bash
```console
$ ls -l /var/lib/docker/vfs/dir/
total 0
@ -111,7 +111,7 @@ drwxr-xr-x. 21 root root 224 Aug 2 18:23 a292ac6341a65bf3a5da7b7c251e19de1294bd
drwxr-xr-x. 21 root root 224 Aug 2 18:23 e92be7a4a4e3ccbb7dd87695bca1a0ea373d4f673f455491b1342b33ed91446b
```
```bash
```console
$ du -sh /var/lib/docker/vfs/dir/*
4.0K /var/lib/docker/vfs/dir/3262dfbe53dac3e1ab7dcc8ad5d8c4d586a11d2ac3c4234892e34bff7f6b821e

View File

@ -56,7 +56,7 @@ use unless you have substantial experience with ZFS on Linux.
2. Copy the contents of `/var/lib/docker/` to `/var/lib/docker.bk` and remove
the contents of `/var/lib/docker/`.
```bash
```console
$ sudo cp -au /var/lib/docker /var/lib/docker.bk
$ sudo rm -rf /var/lib/docker/*
@ -67,7 +67,7 @@ use unless you have substantial experience with ZFS on Linux.
have specified the correct devices, because this is a destructive operation.
This example adds two devices to the pool.
```bash
```console
$ sudo zpool create -f zpool-docker -m /var/lib/docker /dev/xvdf /dev/xvdg
```
@ -75,7 +75,7 @@ use unless you have substantial experience with ZFS on Linux.
display purposes only, and you can use a different name. Check that the pool
was created and mounted correctly using `zfs list`.
```bash
```console
$ sudo zfs list
NAME USED AVAIL REFER MOUNTPOINT
@ -96,7 +96,7 @@ use unless you have substantial experience with ZFS on Linux.
4. Start Docker. Use `docker info` to verify that the storage driver is `zfs`.
```bash
```console
$ sudo docker info
Containers: 0
Running: 0
@ -122,7 +122,7 @@ use unless you have substantial experience with ZFS on Linux.
To increase the size of the `zpool`, you need to add a dedicated block device to
the Docker host, and then add it to the `zpool` using the `zpool add` command:
```bash
```console
$ sudo zpool add zpool-docker /dev/xvdh
```

View File

@ -72,7 +72,7 @@ second uses the `--tmpfs` flag.
<div class="tab-content">
<div id="mount-run" class="tab-pane fade in active" markdown="1">
```bash
```console
$ docker run -d \
-it \
--name tmptest \
@ -83,7 +83,7 @@ $ docker run -d \
</div><!--mount-->
<div id="tmpfs-run" class="tab-pane fade" markdown="1">
```bash
```console
$ docker run -d \
-it \
--name tmptest \
@ -105,7 +105,7 @@ tmptest` and looking for the `Mounts` section:
Remove the container:
```bash
```console
$ docker container stop tmptest
$ docker container rm tmptest
@ -125,7 +125,7 @@ as the `--tmpfs` flag does not support them.
The following example sets the `tmpfs-mode` to `1770`, so that it is not
world-readable within the container.
```bash
```console
docker run -d \
-it \
--name tmptest \

View File

@ -18,7 +18,7 @@ documentation for `cadvisor` instructs you to run the `cadvisor` container as
follows:
```bash
```console
$ sudo docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
@ -53,7 +53,7 @@ If you are unsure which process is causing the path mentioned in the error to
be busy and preventing it from being removed, you can use the `lsof` command
to find its process. For instance, for the error above:
```bash
```console
$ sudo lsof /var/lib/docker/containers/74bef250361c7817bee19349c93139621b272bc8f654ae112dd4eb9652af9515/shm
```

View File

@ -110,13 +110,13 @@ container.
**Create a volume**:
```bash
```console
$ docker volume create my-vol
```
**List volumes**:
```bash
```console
$ docker volume ls
local my-vol
@ -124,7 +124,7 @@ local my-vol
**Inspect a volume**:
```bash
```console
$ docker volume inspect my-vol
[
{
@ -140,7 +140,7 @@ $ docker volume inspect my-vol
**Remove a volume**:
```bash
```console
$ docker volume rm my-vol
```
@ -161,7 +161,7 @@ after running the first one.
<div class="tab-content">
<div id="mount-run" class="tab-pane fade in active" markdown="1">
```bash
```console
$ docker run -d \
--name devtest \
--mount source=myvol2,target=/app \
@ -171,7 +171,7 @@ $ docker run -d \
</div><!--mount-->
<div id="v-run" class="tab-pane fade" markdown="1">
```bash
```console
$ docker run -d \
--name devtest \
-v myvol2:/app \
@ -205,7 +205,7 @@ destination, and that the mount is read-write.
Stop the container and remove the volume. Note volume removal is a separate
step.
```bash
```console
$ docker container stop devtest
$ docker container rm devtest
@ -259,7 +259,7 @@ Docker for Azure both support persistent storage using the Cloudstor plugin.
The following example starts a `nginx` service with four replicas, each of which
uses a local volume called `myvol2`.
```bash
```console
$ docker service create -d \
--replicas=4 \
--name devtest-service \
@ -269,7 +269,7 @@ $ docker service create -d \
Use `docker service ps devtest-service` to verify that the service is running:
```bash
```console
$ docker service ps devtest-service
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
@ -278,7 +278,7 @@ ID NAME IMAGE NODE
Remove the service, which stops all its tasks:
```bash
```console
$ docker service rm devtest-service
```
@ -313,7 +313,7 @@ The `--mount` and `-v` examples have the same end result.
<div class="tab-content">
<div id="mount-empty-run" class="tab-pane fade in active" markdown="1">
```bash
```console
$ docker run -d \
--name=nginxtest \
--mount source=nginx-vol,destination=/usr/share/nginx/html \
@ -323,7 +323,7 @@ $ docker run -d \
</div><!--mount-->
<div id="v-empty-run" class="tab-pane fade" markdown="1">
```bash
```console
$ docker run -d \
--name=nginxtest \
-v nginx-vol:/usr/share/nginx/html \
@ -337,7 +337,7 @@ After running either of these examples, run the following commands to clean up
the containers and volumes. Note volume removal is a separate step.
```bash
```console
$ docker container stop nginxtest
$ docker container rm nginxtest
@ -367,7 +367,7 @@ The `--mount` and `-v` examples have the same result.
<div class="tab-content">
<div id="mount-readonly" class="tab-pane fade in active" markdown="1">
```bash
```console
$ docker run -d \
--name=nginxtest \
--mount source=nginx-vol,destination=/usr/share/nginx/html,readonly \
@ -377,7 +377,7 @@ $ docker run -d \
</div><!--mount-->
<div id="v-readonly" class="tab-pane fade" markdown="1">
```bash
```console
$ docker run -d \
--name=nginxtest \
-v nginx-vol:/usr/share/nginx/html:ro \
@ -408,7 +408,7 @@ correctly. Look for the `Mounts` section:
Stop and remove the container, and remove the volume. Volume removal is a
separate step.
```bash
```console
$ docker container stop nginxtest
$ docker container rm nginxtest
@ -448,7 +448,7 @@ host and can connect to the second using SSH.
On the Docker host, install the `vieux/sshfs` plugin:
```bash
```console
$ docker plugin install --grant-all-permissions vieux/sshfs
```
@ -458,7 +458,7 @@ This example specifies a SSH password, but if the two hosts have shared keys
configured, you can omit the password. Each volume driver may have zero or more
configurable options, each of which is specified using an `-o` flag.
```bash
```console
$ docker volume create --driver vieux/sshfs \
-o sshcmd=test@node2:/home/test \
-o password=testpassword \
@ -472,7 +472,7 @@ configured, you can omit the password. Each volume driver may have zero or more
configurable options. **If the volume driver requires you to pass options, you
must use the `--mount` flag to mount the volume, rather than `-v`.**
```bash
```console
$ docker run -d \
--name sshfs-container \
--volume-driver vieux/sshfs \
@ -485,7 +485,7 @@ $ docker run -d \
This example shows how you can create an NFS volume when creating a service. This example uses `10.0.0.10` as the NFS server and `/var/docker-nfs` as the exported directory on the NFS server. Note that the volume driver specified is `local`.
#### NFSv3
```bash
```console
$ docker service create -d \
--name nfs-service \
--mount 'type=volume,source=nfsvolume,target=/app,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/var/docker-nfs,volume-opt=o=addr=10.0.0.10' \
@ -493,7 +493,7 @@ $ docker service create -d \
```
#### NFSv4
```bash
```console
docker service create -d \
--name nfs-service \
--mount 'type=volume,source=nfsvolume,target=/app,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/var/docker-nfs,"volume-opt=o=addr=10.0.0.10,rw,nfsvers=4,async"' \
@ -503,8 +503,8 @@ docker service create -d \
### Create CIFS/Samba volumes
You can mount a Samba share directly in docker without configuring a mount point on your host.
```bash
docker volume create \
```console
$ docker volume create \
--driver local \
--opt type=cifs \
--opt device=//uxxxxx.your-server.de/backup \