Distribuera Azure SQL Edge med Docker

I den här snabbstarten använder du Docker för att hämta och köra Azure SQL Edge-containeravbildningen. Anslut sedan med sqlcmd för att skapa din första databas och köra frågor.

Den här avbildningen består av Azure SQL Edge baserat på Ubuntu 18.04. Det kan användas med Docker Engine 1.8+ på Linux eller på Docker för Mac/Windows.

Förutsättningar

  • Docker Engine 1.8+ på alla Linux-distributioner som stöds eller Docker för Mac/Windows. Mer information finns i Installera Docker. Eftersom Azure SQL Edge-avbildningarna baseras på Ubuntu 18.04 rekommenderar vi att du använder en Docker-värd för Ubuntu 18.04.
  • Docker overlay2-lagringsdrivrutin. Det här är standardinställningen för de flesta användare. Om du upptäcker att du inte använder den här lagringsprovidern och behöver ändra den kan du läsa anvisningarna och varningarna i Docker-dokumentationen för att konfigurera overlay2.
  • Minst 10 GB diskutrymme.
  • Minst 1 GB RAM-minne.
  • Maskinvarukrav för Azure SQL Edge.

Hämta och köra containeravbildningen

Innan du börjar med följande steg kontrollerar du att du har valt önskat gränssnitt (bash, PowerShell eller cmd) överst i den här artikeln.

  1. Hämta Azure SQL Edge-containeravbildningen från Microsoft Container Registry.

    • Hämta Azure SQL Edge-containeravbildningen
      sudo docker pull mcr.microsoft.com/azure-sql-edge:latest 
      

Anteckning

För bash-kommandona i den här sudo artikeln används. På macOS och Windows sudo kanske inte krävs. Om du inte vill använda för att köra Docker i Linux kan du konfigurera en sudo Docker-grupp och lägga till användare i den gruppen. Mer information finns i Stegen efter installationen för Linux.

Föregående kommando hämtar de senaste Azure SQL Edge-containeravbildningarna. Om du vill se alla tillgängliga avbildningar kan du gå till dockerhubben azure-sql-egde.

  1. Om du vill köra containeravbildningen med Docker kan du använda följande kommando från ett bash-gränssnitt (Linux/macOS) eller en upphöjd PowerShell-kommandotolk.

    • Starta en Azure SQL Edge-instans som körs som Developer Edition

      sudo docker run --cap-add SYS_PTRACE -e 'ACCEPT_EULA=1' -e 'MSSQL_SA_PASSWORD=yourStrong(!)Password' -p 1433:1433 --name azuresqledge -d mcr.microsoft.com/azure-sql-edge
      
    • Starta en Azure SQL Edge-instans som körs Premium utgåva

      sudo docker run --cap-add SYS_PTRACE -e 'ACCEPT_EULA=1' -e 'MSSQL_SA_PASSWORD=yourStrong(!)Password' -e 'MSSQL_PID=Premium' -p 1433:1433 --name azuresqledge -d mcr.microsoft.com/azure-sql-edge
      

    Anteckning

    Om du använder PowerShell på Windows dessa kommandon använder du dubbla citattecken i stället för enkla citattecken.

    Anteckning

    Lösenordet bör följa Microsoft SQL Database Engine-standardlösenordsprincipen, annars kan containern inte konfigurera SQL och slutar fungera. Som standard måste lösenordet vara minst 8 tecken långt och innehålla tecken från tre av följande fyra uppsättningar: Versaler, Gemener, Base 10-siffror och Symboler. Du kan granska felloggen genom att köra kommandot docker logs.

    Följande tabell innehåller en beskrivning av parametrarna i föregående docker run exempel:

    Parameter Beskrivning
    -e "ACCEPT_EULA=Y" Ställ in ACCEPT_EULA variabeln till val annat värde för att bekräfta att du godkänner licensavtalet för slutanvändare. Obligatorisk inställning för Azure SQL Edge-avbildningen.
    -e "MSSQL_SA_PASSWORD=yourStrong(!) Lösenord" Ange ett eget starkt lösenord som är minst 8 tecken och som uppfyller kraven för Azure SQL Edge-lösenord. Obligatorisk inställning för Azure SQL Edge-avbildningen.
    -p 1433:1433 Mappa en TCP-port i värdmiljön (första värdet) med en TCP-port i containern (andra värdet). I det här exemplet lyssnar Azure SQL Edge på TCP 1433 i containern och den exponeras för porten 1433 på värden.
    --name azuresqledge Ange ett anpassat namn för containern i stället för ett slumpmässigt genererat namn. Om du kör fler än en container kan du inte återanvända samma namn.
    -d Kör containern i bakgrunden (daemon)

    En fullständig lista över alla Azure SQL Edge-miljövariabler finns i Konfigurera Azure SQL Edge med miljövariabler. Du kan också använda en mssql.conf-fil för att konfigurera Azure SQL Edge-containrar.

  2. Om du vill visa Dina Docker-containrar använder du docker ps kommandot .

     sudo docker ps -a
    
  3. Om statuskolumnen visar statusen Upp körs Azure SQL Edge i containern och lyssnar på porten som anges i kolumnen PORTAR. Om kolumnen STATUS för Azure SQL Edge-containern visar Avsluten kan du läsa felsökningsavsnittet i dokumentationen för Azure SQL Edge.

    Parametern -h (värdnamn) är också användbar, men den används inte i den här självstudien för enkelhetens skull. Detta ändrar det interna namnet på containern till ett anpassat värde. Det här är det namn som returneras i följande Transact-SQL-fråga:

    SELECT @@SERVERNAME,
        SERVERPROPERTY('ComputerNamePhysicalNetBIOS'),
        SERVERPROPERTY('MachineName'),
        SERVERPROPERTY('ServerName')
    

    Att -h ange och till samma värde är ett bra sätt att enkelt identifiera --name målcontainern.

  4. Som ett sista steg ändrar du sa-lösenordet eftersom visas i SA_PASSWORD ps -eax utdata och lagras i miljövariabeln med samma namn. Se stegen nedan.

Ändra SA-lösenordet

SA-kontot är en systemadministratör på Azure SQL Edge-instansen som skapas under installationen. När du har skapat Azure SQL Edge-containern kan du identifiera MSSQL_SA_PASSWORD miljövariabeln som du angav genom echo $SA_PASSWORD att köra i containern. Av säkerhetsskäl kan du ändra ditt SA-lösenord.

  1. Välj ett starkt lösenord som ska användas för SA-användaren.

  2. Använd docker exec för att köra sqlcmd för att ändra lösenordet med hjälp av Transact-SQL. I följande exempel ersätter du det gamla <YourStrong!Passw0rd> lösenordet, , och det nya <YourNewStrong!Passw0rd> lösenordet, , med dina egna lösenordsvärden.

    sudo docker exec -it azuresqledge /opt/mssql-tools/bin/sqlcmd \
       -S localhost -U SA -P "<YourStrong@Passw0rd>" \
       -Q 'ALTER LOGIN SA WITH PASSWORD="<YourNewStrong@Passw0rd>"'
    

Anslut till Azure SQL Edge

Följande steg använder Azure SQL Edge-kommandoradsverktyget sqlcmd i containern för att ansluta till Azure SQL Edge.

Anteckning

sqlcmd-verktyget är inte tillgängligt i ARM64-versionen av SQL Edge-containrar.

  1. Använd kommandot docker exec -it för att starta ett interaktivt bash-gränssnitt i containern som körs. I följande exempel är azuresqledge namnet som anges av --name parametern när du skapade containern.

    sudo docker exec -it azuresqledge "bash"
    
  2. När du är i containern ansluter du lokalt med sqlcmd. Sqlcmd finns inte i sökvägen som standard, så du måste ange den fullständiga sökvägen.

    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "<YourNewStrong@Passw0rd>"
    

    Tips

    Du kan utelämna lösenordet på kommandoraden för att uppmanas att ange det.

  3. Om det lyckas bör du gå till en sqlcmd-kommandotolk: 1> .

Skapa och fråga efter data

Följande avsnitt beskriver hur du använder sqlcmd och Transact-SQL för att skapa en ny databas, lägga till data och köra en enkel fråga.

Skapa en ny databas

Följande steg skapar en ny databas med namnet TestDB .

  1. Från sqlcmd-kommandotolken klistrar du in följande Transact-SQL för att skapa en testdatabas:

    CREATE DATABASE TestDB
    Go
    
  2. På nästa rad skriver du en fråga för att returnera namnet på alla databaser på servern:

    SELECT Name from sys.Databases
    Go
    

Infoga data

Skapa sedan en ny tabell, Inventory , och infoga två nya rader.

  1. Från kommandotolken sqlcmd växlar du kontexten till den nya TestDB databasen:

    USE TestDB
    
  2. Skapa en ny tabell med namnet Inventory :

    CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT)
    
  3. Infoga data i den nya tabellen:

    INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154);
    
  4. Skriv GO för att köra föregående kommandon:

    GO
    

Välj data

Kör nu en fråga för att returnera data från Inventory tabellen.

  1. Från sqlcmd-kommandotolken anger du en fråga som returnerar rader från tabellen Inventory där kvantiteten är större än 152:

    SELECT * FROM Inventory WHERE quantity > 152;
    
  2. Kör kommandot:

    GO
    

Avsluta sqlcmd-kommandotolken

  1. Om du vill avsluta sqlcmd-sessionen skriver du QUIT :

    QUIT
    
  2. Om du vill avsluta den interaktiva kommandotolken i containern skriver du exit . Containern fortsätter att köras när du har avslutat det interaktiva bash-gränssnittet.

Anslut utanför containern

Du kan också ansluta till Azure SQL Edge-instansen på din Docker-dator från ett externt Linux-, Windows Windows- eller macOS-verktyg som stöder SQL anslutningar. Mer information om hur du ansluter till en SQL Edge-container utifrån finns i Anslut fråga Azure SQL Edge.

Ta bort containern

Om du vill ta bort Azure SQL Edge-containern som används i den här självstudien kör du följande kommandon:

sudo docker stop azuresqledge
sudo docker rm azuresqledge

Varning

Om du stoppar och tar bort en container permanent tas alla Azure SQL Edge-data i containern bort permanent. Om du behöver bevara dina data kan du skapa och kopiera en säkerhetskopia från containern eller använda en containerdatapersistenceteknik.

Nästa steg