具有余额/服务的Docker卷

时间:2018-03-12 12:12:44

标签: docker docker-swarm circleci

我需要为特定容器创建多个卷,但是挂载不会生成。 我使用以下示例:

         command: |
            ssh $SSH_USER_PROD@$DOCKER_IP_PROD -p $SSH_PORT_PROD '
            docker login -u "$LC_JFROG_USERNAME" -p "$LC_JFROG_PASSWORD" acessocard-docker.jfrog.io &&
            CREATE=$"docker service create --name $LC_SERVICE_NAME --replicas 1 --with-registry-auth $LC_SECRETS --network corporate --publish 9001:80 $LC_IMAGE:$LC_TAG --mount source=/var/bankreturn,target=/var/bankreturn --mount source=/var/bankreturn/error,target=/var/bankreturn/error --mount source=/var/bankreturn/input,target=/var/bankreturn/input --mount source=/var/bankreturn/processing,target=/var/bankreturn/processing --mount source=/var/bankreturn/success,target=/var/bankreturn/success --mount source=/var/bankreturn/temporary,target=/var/bankreturn/temporary" &&
            UPDATE=$"docker service update $LC_SERVICE_NAME --image $LC_IMAGE:$LC_TAG"&&
            docker service ls | grep $LC_SERVICE_NAME && $UPDATE || $CREATE'

使用" docker inspect",我发现在Volumes部分内没有创建任何内容。

[
    {
        "Id": "eb8dcacc8c2f6b60dfcff783cfdbff0bdaf1114cd8df015b57324ae00a77965e",
        "Created": "2018-03-09T20:11:23.491659862Z",
        "Path": "dotnet",
        "Args": [
            "Acesso.BankReturn.Service.dll",
            "--mount",
            "source=/var/bankreturn,target=/var/bankreturn",
            "--mount",
            "source=/var/bankreturn/error,target=/var/bankreturn/error",
            "--mount",
            "source=/var/bankreturn/input,target=/var/bankreturn/input",
            "--mount",
            "source=/var/bankreturn/processing,target=/var/bankreturn/processing",
            "--mount",
            "source=/var/bankreturn/success,target=/var/bankreturn/success",
            "--mount",
            "source=/var/bankreturn/temporary,target=/var/bankreturn/temporary"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 2803,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2018-03-09T20:11:26.727751025Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:a16dc65817a7a0f3f3312bea0a659ca8fee26168053cb724365332ce48aa9739",
        "ResolvConfPath": "/var/lib/docker/containers/eb8dcacc8c2f6b60dfcff783cfdbff0bdaf1114cd8df015b57324ae00a77965e/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/eb8dcacc8c2f6b60dfcff783cfdbff0bdaf1114cd8df015b57324ae00a77965e/hostname",
        "HostsPath": "/var/lib/docker/containers/eb8dcacc8c2f6b60dfcff783cfdbff0bdaf1114cd8df015b57324ae00a77965e/hosts",
        "LogPath": "/var/lib/docker/containers/eb8dcacc8c2f6b60dfcff783cfdbff0bdaf1114cd8df015b57324ae00a77965e/eb8dcacc8c2f6b60dfcff783cfdbff0bdaf1114cd8df015b57324ae00a77965e-json.log",
        "Name": "/acesso-bankreturn.1.jqz53umombybbkpr0qpx6d4hv",
        "RestartCount": 0,
        "Driver": "aufs",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": null,
            "CapDrop": null,
            "Dns": null,
            "DnsOptions": null,
            "DnsSearch": null,
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "",
            "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": null,
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": null,
            "DiskQuota": 0,
            "KernelMemory": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": -1,
            "OomKillDisable": false,
            "PidsLimit": 0,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0
        },
        "GraphDriver": {
            "Name": "aufs",
            "Data": null
        },
        "Mounts": [],
        "Config": {
            "Hostname": "eb8dcacc8c2f",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "DOTNET_VERSION=2.0.5",
                "DOTNET_DOWNLOAD_URL=https://dotnetcli.blob.core.windows.net/dotnet/Runtime/2.0.5/dotnet-runtime-2.0.5-linux-x64.tar.gz",
                "DOTNET_DOWNLOAD_SHA=21D54E559C5130BB3F8C38EADACB7833EC90943F71C4E9C8FA2D53192313505311230B96F1AFEB52D74D181D49CE736B83521754E55F15D96A8756921783CD33",
                "ASPNETCORE_URLS=http://+:80",
                "ASPNETCORE_PKG_VERSION=2.0.5"
            ],
            "Cmd": [
                "--mount",
                "source=/var/bankreturn,target=/var/bankreturn",
                "--mount",
                "source=/var/bankreturn/error,target=/var/bankreturn/error",
                "--mount",
                "source=/var/bankreturn/input,target=/var/bankreturn/input",
                "--mount",
                "source=/var/bankreturn/processing,target=/var/bankreturn/processing",
                "--mount",
                "source=/var/bankreturn/success,target=/var/bankreturn/success",
                "--mount",
                "source=/var/bankreturn/temporary,target=/var/bankreturn/temporary"
            ],
            "Image": "acessocard-docker.jfrog.io/cico/bankreturn@sha256:cb0b34656178ae3aef7de88aa8f51e89c28c577cf8b79a0fe9b7c4e167ab02ff",
            "Volumes": null,
            "WorkingDir": "/app",
            "Entrypoint": [
                "dotnet",
                "Acesso.BankReturn.Service.dll"
            ],
            "OnBuild": null,
            "Labels": {
                "com.docker.swarm.node.id": "6tn4fwh3wpfgrfj1swd9djw05",
                "com.docker.swarm.service.id": "xmerld0neauao8qbtoj61gd67",
                "com.docker.swarm.service.name": "acesso-bankreturn",
                "com.docker.swarm.task": "",
                "com.docker.swarm.task.id": "jqz53umombybbkpr0qpx6d4hv",
                "com.docker.swarm.task.name": "acesso-bankreturn.1.jqz53umombybbkpr0qpx6d4hv"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "689b5954ccf0239b7807e9dbbd81c93d59de88c51d53fdf78c8a69492861b023",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/689b5954ccf0",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "corporate": {
                    "IPAMConfig": {
                        "IPv4Address": "10.0.1.34"
                    },
                    "Links": null,
                    "Aliases": [
                        "eb8dcacc8c2f"
                    ],
                    "NetworkID": "weyjfrv37j9qy71l9cti1e7ca",
                    "EndpointID": "83aec692883a52492728e01b1e4fd58e2ba2a3e0626a3a40267bf506e14ae563",
                    "Gateway": "",
                    "IPAddress": "10.0.1.34",
                    "IPPrefixLen": 24,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:0a:00:01:22"
                },
                "ingress": {
                    "IPAMConfig": {
                        "IPv4Address": "10.255.0.35"
                    },
                    "Links": null,
                    "Aliases": [
                        "eb8dcacc8c2f"
                    ],
                    "NetworkID": "kk3agjaa27jci0q70efx74xzv",
                    "EndpointID": "57b0f1a85aba683133adfc653e2e0fd4fff11499b459641cfbae8a46e13c8867",
                    "Gateway": "",
                    "IPAddress": "10.255.0.35",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:0a:ff:00:23"
                }
            }
        }
    }
]

我的公司正在使用Swarm的余额服务器,我注意到它们之间的数量不同。因此,服务器无法查看彼此的卷。

除此之外,我还注意到服务是在一个服务器中创建的,而容器是在另一个服务器中创建的。愿这会影响什么吗?我该怎么办?

谢谢!

1 个答案:

答案 0 :(得分:0)

有几件事:

  1. 对于命名卷,您不希望源是主机路径。这是绑定挂载。您需要在每个挂载选项的末尾添加type = volume,以明确您想要的类型,因此:synchronizationcontext
  2. 您的选项无序,请参阅顶部的--mount source=myvolumename,target=/container/path,type=volume了解顺序。您的docker service create --help需要在所有选项之后(可选CMD除外,它看起来不像您需要的那样)。示例:$LC_IMAGE:$LC_TAG通知图片排在最后。
  3. 如果您使用默认的卷驱动程序“local”,则可以在没有您期望的卷数据的节点上启动服务的容器。要修复此问题,请使用放置约束来保留特定节点上的服务,或者使用支持Swarm的共享存储卷驱动程序,例如REX-Ray
  4. 所有swarm命令都必须在管理器上完成,它将根据使用情况确定最佳放置服务任务(容器)的位置,除非您在{{{{{{{{{{{ 1}}命令。