Docker学习笔记整理(一)

1、基本命令

1.1 Docker-镜像命令

查看所有镜像

#查看所有镜像
[root@node1 ~] docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    d1165f221234   5 months ago   13.3kB

#其他可选项
Options:
  -a, --all          #查看所有镜像
  -q, --quiet        #仅显示镜像id

搜索镜像从远程仓库

#从dockerhub上搜索镜像
[root@node1 ~] docker search mysql
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   11332     [OK]       
mariadb                           MariaDB Server is a high performing open sou…   4307      [OK]       
mysql/mysql-server                Optimized MySQL Server Docker images. Create…   840                  [OK]
centos/mysql-57-centos7           MySQL 5.7 SQL database server                   91                   

下载镜像

#下载镜像,默认下载最新版本,我这里下载的是mysql5.7
[root@node1 ~] docker pull mysql:5.7
5.7: Pulling from library/mysql
e1acddbe380c: Already exists 
bed879327370: Already exists 
03285f80bafd: Already exists 
ccc17412a00a: Already exists 
1f556ecc09d1: Already exists 
adc5528e468d: Already exists 
1afc286d5d53: Already exists 
4d2d9261e3ad: Already exists 
ac609d7b31f8: Already exists 
53ee1339bc3a: Already exists 
b0c0a831a707: Already exists 
Digest: sha256:7cf2e7d7ff876f93c8601406a5aa17484e6623875e64e7acc71432ad8e0a3d7e
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7

删除镜像

#删除docker镜像
#docker rmi -f (强制删除)
[root@node1 ~] docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
mysql         5.7       6c20ffa54f86   11 days ago    448MB
hello-world   latest    d1165f221234   5 months ago   13.3kB
[root@node1 ~] docker rmi d1165f221234
Untagged: hello-world:latest
Untagged: hello-world@sha256:7d91b69e04a9029b99f3585aaaccae2baa80bcf318f4a5d2165a9898cd2dc0a1
Deleted: sha256:d1165f2212346b2bab48cb01c1e39ee8ad1be46b87873d9ca7a4e434980a7726
Deleted: sha256:f22b99068db93900abe17f7f5e09ec775c2826ecfe9db961fea68293744144bd
[root@node1 ~] docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
mysql        5.7       6c20ffa54f86   11 days ago   448MB

提交镜像

命令: docker commit -a=作者名 -m=备注 容器id 镜像名字:tag

实例:
下载tomcat镜像并运行

[root@node1 ~]# docker run -d -p 8080:8080 tomcat:8.5
f4da03e7fffcdf4950c31e118074a47f632e62ea68e3673e6bb900abbd1dcb18
[root@node1 ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS         PORTS                                                  NAMES
f4da03e7fffc   tomcat:8.5     "catalina.sh run"        10 seconds ago   Up 9 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp              eager_brattain

访问localhost:8080,发现404
在这里插入图片描述
原因是找不到路径,进入容器查看发现webapps的目录下是空的

[root@node1 ~]# docker exec -it f4da03e7fffc /bin/bash
root@f4da03e7fffc:/usr/local/tomcat# ls
BUILDING.txt  CONTRIBUTING.md  LICENSE	NOTICE	README.md  RELEASE-NOTES  RUNNING.txt  bin  conf  lib  logs  native-jni-lib  temp  webapps  webapps.dist  work
root@f4da03e7fffc:/usr/local/tomcat# cd webapps
root@f4da03e7fffc:/usr/local/tomcat/webapps# ls
root@f4da03e7fffc:/usr/local/tomcat/webapps#  #这个目录下面是空的

发现文件存放在webapps.dist目录下,那么只需要将文件拷贝到webapps目录下就可以了

root@f4da03e7fffc:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@f4da03e7fffc:/usr/local/tomcat# cd webapps
root@f4da03e7fffc:/usr/local/tomcat/webapps# ls
ROOT  docs  examples  host-manager  manager

再次刷新,tomcat访问成功。
在这里插入图片描述
但是,我们如果每次下载tomcat都要去修改这个东西就很麻烦,为什么自己不能把我现在运行的这个tomcat 打成一个镜像,以后每次启动我自己的镜像就好了呀,就不需要修改任何参数。

[root@node1 ~]# docker ps 
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                                                  NAMES
#当前可以正常访问的tomcat容器
f4da03e7fffc   tomcat:8.5     "catalina.sh run"        11 minutes ago   Up 11 minutes   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp              eager_brattain
# docker commit  -a=作者名 -m=备注  容器id 镜像名字:tag
[root@node1 ~]# docker commit -a='liu' -m='tomcatupdate' f4da03e7fffc mytomcat:1.0
sha256:f2a5b0c54783dfd52c6b6ca118292310679fef9c573eaa6c1f3f1ce2205638bb
[root@node1 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
mytomcat     1.0       f2a5b0c54783   8 seconds ago   538MB  #自己commit上来的镜像
tomcat       8.5       dec1ddc22a20   13 days ago     533MB  #dockerhub上面下载的镜像

启动自己的镜像

#对外映射端口为8070
[root@node1 ~]# docker run -d -p 8070:8080 --name mytomcat mytomcat:1.0
5e3f3dc7c00aa939da59c69e34aee335de0b585eef5ad7fe56396d8481d0292e
[root@node1 ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                                                  NAMES
5e3f3dc7c00a   mytomcat:1.0   "catalina.sh run"        7 seconds ago    Up 7 seconds    0.0.0.0:8070->8080/tcp, :::8070->8080/tcp              mytomcat
f4da03e7fffc   tomcat:8.5     "catalina.sh run"        18 minutes ago   Up 18 minutes   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp              eager_brattain

访问8070端口,访问成功!
在这里插入图片描述

1.2 Docker-容器命令

新建容器并启动命令

docker run [可选参数] image

可选项
--name  #指定容器名称
-d      #后台运行
-p 主机端口:容器端口
-P      #随机端口
-it     #交互式方式运行

[root@node1 etc] docker run -p 3306:3306 --name mysql -it 6c20ffa54f86 /bin/bash
root@f79e5c6f4d37:/

##推出容器,也可以使用ctrl+p+q,这样的退出会使容器进入后台运行
root@f79e5c6f4d37:/# exit

查看容器

#查看容器(默认是查看运行的容器)
[root@node1 ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED       STATUS       PORTS                                                  NAMES
913ce44b5b76   6c20ffa54f86   "docker-entrypoint.s…"   9 hours ago   Up 9 hours   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql

可选项:
  -a, --all             查看所有容器包括未运行的容器
  -q, --quiet           查看容器的id(可以和-a结合使用)

删除容器

#删除容器:docker rm 容器ID (不能删除运行中的容器)
#强制删除:docker rm -f 容器ID
#删除所有容器: docker rm -f $(docker ps -aq)
[root@node1 ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                     PORTS                                                  NAMES
fbc84cdc58e8   6c20ffa54f86   "docker-entrypoint.s…"   11 seconds ago   Exited (0) 7 seconds ago                                                          peaceful_elgamal
913ce44b5b76   6c20ffa54f86   "docker-entrypoint.s…"   9 hours ago      Up 9 hours                 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql
[root@node1 ~]# docker rm fbc84cdc58e8
fbc84cdc58e8
[root@node1 ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED       STATUS       PORTS                                                  NAMES
913ce44b5b76   6c20ffa54f86   "docker-entrypoint.s…"   9 hours ago   Up 9 hours   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql

启动和停止容器

#启动容器:docker start 容器ID
#停止容器:docker stop 容器ID
#杀掉容器:docker kill 容器ID

其他常用命令

查看日志相关

#查看日志 
#docker logs
# -t 查看日志附带时间戳
# -f 查看全部日志
# --tail 5 查看后面5行日志
[root@node1 ~]# docker logs -tf --tail 5 mysql
2021-08-29T01:08:17.830487428Z 2021-08-29T01:08:17.829933Z 0 [Note] Server socket created on IP: '::'.
2021-08-29T01:08:17.841743527Z 2021-08-29T01:08:17.830919Z 0 [Warning] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
2021-08-29T01:08:17.841756760Z 2021-08-29T01:08:17.841379Z 0 [Note] Event Scheduler: Loaded 0 events
2021-08-29T01:08:17.841759510Z 2021-08-29T01:08:17.841540Z 0 [Note] mysqld: ready for connections.
2021-08-29T01:08:17.841761394Z Version: '5.7.35'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server (GPL)

查看容器内部的进程信息

#查看容器内部的进程信息 docker top 容器id
[root@node1 ~]# docker top 913ce44b5b76
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
polkitd             17664               17646               0                   09:08               ?                   00:00:00            mysqld

查看容器的所有信息

#查看容器的所有信息  docker inspect 容器ID
[root@node1 ~]# docker inspect 913ce44b5b76
[
    {
        "Id": "913ce44b5b7670023d89f05476effdfd84cb0e3644bf2bd9b749d13a18959a44",
        "Created": "2021-08-28T15:34:15.87697844Z",
        "Path": "docker-entrypoint.sh",
        "Args": [
            "mysqld"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 17664,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2021-08-29T01:08:17.344704586Z",
            "FinishedAt": "2021-08-29T01:08:06.800391752Z"
        },
        "Image": "sha256:6c20ffa54f8674203e91e3225e489aa505fa04b8d482954a8b6d7414842c6de4",
        "ResolvConfPath": "/var/lib/docker/containers/913ce44b5b7670023d89f05476effdfd84cb0e3644bf2bd9b749d13a18959a44/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/913ce44b5b7670023d89f05476effdfd84cb0e3644bf2bd9b749d13a18959a44/hostname",
        "HostsPath": "/var/lib/docker/containers/913ce44b5b7670023d89f05476effdfd84cb0e3644bf2bd9b749d13a18959a44/hosts",
        "LogPath": "/var/lib/docker/containers/913ce44b5b7670023d89f05476effdfd84cb0e3644bf2bd9b749d13a18959a44/913ce44b5b7670023d89f05476effdfd84cb0e3644bf2bd9b749d13a18959a44-json.log",
        "Name": "/mysql",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {
                "3306/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "3306"
                    }
                ]
            },
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "host",
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": [],
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/4f6a836e6cec45ef61f0baee098c4758de90f87a359317a11af8e744dcaa3260-init/diff:/var/lib/docker/overlay2/528d42fb1ee563a88b29547da1145dcfff495e64bc5643b27551a8fe6fb6756d/diff:/var/lib/docker/overlay2/558947ebdf65d6790b0a5f9718e037886dc4127c85a97e92f681196ea808a106/diff:/var/lib/docker/overlay2/81389b7661c62f67919386382d4d1973f9c734c0186a85b7c2922fdd60e76ff2/diff:/var/lib/docker/overlay2/bfe5f85707737cdf5f93874b54d3fef3fbbb12d041e19e4b10cc00a6119cb857/diff:/var/lib/docker/overlay2/4f67c98d9d93b94062051561e6e78a0ce80be772df734c48f4ec9e3eff054e9b/diff:/var/lib/docker/overlay2/21e33e808e4c9ae9d8d5ac8d3f71766505640a3d8c71ea7bab08e24ee6352c98/diff:/var/lib/docker/overlay2/2a131fa2db383f9bb245556322202fcd5bd707d393227965c48e297ed3de7725/diff:/var/lib/docker/overlay2/74d2c8705d5e8e7dd111a69567b78b465a77399e4ab084ddf3aec624d63a341d/diff:/var/lib/docker/overlay2/61b75442918ace8d70ae2759bb74cf66b8cc3bfd95aab558255a2be186a578ca/diff:/var/lib/docker/overlay2/d5693e8c316cc6c0ca74f57e42e32830a47594056d3ae1bc3b5a50eec6b75df1/diff:/var/lib/docker/overlay2/a6220ea2473c23a10e77ad8078654521b71e5d1d490f0f3045f9b631ad01a7f4/diff",
                "MergedDir": "/var/lib/docker/overlay2/4f6a836e6cec45ef61f0baee098c4758de90f87a359317a11af8e744dcaa3260/merged",
                "UpperDir": "/var/lib/docker/overlay2/4f6a836e6cec45ef61f0baee098c4758de90f87a359317a11af8e744dcaa3260/diff",
                "WorkDir": "/var/lib/docker/overlay2/4f6a836e6cec45ef61f0baee098c4758de90f87a359317a11af8e744dcaa3260/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [
            {
                "Type": "volume",
                "Name": "ec4c3eb8387bab381363109d22fb4e9610b0b9b3dbb7b74f38f0ec4c2eb460a6",
                "Source": "/var/lib/docker/volumes/ec4c3eb8387bab381363109d22fb4e9610b0b9b3dbb7b74f38f0ec4c2eb460a6/_data",
                "Destination": "/var/lib/mysql",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],
        "Config": {
            "Hostname": "913ce44b5b76",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "3306/tcp": {},
                "33060/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "MYSQL_ROOT_PASSWORD=root",
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "GOSU_VERSION=1.12",
                "MYSQL_MAJOR=5.7",
                "MYSQL_VERSION=5.7.35-1debian10"
            ],
            "Cmd": [
                "mysqld"
            ],
            "Image": "6c20ffa54f86",
            "Volumes": {
                "/var/lib/mysql": {}
            },
            "WorkingDir": "",
            "Entrypoint": [
                "docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {}
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "dfb4b5e1bd2de535381a9a0086d9e363f9ad82c18df80dba7fc3bf597b76f4fc",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "3306/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "3306"
                    },
                    {
                        "HostIp": "::",
                        "HostPort": "3306"
                    }
                ],
                "33060/tcp": null
            },
            "SandboxKey": "/var/run/docker/netns/dfb4b5e1bd2d",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "791dc5a2e5b9dc6bbc477bdb22ec6f3edca68253eff91a127823a8c17d8221f3",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.2",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:02",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "ef70fb31e63c59dec772d32ac8e478783f574e48ae08e19b0af7a2c22aad81d8",
                    "EndpointID": "791dc5a2e5b9dc6bbc477bdb22ec6f3edca68253eff91a127823a8c17d8221f3",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:02",
                    "DriverOpts": null
                }
            }
        }
    }
]

进入容器命令

#进入容器命令 
# docker exec -it 容器ID /bin/bash  (创建一个新的容器进程并进入) 推荐!!!
# docker attach 容器ID (进入容器当前运行的进场中)
[root@node1 ~]# docker exec -it 913ce44b5b76 /bin/bash
root@913ce44b5b76:/#  

2.容器数据卷

指定挂载

命令: -v 主机目录:容器目录

假设我们需要安装mysql数据库,但是如果我们使用如下命令启动。

docker run -d -p 主机端口:容器端口 -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql 

ps: -e MYSQL_ROOT_PASSWORD=my-secret-pw 这个命令是设置mysql 的root密码

那么就会发现,我们只要把这个容器给删除了就相当于我们把数据也删除了,那就是删库跑路了,所以这个肯定是不允许的。
问题来了,我们如何去将这个数据持久化呢?

如果说,我们将mysql的数据存储文件同步到主机中来,那么即便是删除了容器数据还在,只要下次启动容器重新绑定目录就好了呀。

所以我们就有了如下配置命令

#将msyql的配置文件和数据文件挂载到主机上的/home/mysql目录下实现数据同步
[root@node1 home]# docker run -d -p 3306:3306 --name mysql -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
c611cb0705c3cc2a2e947ada705a674cf46f94ac47e32d7b67751e5e548261f8
[root@node1 home]# cd /home/mysql/data #这是主机的目录
[root@node1 data]# ll
总用量 188484
-rw-r-----. 1 polkitd input       56 91 22:06 auto.cnf
-rw-------. 1 polkitd input     1680 91 22:06 ca-key.pem
-rw-r--r--. 1 polkitd input     1112 91 22:06 ca.pem
-rw-r--r--. 1 polkitd input     1112 91 22:06 client-cert.pem
-rw-------. 1 polkitd input     1676 91 22:06 client-key.pem
-rw-r-----. 1 polkitd input     1359 91 22:06 ib_buffer_pool
-rw-r-----. 1 polkitd input 79691776 91 22:06 ibdata1
-rw-r-----. 1 polkitd input 50331648 91 22:06 ib_logfile0
-rw-r-----. 1 polkitd input 50331648 91 22:06 ib_logfile1
-rw-r-----. 1 polkitd input 12582912 91 22:06 ibtmp1
drwxr-x---. 2 polkitd input     4096 91 22:06 mysql
drwxr-x---. 2 polkitd input     8192 91 22:06 performance_schema
-rw-------. 1 polkitd input     1680 91 22:06 private_key.pem
-rw-r--r--. 1 polkitd input      452 91 22:06 public_key.pem
-rw-r--r--. 1 polkitd input     1112 91 22:06 server-cert.pem
-rw-------. 1 polkitd input     1680 91 22:06 server-key.pem
drwxr-x---. 2 polkitd input     8192 91 22:06 sys

这是容器内部的目录,可以看出数据同步了。

[root@node1 data]# docker exec -it mysql /bin/bash
root@c611cb0705c3:/# ls
bin  boot  dev	docker-entrypoint-initdb.d  entrypoint.sh  etc	home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@c611cb0705c3:/# cd var/lib/mysql
root@c611cb0705c3:/var/lib/mysql# ls 
auto.cnf  ca-key.pem  ca.pem  client-cert.pem  client-key.pem  ib_buffer_pool  ib_logfile0  ib_logfile1  ibdata1  ibtmp1  mysql  performance_schema  private_key.pem  public_key.pem  server-cert.pem  server-key.pem  sys

匿名挂载

命令如下
-v 容器目录
假设我们需要将nginx的配置文件挂载出来,并且使用匿名挂载 ,操作如下:

[root@node1 _data]# docker run -d -p 80:80 --name nginx -v /etc/nginx nginx
ad3770d042c43a7f0ef474dcef19244890c3f30f4ebe43c2e37b93abb91d2b07
[root@node1 _data]# docker volume ls #查看数据卷列表
DRIVER    VOLUME NAME
local     07204037f3a84e3944a204014c26b1fd99dd3df0ef4678ae1cae0fe59808b2f0 #系统生成的数据卷名字
[root@node1 _data]# docker volume inspect  #查看数据卷详情
07204037f3a84e3944a204014c26b1fd99dd3df0ef4678ae1cae0fe59808b2f0
[
    {
        "CreatedAt": "2021-09-01T22:25:45+08:00",
        "Driver": "local",
        "Labels": null,
        #主机挂载目录
        "Mountpoint": "/var/lib/docker/volumes/07204037f3a84e3944a204014c26b1fd99dd3df0ef4678ae1cae0fe59808b2f0/_data", 
        "Name": "07204037f3a84e3944a204014c26b1fd99dd3df0ef4678ae1cae0fe59808b2f0",
        "Options": null,
        "Scope": "local"
    }
]
#进入挂载目录查看
[root@node1 _data]# cd /var/lib/docker/volumes/07204037f3a84e3944a204014c26b1fd99dd3df0ef4678ae1cae0fe59808b2f0/_data
[root@node1 _data]# ls
#挂载成功
conf.d  fastcgi_params  mime.types  modules  nginx.conf  scgi_params  uwsgi_params

具名挂载

命令如下:
-v 数据卷名称:容器内路径

假设我们需要将nginx的配置文件挂载出来,并且使用具名挂载 ,操作如下:

[root@node1 data]# docker run -d -p 80:80 --name nginx -v nginx:/etc/nginx/nginx.conf nginx
docker: Error response from daemon: source /var/lib/docker/overlay2/ee2b86b68f0f6e36c07559b66e4b9dec31f52ab464b9d8116256c392cce82310/merged/etc/nginx/nginx.conf is not directory.
See 'docker run --help'.
[root@node1 data]# docker run -d -p 80:80 --name nginx -v nginx:/etc/nginx nginx
7be8d02510974db96e541dcd17076f6b980eb86180f30f05df00d46a5240ff2c
[root@node1 data]# docker volume ls #查看挂载数据卷
DRIVER    VOLUME NAME
local     nginx #自定义的数据卷名称
[root@node1 data]# docker volume inspect nginx #查看挂载数据卷详情
[
    {
        "CreatedAt": "2021-09-01T22:20:52+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/nginx/_data", #主机存放路径
        "Name": "nginx",
        "Options": null,
        "Scope": "local"
    }
]
[root@node1 data]# cd /var/lib/docker/volumes/nginx/_data
[root@node1 _data]# ls
conf.d  fastcgi_params  mime.types  modules  nginx.conf  scgi_params  uwsgi_params
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值