- Docker Express: Running a Local SQL Server on Your M1 Mac
- Docker for M1
- Connecting via Azure Data Studio
- Creating a database
- Inserting data
- Docker получил поддержку Apple M1
- Сборка Docker-образов для MacBook M1 под Linux
- Особенности поведения Docker на MacBook M1
- Сборка образа для другой архитектуры
- Установка эмулятора (быстрый метод)
- Установка эмулятора (ручной метод)
- Сборка образов по отдельности
- Сборка при помощи docker buildx
- Особенности поведения на CI
- Кэширование сборки образов
- Я запустил Docker на MacBook Air с процессором M1. Разработчики, это для вас
- Using SQL Server on M1 based Mac with Docker
Docker Express: Running a Local SQL Server on Your M1 Mac
Now, I find myself in need for the same on my M1 Mac. The original SQL Server for Linux image has not yet been ported to the ARM64 architecture. However, I found that there’s a new database technology, targeted for AI named Azure SQL Edge. This database has been Dockerised and ported to ARM64 and thus can run on Docker for M1 on your Mac.
TL;RD; This is how to run a Docker SQL instance on M1:
Docker for M1
Docker for M1 has come a long way since late 2020, the Docker team’s effort shines in the latest RC version for ARM64, which can be found here. You will need to have this latest version (or later) installed to run the SQL container successfully. After installation, run the script mentioned above.
Connecting via Azure Data Studio
To connect via Azure Data Studio, you will need to put 127.0.0.1 as server, we’re already hosting the Docker container on port 1433, which is the default port for SQL. Use SQL Login and set the user to sa. Lastly, set the password you chose, which was MyPass@word from the example above.
Hit Connect and see if that works! If you have any issues connecting, maybe check to see if the container is actually running:
If not, try starting it manually:
Creating a database
I recommend not to use the master database and simply just create your own, run the following in a New Query window in Azure Data Studio:
This script will create a database named TestDb, if it doesn’t exist already.
After running this script, you should see that new TestDb in the list of databases:
Be sure to select the correct database in the dropdown when running any query from now on!
Inserting data
Now let us put this to the test and insert some data. The script below will create a table, insert one record and select that record from the newly created table:
That’s it! We now have a functional SQL Docker container on Apple Silicon!
Источник
Docker получил поддержку Apple M1
Один из самых популярных инструментов разработки Docker теперь поддерживает новый процессор Apple M1. Предыдущая версия Docker работала через Apple Rosetta, однако внедрение новой версии с поддержкой M1 обеспечит оптимальный запуск всего набора инструментов.
Docker стал популярным среди разработчиков, потому что он позволил относительно легко использовать контейнеры.
Публичный выпуск версии Docker Desktop для Mac на Apple Silicon в техническом предпросмотре установили 45 тысяч раз, и разработчики заявили, что приложение работает «быстрее и тише».
Apple пока выпустила только несколько версий Mac с M1, и все они являются компьютерами с достаточно низкой максимальной конфигурацией ОЗУ, поддержкой только одного внешнего монитора и меньшим количеством портов Thunderbolt, чем у высокопроизводительных машин с чипами Intel.
Новые Mac будут иметь соответствующие чипы с улучшенной производительностью и функциями. Ожидается, что чип Apple M1X появится во втором квартале этого года. Согласно утечкам, он будет производиться с использованием 5-нанометрового техпроцесса TSMC N5 и иметь 12 ядер вместо 8. Новый чип получит 128-битную ОЗУ LPDDR4X-4266 до 32 ГБ.
Как отмечают разработчики, нет причин ожидать, что версии Docker и другого ПО с поддержкой M1 будут работать хуже на чипах нового поколения.
Microsoft выпустила стабильную сборку Visual Studio Code версии 1.54 с нативной поддержкой Apple Silicon М1. Версия OpenBSD 6.9-beta уже также поддерживает чип. Adobe представила адаптированную версию Photoshop для устройств на M1. Parallels выпустила версию Parallels Desktop 16.5 с полноценной встроенной поддержкой компьютеров Mac на базе Apple M1 и Intel. Приложения Parallels Access и Parallels Toolbox стали полностью совместимы с новыми Mac. Разработчики Homebrew также выпустили версию утилиты для компьютеров на чипе M1.
Источник
Сборка Docker-образов для MacBook M1 под Linux
Мы собираем зависимости для нашего тестового окружения в Docker-образ, что оказалось очень удобно. Но недавно у нас появился разработчик с MacBook M1, и резко встал вопрос о возможности поддержки двух платформ.
Особенности поведения Docker на MacBook M1
Для начала пара слов о том, как повёл себя MacBook M1. В самом M1 предусмотрена неплохая поддержка программ, собранных для процессоров Intel (Rosetta 2). То есть большинство программ, которые собраны для процессоров Intel, запускаются на нём без проблем.
В Docker подобное поведение тоже реализовано, но несколько другим образом: Docker использует виртуальную машину для запуска образов (как минимум потому, что им нужно ядро Linux). Но в этой виртуальной машине есть поддержка исполнения бинарных файлов для архитектуры x86_64 .
В случае с MacBook M1 родной архитектурой для него будет являться aarch64 :
Сборка образа для другой архитектуры
Docker-образы мы собираем под Linux.
К счастью, под Linux можно собрать Docker-образ для другой архитектуры без особых проблем.
Для примера возьмём простой Dockerfile:
Чтобы его собрать для M1 проще всего воспользоваться BuildKit.
Для этого нужно выполнить команду вида:
Но скорее всего результат будет другим:
Для того чтобы собрать образы под другую платформу, нужно поставить эмулятор для этой платформы.
Установка эмулятора (быстрый метод)
Для установки эмулятора можно воспользоваться проектом:
Этот Docker-образ скопирует в систему qemu-user-static и зарегистрирует его для исполнения бинарных файлов соответствующей платформы.
После этого, кстати, можно будет запускать статически слинкованные исполняемые файлы от другой платформы (подобные файлы по умолчанию создаёт компилятор Go).
К сожалению, эффект от этой команды будет действовать до первой перезагрузки.
Установка эмулятора (ручной метод)
Если мы по каким-то причинам не хотим воспользоваться первым методом, то можно сделать всё это вручную.
Установка qemu-user-static
Нужно установить qemu-user-static для вашего дистрибутива, например:
Если в вашем дистрибутиве используется qemu-user-static очень старой версии, то можно скачать пакет от дистрибутива более свежей версии. У qemu-user-static нет внешних зависимостей и, к примеру, пакет от Ubuntu 21.04 (qemu version 5.2) хорошо встаёт на Ubuntu 18.04 (qemu version 2.11).
Зарегистрировать qemu-user-static в binfmt
Теоретически установки qemu-user-static должно быть достаточно. Но на некоторых дистрибутивах она не прописывается в binfmt.
Проверить работоспособность можно командой:
Я исправлял эту ситуацию по инструкции:
Сборка образов по отдельности
После того как мы научились собирать образ для другой платформы, надо научиться собирать образ для двух платформ одновременно.
Это можно сделать несколькими способами.
Для начала рассмотрим сборку образа для нескольких платформ вручную.
Проверить, что образ собрался успешно, можно командой вида:
Сборка при помощи docker buildx
С недавнего времени в Docker появилась возможность собрать образ под несколько платформ одной командой:
Что здесь происходит:
docker buildx create создаёт в DOCKER_CONFIG (по умолчанию
/.docker ) описание сборщика. Флаг —use помечает этот сборщик используемым по умолчанию (без этого его имя надо было бы протаскивать в последующие команды). Кроме конфигурационных файлов текущего пользователя эта команда не меняет и не использует ничего.
buildx inspect —bootstrap выводит информацию о сборщике. Если он не запущен, то запускает его. Сам сборщик представляет собой Docker-контейнер.
docker buildx build собственно собирает образ.
Особенности поведения на CI
При сборке на CI возникают следующие проблемы:
docker buildx create при создании контейнера по умолчанию прописывает в конфигурацию образ с DockerHub;
docker buildx inspect —bootstrap создаёт контейнер со сборщиком и подвержен гонкам;
единожды созданный сборщик используется между несколькими сборками.
Для решения этих проблем мы перенесли запуск сборщика на этап старта сборочного агента.
Таким образом при запуске агента мы выполняем команды вида:
Это запускает сборщик образов на старте агента с нужными нам параметрами.
При старте задачи на сборку мы выполняем команды вида ( DOCKER_CONFIG переопределяется на каждую сборку):
Кэширование сборки образов
В качестве бонуса при использовании BuildKit мы получаем возможность использовать внешний кэш для Docker-образов:
Особенность такого кэширования: в отличие от кэша на базе предыдущего Docker-образа, хорошо работает с Dockerfile, в которых используется несколько FROM директив.
Источник
Я запустил Docker на MacBook Air с процессором M1. Разработчики, это для вас
Привет, я лид мобильной разработĸи – iOS разработчиĸ из РосДомофон. И у меня Air на M1 в базовой ĸонфигурации, впечатлениями от которого с поделился в декабре.
Коллеги по всему миру, даже в комментариях к обзору MacBook Air на M1, уже два месяца задают один и тот же вопрос:
Что там с доĸером? Доĸер работает? Меня тольĸо доĸер интересует, если работает – буду брать. Доĸер? Доĸер! Доĸер.
Это крайне важный инструмент для разработчиков, поэтому такое требование неудивительно. А обычный Docker с сайта запустить не выйдет:
Так вот, я Docker запустил успешно. С 16 декабря у него есть специальная бета-сборĸа под ARM, просто её надо качать и ставить отдельно с этой страницы.
Есть тред на github и специальная страничĸа в доĸе доĸера для, там же есть списоĸ известных проблем.
Да, судя по доĸументации, пока что для него нужна Rosetta. Но всё-таĸи это полноценная сборĸа под M1:
С ходу я запустил пару сэмплов – всё запусĸается, alpine работает, сайтиĸи отĸрываются. Пошёл ĸ ĸоллегам, чтобы узнать, какие задачи в Docker им нужно проверить.
«Убунту подними:»
Microsoft SQL Server подними:
Пробовал всяĸо, ĸаĸ описано на хабе – не поднимается. При запусĸе выдаёт вот это:
MySQL подними:
Попробовал, нет под ARM:
А вот mysql/mysql-server есть сборĸи под arm:
И он поднимается:
Пошёл по остальным базам, ĸоторые наĸидали.
Все, что в списĸе на сĸриншоте – работают: Redis, Postgres, Mongo, Mariadb.
Docker под M1 «ест» памяти и ресурсов обыденно, по запросам. Чем больше запустишь, тем больше отожрёт. Ничего удивительного.
Вторая строчĸа – это ĸаĸ раз под виртуалĸи доĸера:
Опять же, за всё время на M1 проблем с тем, что у меня 8 ГБ оперативĸи, не было. В своп уводит, но всё оĸ. Кстати, доводил своп до 10+ ГБ и… всё работает преĸрасно, даже не почувствовал.
В целом-то и всё. Для разработĸи мне доĸер не особо нужен, но думаю этой информации достаточно для понимания ситуации. В чатах уже видел ребят на M1, ĸоторые используют доĸер для поднятия «бека» лоĸально для своих мобильных приложений.
Думаю на этом, по большей части, вопрос с доĸером заĸрыт.
Источник
Using SQL Server on M1 based Mac with Docker
In this blog, we will learn about:
- Installing Docker on M1 based Mac
- Installing alternative of SQL Server management studio i.e. Azure Data Studio
- Installing SQL Server using Docker image
- Using SQL Server in Azure Data Studio
Step 1: Download Docker for Mac M1.
You must be aware that Docker is not natively supported by M1 based Macs. Docker development team is still working on the stable version, but they had released a Tech Preview for the Developers around the globe to help them test their development quickly and they can address as many bugs that they can.
For the purpose of this tutorial, I am also going to download the same Tech Preview on my M1 based Mac and will try to run SQL Server images on this.
Go to https://docs.docker.com/docker-for-mac/apple-m1/ and download the latest preview build available on the website.
Once you download it, install the docker preview in your machine. You should be able to view the docker desktop.
Step 2: Download an IDE to run the SQL commands and perform other DB operations.
The best tool for SQL Server is SQL Server Management Studio (SSMS), but bad luck is that it is only supported on Windows OS.
Thanks to the Microsoft team, they provided an alternative to SSMS. The tool name is Azure Data Studio. We will use this tool in our M1 based Mac.
Step 3: Create a new ID on https://hub.docker.com or login using your existing ID.
Once you are logged in, just hit https://hub.docker.com/_/microsoft-azure-sql-edge and you will a docker image hosted by Microsoft with name Azure SQL Edge.
We will download this image on our local system using docker commands and then run the image in the docker container on localhost port. Once we run the image in the container, we will be able to use SQL server on our M1 based Mac.
Step 4: Download the docker image using MacOS terminal.
Open the terminal in your system and hit command: docker pull mcr.microsoft.com/azure-sql-edge
Once you hit the above command, docker will start pulling the image from online repository and download this on your local system.
You can also see the image in the Docker Desktop window as shown below.
Step 5: Once you download the image in the docker, you need to run this image within a Docker container on some active localhost port.
Use the same terminal window and hit the following command.
docker run –cap-add SYS_PTRACE -e ‘ACCEPT_EULA=1’ -e ‘MSSQL_SA_PASSWORD=Password.1’ -p 1433:1433 –name azuresqledge -d mcr.microsoft.com/azure-sql-edge
- -e belongs to environment variable.
- ACCEPT_EULA=1 is the acceptance of license agreement.
- MSSQL_SA_PASSWORD=Password.1 is the password of the SQL server user with username ‘sa’.
- -p belongs to port number which we have set to 1433.
- –name belongs to the name of the docker container that we want to create in Docker.
Once the command is successful, you can go to the container option in the docker desktop window and you will find a container running the with same name that we passed in the command.
This makes sure that SQL server is now running on our system.
Step 6: Now the next step is to use the SQL server using Azure Data Studio.
Open Azure data studio and click on “Create a Connection” option. Enter the details as shown in the screenshot below.
Fill the details as shown below.
Once you click on Connect, you will be able to see that we are able to connect to local Sql server instance.
Now, you can use new query option to write queries to generate tables, stored procedures, etc.
Источник