Menerapkan Azure SQL Edge dengan Docker

Penting

Azure SQL Edge tidak lagi mendukung platform ARM64.

Dalam mulai cepat ini, Anda menggunakan Docker untuk menarik dan menjalankan citra kontainer Azure SQL Edge. Kemudian terhubung dengan sqlcmd untuk membuat database pertama Anda dan menjalankan kueri.

Gambar ini terdiri dari SQL Edge berdasarkan Ubuntu 18.04. Ini dapat digunakan dengan Docker Engine 1.8+ di Linux.

kontainer Azure SQL Edge tidak didukung pada platform berikut untuk beban kerja produksi:

  • Windows
  • macOS
  • Azure IoT Edge untuk Linux di Windows (EFLOW)

Prasyarat

  • Docker Engine 1.8+ pada distribusi Linux yang didukung. Untuk informasi selengkapnya, lihat Menginstal Docker. Karena gambar SQL Edge didasarkan pada Ubuntu 18.04, kami sarankan Anda menggunakan host Docker Ubuntu 18.04.
  • Docker overlay2 driver penyimpanan. Ini adalah default untuk sebagian besar pengguna. Jika Anda menemukan bahwa Anda tidak menggunakan penyedia penyimpanan ini dan perlu mengubahnya, lihat instruksi dan peringatan dalam dokumentasi Docker untuk mengonfigurasi overlay2.
  • Minimal 10 GB ruang disk.
  • Minimal 1 GB RAM.
  • Persyaratan perangkat keras untuk Azure SQL Edge.

Catatan

Untuk perintah bash dalam artikel ini sudo digunakan. Jika Anda tidak ingin menggunakan sudo untuk menjalankan Docker, Anda dapat mengonfigurasi grup Docker dan menambahkan pengguna ke grup tersebut. Untuk informasi selengkapnya, lihat Langkah-langkah pasca-pemasangan untuk Linux.

Tarik dan jalankan gambar kontainer

  1. Tarik gambar kontainer Azure SQL Edge dari Microsoft Container Registry.

    sudo docker pull mcr.microsoft.com/azure-sql-edge:latest
    

    Perintah sebelumnya menarik gambar kontainer SQL Edge terbaru. Untuk melihat semua gambar yang tersedia, lihat halaman hub Docker azure-sql-edge.

  2. Untuk menjalankan gambar kontainer dengan Docker, gunakan perintah berikut dari shell bash:

    • Mulai instans Azure SQL Edge yang berjalan sebagai edisi Pengembang:

      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
      
    • Mulai instans Azure SQL Edge yang berjalan sebagai edisi Premium:

      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
      

    Penting

    Kata sandi harus mengikuti kebijakan kata sandi default Microsoft SQL Database Engine, jika tidak, kontainer tidak dapat menyiapkan mesin SQL Database dan akan berhenti berfungsi. Secara default, panjang kata sandi harus minimal 8 karakter dan berisi karakter dari tiga dari empat set berikut: huruf besar, huruf kecil, digit dasar-10, dan simbol. Anda dapat memeriksa log kesalahan dengan menjalankan perintah log docker.

    Tabel berikut ini menyediakan deskripsi parameter dalam contoh sebelumnya docker run :

    Parameter Deskripsi
    -e "ACCEPT_EULA=Y" Tetapkan variabel ACCEPT_EULA ke nilai apa pun untuk mengonfirmasi penerimaan Anda atas Perjanjian Lisensi Pengguna Akhir. Pengaturan yang diperlukan untuk gambar SQL Edge.
    -e "MSSQL_SA_PASSWORD=yourStrong(!) password" Tentukan kata sandi kuat Anda sendiri yang setidaknya delapan karakter dan memenuhi persyaratan kata sandi Azure SQL Edge. Pengaturan yang diperlukan untuk gambar SQL Edge.
    -p 1433:1433 Petakan port TCP pada lingkungan host (nilai pertama) dengan port TCP dalam kontainer (nilai kedua). Dalam contoh ini, SQL Edge mendengarkan TCP 1433 dalam kontainer dan ini diekspos ke port, 1433, pada host.
    --name azuresqledge Menentukan nama sesuai pesanan untuk kontainer daripada yang dihasilkan secara acak. Jika Anda menjalankan lebih dari satu kontainer, Anda tidak dapat menggunakan kembali nama yang sama ini.
    -d Jalankan kontainer di latar belakang (daemon)

    Untuk daftar lengkap semua variabel lingkungan Azure SQL Edge, lihat Mengonfigurasi Azure SQL Edge dengan Variabel Lingkungan. Anda juga dapat menggunakan file mssql.conf untuk mengonfigurasi kontainer SQL Edge.

  3. Untuk melihat kontainer Docker, gunakan docker ps perintah.

    sudo docker ps -a
    
  4. Jika kolom STATUS memperlihatkan status Naik, maka SQL Edge berjalan dalam kontainer dan mendengarkan pada port yang ditentukan di kolom PORTS . Jika kolom STATUS untuk kontainer SQL Edge Anda memperlihatkan Keluar, lihat bagian Pemecahan masalah dokumentasi Azure SQL Edge.

    Parameter -h (nama host) juga berguna, tetapi tidak digunakan dalam tutorial ini untuk kesederhanaan. Ini mengubah nama internal kontainer menjadi nilai yang sesuai pesanan. Ini adalah nama yang dikembalikan dalam kueri Transact-SQL berikut:

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

    Pengaturan -h dan --name nilai yang sama adalah cara yang baik untuk mengidentifikasi target kontainer dengan mudah.

  5. Sebagai langkah terakhir, ubah kata sandi SA Anda karena MSSQL_SA_PASSWORD terlihat dalam output ps -eax dan disimpan dalam variabel lingkungan dengan nama yang sama. Lihat langkah-langkah berikut.

Mengubah kata sandi SA

Akun SA adalah administrator sistem pada instans Azure SQL Edge yang dibuat selama pengaturan. Setelah Anda membuat kontainer SQL Edge, MSSQL_SA_PASSWORD variabel lingkungan yang Anda tentukan dapat ditemukan dengan menjalankan echo $MSSQL_SA_PASSWORD dalam kontainer. Untuk tujuan keamanan, ubah kata sandi SA Anda.

  1. Pilih kata sandi yang kuat untuk digunakan bagi pengguna SA.

  2. Gunakan docker exec untuk menjalankan sqlcmduntuk mengubah kata sandi gunakan Transact-SQL. Dalam contoh berikut, ganti kata sandi lama, <YourStrong!Passw0rd>, dan kata sandi baru, <YourNewStrong!Passw0rd>, dengan nilai kata sandi Anda sendiri.

    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>"'
    

Menyambungkan ke Azure SQL Edge

Langkah-langkah berikut menggunakan alat baris perintah Azure SQL Edge, sqlcmd, di dalam kontainer untuk menyambungkan ke SQL Edge.

  1. Menggunakan docker exec -it perintah untuk memulai shell bash interaktif di dalam kontainer Anda yang sedang berjalan. Dalam contoh berikut, azuresqledge adalah nama yang ditentukan oleh --name parameter saat Anda membuat kontainer.

    sudo docker exec -it azuresqledge "bash"
    
  2. Setelah berada di dalam kontainer, sambungkan secara lokal dengan sqlcmd. sqlcmd tidak berada di jalur secara default, jadi Anda harus menentukan jalur lengkapnya.

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

    Tip

    Anda dapat menghilangkan kata sandi pada baris perintah yang akan diminta untuk dimasukkan.

  3. Jika berhasil, Anda harus sampai ke perintah prompt sqlcmd : 1>.

Buat dan kueri data

Bagian berikut ini memandu Anda menggunakan sqlcmd dan Transact-SQL untuk membuat database baru, menambahkan data, dan menjalankan kueri sederhana.

Buat database baru

Langkah-langkah berikut membuat database baru bernama TestDB.

  1. Dari perintah prompt sqlcmd, tempelkan perintah Transact-SQL berikut ini untuk membuat database pengujian:

    CREATE DATABASE TestDB;
    GO
    
  2. Pada baris berikutnya, tulis kueri untuk mengembalikan nama semua database di server Anda:

    SELECT name from sys.databases;
    GO
    

Menyisipkan data

Selanjutnya buat tabel baru, Inventory, dan sisipkan dua baris baru.

  1. Dari perintah prompt sqlcmd, alihkan konteks ke TestDB database baru:

    USE TestDB;
    
  2. Buat tabel baru bernama Inventory :

    CREATE TABLE Inventory (
        id INT,
        name NVARCHAR(50),
        quantity INT
    );
    
  3. Sisipkan data ke dalam tabel baru:

    INSERT INTO Inventory
    VALUES (1, 'banana', 150);
    
    INSERT INTO Inventory
    VALUES (2, 'orange', 154);
    
  4. Ketik GO untuk menjalankan perintah sebelumnya:

    GO
    

Pilih data

Sekarang, jalankan kueri untuk mengembalikan data dari Inventory tabel.

  1. Dari perintah prompt sqlcmd, masukkan kueri yang mengembalikan baris dari Inventory tabel di mana jumlahnya lebih besar dari 152:

    SELECT * FROM Inventory WHERE quantity > 152;
    
  2. Jalankan perintah:

    GO
    

Keluar dari perintah prompt sqlcmd

  1. Untuk mengakhiri sesi sqlcmd Anda, ketik QUIT:

    QUIT
    
  2. Untuk keluar dari prompt perintah interaktif di kontainer Anda, ketik exit. Kontainer Anda terus berjalan setelah Anda keluar dari shell bash interaktif.

Sambungkan dari luar kontainer

Anda juga dapat terhubung ke instans SQL Edge di komputer Docker Anda dari alat Linux, Windows, atau macOS eksternal apa pun yang mendukung koneksi SQL. Untuk informasi selengkapnya tentang menyambungkan ke kontainer SQL Edge dari luar, lihat Menyambungkan dan Mengkueri Azure SQL Edge.

Menghapus kontainer Anda

Jika Anda ingin menghapus kontainer SQL Edge yang digunakan dalam tutorial ini, jalankan perintah berikut:

sudo docker stop azuresqledge
sudo docker rm azuresqledge

Peringatan

Menghentikan dan menghapus kontainer secara permanen menghapus data SQL Edge apa pun dalam kontainer. Jika Anda perlu menyimpan data Anda, buat dan salin file cadangan dari kontainer atau gunakan teknik persistensi data kontainer.

Langkah berikutnya