TASK1. Docker Volume 플러그인 구성

Azure 로그인

PS C:\workspace> az login
Note, we have launched a browser for you to login. For old experience with device code, use "az login --use-device-code"
You have logged in. Now let us find all the subscriptions to which you have access...
[
  {
    "cloudName": "AzureCloud",
    "id": "24ebf866-0c20-435b-af0f-xxxxxxxxxx",
    "isDefault": true,
    "name": "Visual Studio Enterprise",
    "state": "Enabled",
    "tenantId": "075f7662-60f9-46bb-9158-xxxxxxxxx",
    "user": {
      "name": "sooabia22@sptek.co.kr",
      "type": "user"
    }
  }
]
PS C:\workspace>
PS C:\workspace>
PS C:\workspace> az account show
{
  "environmentName": "AzureCloud",
  "id": "24ebf866-0c20-435b-af0f-xxxxxxxxxx",
  "isDefault": true,
  "name": "Visual Studio Enterprise",
  "state": "Enabled",
  "tenantId": "075f7662-60f9-46bb-9158-xxxxxxxxxx",
  "user": {
    "name": "xxxxxxx@xxxxx.co.kr",
    "type": "user"
  }
}
PS C:\workspace>
PS C:\workspace>

Docker 리소스 그룹 생성

PS C:\workspace> az group create --name "rg-DockerStorage" --location westus2
{
  "id": "/subscriptions/24ebf866-0c20-435b-af0f-xxxxxxxxxx/resourceGroups/rg-DockerStorage",
  "location": "westus2",
  "managedBy": null,
  "name": "rg-DockerStorage",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null,
  "type": null
}

새 저장소 계정 생성

PS C:\workspace> az storage account create --location westus2 --name acstudy --resource-group "rg-DockerStorage" --sku Standard_LRS
{
  "accessTier": null,
  "creationTime": "2019-04-08T08:03:37.865216+00:00",
  "customDomain": null,
  "enableAzureFilesAadIntegration": null,
  "enableHttpsTrafficOnly": false,
  "encryption": {
    "keySource": "Microsoft.Storage",
    "keyVaultProperties": null,
    "services": {
      "blob": {
        "enabled": true,
        "lastEnabledTime": "2019-04-08T08:03:37.974598+00:00"
      },
      "file": {
        "enabled": true,
        "lastEnabledTime": "2019-04-08T08:03:37.974598+00:00"
      },
      "queue": null,
      "table": null
    }
  },
  "failoverInProgress": null,
  "geoReplicationStats": null,
  "id": "/subscriptions/24ebf866-0c20-435b-af0f-xxxxxxxx/resourceGroups/rg-DockerStorage/providers/Microsoft.Storage/storageAccounts/acstudy",
  "identity": null,
  "isHnsEnabled": null,
  "kind": "Storage",
  "lastGeoFailoverTime": null,
  "location": "westus2",
  "name": "acstudy",
  "networkRuleSet": {
    "bypass": "AzureServices",
    "defaultAction": "Allow",
    "ipRules": [],
    "virtualNetworkRules": []
  },
  "primaryEndpoints": {
    "blob": "https://acstudy.blob.core.windows.net/",
    "dfs": null,
    "file": "https://acstudy.file.core.windows.net/",
    "queue": "https://acstudy.queue.core.windows.net/",
    "table": "https://acstudy.table.core.windows.net/",
    "web": null
  },
  "primaryLocation": "westus2",
  "provisioningState": "Succeeded",
  "resourceGroup": "rg-DockerStorage",
  "secondaryEndpoints": null,
  "secondaryLocation": null,
  "sku": {
    "capabilities": null,
    "kind": null,
    "locations": null,
    "name": "Standard_LRS",
    "resourceType": null,
    "restrictions": null,
    "tier": "Standard"
  },
  "statusOfPrimary": "available",
  "statusOfSecondary": null,
  "tags": {},
  "type": "Microsoft.Storage/storageAccounts"
}
PS C:\workspace>

Azure 저장소 계정 확인

PS C:\workspace> az storage account list --resource-group "rg-DockerStorage" --output table
CreationTime                      EnableHttpsTrafficOnly    Kind     Location    Name     PrimaryLocation    ProvisioningState    ResourceGroup     StatusOfPrimary
--------------------------------  ------------------------  -------  ----------  -------  -----------------  -------------------  ----------------  -----------------
2019-04-08T08:03:37.865216+00:00  False                     Storage  westus2     acstudy  westus2            Succeeded            rg-DockerStorage  available
2019-04-05T04:57:01.843056+00:00  False                     Storage  westus2     sansesa  westus2            Succeeded            rg-DockerStorage  available
PS C:\workspace>

저장소 계정 KEY 목록 확인

PS C:\workspace> az storage account keys list --account-name acstudy --resource-group "rg-DockerStorage" --output table
KeyName    Permissions    Value
---------  -------------  ----------------------------------------------------------------------------------------
key1       Full           bQpSz03Yq0as81yuO1Y4BE9KsYekC/KuDK3rW93EiMzHs++v6csK0/rLfiWMxH+ot3K8W6J9Cxxxxxxxxxxx==
key2       Full           lvExSn+rOHXZeK9WVRkw/GWeqg6VlE00UmHa8D50ZB0dVi///50AFEsNlTwznmq2kRDudgtkGEuvpxxxxxxxxxx==
PS C:\workspace>

Docker machine 활성화

PS C:\workspace> docker-machine env azuredockervm | Invoke-Expression
PS C:\workspace> docker-machine ls
NAME            ACTIVE   DRIVER   STATE     URL                                     SWARM   DOCKER     ERRORS
azuredockervm   *        azure    Running   tcp://13.77.178.238:2376                        v18.09.4
localdockervm   -        hyperv   Running   tcp://[fe80::215:5dff:fe0b:7308]:2376           v18.09.4
PS C:\workspace> docker-machine ip azuredockervm
13.77.178.238
PS C:\workspace>

SSH 저장 KEY및 경로(SSHKeyPath) 확인

PS C:\workspace> docker-machine inspect azuredockervm
{
    "ConfigVersion": 3,
    "Driver": {
        "IPAddress": "",
        "MachineName": "azuredockervm",
        "SSHUser": "peadmin",
        "SSHPort": 22,
        "SSHKeyPath": "C:\\Users\\Sanse\\.docker\\machine\\machines\\azuredockervm\\id_rsa",
        "StorePath": "C:\\Users\\Sanse\\.docker\\machine",
        "SwarmMaster": false,
        "SwarmHost": "tcp://0.0.0.0:3376",
        "SwarmDiscovery": "",
        "ClientID": "",
        "ClientSecret": "",
        "Environment": "AzurePublicCloud",
        "SubscriptionID": "24ebf866-0c20-435b-af0f-xxxxxxxxxxxx",
        "ResourceGroup": "rg-DockerMachine",
        "DockerPort": 2376,
        "Location": "westus2",
        "Size": "Standard_DS2_v2",
        "Image": "Canonical:UbuntuServer:16.04.0-Lts:latest",
        "VirtualNetwork": "docker-machine-vnet",
        "SubnetName": "docker-machine",
        "SubnetPrefix": "192.168.0.0/16",
        "AvailabilitySet": "docker-machine",
        "StorageType": "Standard_LRS",
        "OpenPorts": [
            "80",
            "8080"
        ],
        "PrivateIPAddr": "",
        "UsePrivateIP": false,
        "NoPublicIP": false,
        "DNSLabel": "",
        "StaticPublicIP": true,
        "CustomDataFile": ""
    },
    "DriverName": "azure",
    "HostOptions": {
        "Driver": "",
        "Memory": 0,
        "Disk": 0,
        "EngineOptions": {
            "ArbitraryFlags": [],
            "Dns": null,
            "GraphDir": "",
            "Env": [],
            "Ipv6": false,
            "InsecureRegistry": [],
            "Labels": [],
            "LogLevel": "",
            "StorageDriver": "",
            "SelinuxEnabled": false,
            "TlsVerify": true,
            "RegistryMirror": [],
            "InstallURL": "https://get.docker.com"
        },
        "SwarmOptions": {
            "IsSwarm": false,
            "Address": "",
            "Discovery": "",
            "Agent": false,
            "Master": false,
            "Host": "tcp://0.0.0.0:3376",
            "Image": "swarm:latest",
            "Strategy": "spread",
            "Heartbeat": 0,
            "Overcommit": 0,
            "ArbitraryFlags": [],
            "ArbitraryJoinFlags": [],
            "Env": null,
            "IsExperimental": false
        },
        "AuthOptions": {
            "CertDir": "C:\\Users\\Sanse\\.docker\\machine\\certs",
            "CaCertPath": "C:\\Users\\Sanse\\.docker\\machine\\certs\\ca.pem",
            "CaPrivateKeyPath": "C:\\Users\\Sanse\\.docker\\machine\\certs\\ca-key.pem",
            "CaCertRemotePath": "",
            "ServerCertPath": "C:\\Users\\Sanse\\.docker\\machine\\machines\\azuredockervm\\server.pem",
            "ServerKeyPath": "C:\\Users\\Sanse\\.docker\\machine\\machines\\azuredockervm\\server-key.pem",
            "ClientKeyPath": "C:\\Users\\Sanse\\.docker\\machine\\certs\\key.pem",
            "ServerCertRemotePath": "",
            "ServerKeyRemotePath": "",
            "ClientCertPath": "C:\\Users\\Sanse\\.docker\\machine\\certs\\cert.pem",
            "ServerCertSANs": [],
            "StorePath": "C:\\Users\\Sanse\\.docker\\machine\\machines\\azuredockervm"
        }
    },
    "Name": "azuredockervm"
}
PS C:\workspace>

SecureCRT Public Key설정

SecureCRT 로 docker-machine 로그인

Azure File Docker 볼륨 드라이버 설정 파일 다운로드

azurefile-dockervolumedriver.defaultazurefile-dockervolumedriver.service
# Environment file for azurefile-dockervolumedriver.service
#
# AF_OPTS=--debug
# AZURE_STORAGE_BASE=core.windows.net

AZURE_STORAGE_ACCOUNT=youraccount
AZURE_STORAGE_ACCOUNT_KEY=yourkey
[Unit]
Description=Azure File Service Docker Volume Driver
Documentation=https://github.com/Azure/azurefile-dockervolumedriver/
Requires=docker.service
After=nfs-utils.service
Before=docker.service

[Service]
EnvironmentFile=/etc/default/azurefile-dockervolumedriver
ExecStart=/usr/bin/azurefile-dockervolumedriver $AF_OPTS
Restart=always
StandardOutput=syslog

[Install]
WantedBy=multi-user.target
peadmin@azuredockervm:~$ 
peadmin@azuredockervm:~$ sudo -s
root@azuredockervm:~# 
root@azuredockervm:~# wget -O azurefile-dockervolumedriver.default https://raw.githubusercontent.com/Azure/azurefile-dockervolumedriver/master/contrib/init/systemd/azurefile-dockervolumedriver.default
--2019-04-08 08:32:02--  https://raw.githubusercontent.com/Azure/azurefile-dockervolumedriver/master/contrib/init/systemd/azurefile-dockervolumedriver.default
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.52.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.52.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 187 [text/plain]
Saving to: 쁝zurefile-dockervolumedriver.default

azurefile-dockervolume 100%[============================>]     187  --.-KB/s    in 0s      

2019-04-08 08:32:02 (36.4 MB/s) - 쁝zurefile-dockervolumedriver.defaultsaved [187/187]

root@azuredockervm:~# wget -O azurefile-dockervolumedriver.service https://raw.githubusercontent.com/Azure/azurefile-dockervolumedriver/master/contrib/init/systemd/azurefile-dockervolumedriver.service
--2019-04-08 08:32:11--  https://raw.githubusercontent.com/Azure/azurefile-dockervolumedriver/master/contrib/init/systemd/azurefile-dockervolumedriver.service
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.52.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.52.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 399 [text/plain]
Saving to: 쁝zurefile-dockervolumedriver.service

azurefile-dockervolume 100%[============================>]     399  --.-KB/s    in 0s      

2019-04-08 08:32:11 (88.5 MB/s) - 쁝zurefile-dockervolumedriver.servicesaved [399/399]

root@azuredockervm:~# 

Azure File Docker 볼륨 드라이버 다운로드

root@azuredockervm:~# wget https://github.com/Azure/azurefile-dockervolumedriver/releases/download/v0.5.1/azurefile-dockervolumedriver
--2019-04-08 09:06:35--  https://github.com/Azure/azurefile-dockervolumedriver/releases/download/v0.5.1/azurefile-dockervolumedriver
Resolving github.com (github.com)... 192.30.255.113, 192.30.255.112
Connecting to github.com (github.com)|192.30.255.113|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://github-production-release-asset-2e65be.s3.amazonaws.com/43052748/1ee7d1e6-7d81-11e6-8974-23a88ac83569?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190408%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190408T090635Z&X-Amz-Expires=300&X-Amz-Signature=11d90c98645bf649154024a58956ea65b3ee9a7ef5e15089300282d1ed8924f3&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dazurefile-dockervolumedriver&response-content-type=application%2Foctet-stream [following]
--2019-04-08 09:06:35--  https://github-production-release-asset-2e65be.s3.amazonaws.com/43052748/1ee7d1e6-7d81-11e6-8974-23a88ac83569?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190408%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190408T090635Z&X-Amz-Expires=300&X-Amz-Signature=11d90c98645bf649154024a58956ea65b3ee9a7ef5e15089300282d1ed8924f3&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dazurefile-dockervolumedriver&response-content-type=application%2Foctet-stream
Resolving github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)... 52.216.98.19
Connecting to github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)|52.216.98.19|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9102400 (8.7M) [application/octet-stream]
Saving to: 쁝zurefile-dockervolumedriver

azurefile-dockervolume 100%[============================>]   8.68M  12.2MB/s    in 0.7s    

2019-04-08 09:06:36 (12.2 MB/s) - 쁝zurefile-dockervolumedriversaved [9102400/9102400]

root@azuredockervm:~# 

Azure Docker Volume Driver 설정

root@azuredockervm:~# mv azurefile-dockervolumedriver /usr/bin/
root@azuredockervm:~# chmod +x /usr/bin/azurefile-dockervolumedriver
root@azuredockervm:~# 
root@azuredockervm:~# 
root@azuredockervm:~# mv azurefile-dockervolumedriver.default /etc/default/azurefile-dockervolumedriver
root@azuredockervm:~# 
root@azuredockervm:~# 
root@azuredockervm:~# vi /etc/default/azurefile-dockervolumedriver
root@azuredockervm:~# cat /etc/default/azurefile-dockervolumedriver
# Environment file for azurefile-dockervolumedriver.service
#
# AF_OPTS=--debug
# AZURE_STORAGE_BASE=core.windows.net

AZURE_STORAGE_ACCOUNT=acstudy
AZURE_STORAGE_ACCOUNT_KEY=bQpSz03Yq0as81yuO1Y4BE9KsYekC/KuDK3rW93EiMzHs++v6csK0/rLfiWMxH+ot3K8W6J9Ct2HshtwHzhK8Q==
root@azuredockervm:~# 

root@azuredockervm:~# mv azurefile-dockervolumedriver.service /etc/systemd/system/azurefile-dockervolumedriver.service
root@azuredockervm:~# 
root@azuredockervm:~# systemctl daemon-reload
root@azuredockervm:~# systemctl enable azurefile-dockervolumedriver
Created symlink from /etc/systemd/system/multi-user.target.wants/azurefile-dockervolumedriver.service to /etc/systemd/system/azurefile-dockervolumedriver.service.
root@azuredockervm:~# 
root@azuredockervm:~# 
root@azuredockervm:~# systemctl start azurefile-dockervolumedriver
root@azuredockervm:~# systemctl status azurefile-dockervolumedriver
[0m azurefile-dockervolumedriver.service - Azure File Service Docker Volume Driver
   Loaded: loaded (/etc/systemd/system/azurefile-dockervolumedriver.service; enabled; vendor
   Active: active (running) since Mon 2019-04-08 09:44:39 UTC; 7s ago
     Docs: https://github.com/Azure/azurefile-dockervolumedriver/
 Main PID: 19921 (azurefile-docke)
    Tasks: 4
   Memory: 1.0M
      CPU: 3ms
   CGroup: /system.slice/azurefile-dockervolumedriver.service
           붴19921 /usr/bin/azurefile-dockervolumedriver

Apr 08 09:44:39 azuredockervm systemd[1]: Started Azure File Service Docker Volume Driver.

root@azuredockervm:~# 

Azure File에 Docker Volume생성

root@azuredockervm:~# docker volume create -d azurefile --name myvol -o share=myvol
myvol
root@azuredockervm:~# docker volume ls
DRIVER              VOLUME NAME
local               90ca61a3ab5b424f0592d8ea0f3f20ff5ab1bd9bb84da365ee99c5f633cc5819
local               454b4e2443b259c11fa11fd4404b86e54d324ad74448db93934c384d22e749b7
local               ec08bef2a099f4e4b64b7f2e74d80fd34f5e286b65868e50aebfe3a8f2418a47
azurefile           myvol
root@azuredockervm:~# 
root@azuredockervm:~# 
root@azuredockervm:~# 

Docker Volume을 사용하는 새 컨테이너 생성 및 샘플파일 생성

root@azuredockervm:~# docker run -it --name azurefile_con -v myvol:/data busybox
Unable to find image 'busybox:latest' locally
latest: Pulling from library/busybox
fc1a6b909f82: Pull complete 
Digest: sha256:954e1f01e80ce09d0887ff6ea10b13a812cb01932a0781d6b0cc23f743a874fd
Status: Downloaded newer image for busybox:latest
/ # cd /data/
/data # echo "Hello World!" >> azurefiledocker.txt
/data # 

Azure Portal에서 파일 확인

  • No labels
Write a comment…