- Install Docker Desktop on Windows
- System requirements
- WSL 2 backend
- Hyper-V backend and Windows containers
- What’s included in the installer
- About Windows containers
- Install Docker Desktop on Windows
- Start Docker Desktop
- Automatic updates
- Uninstall Docker Desktop
- Install Docker Compose
- Prerequisites
- Install Compose
- Install Compose on macOS
- Install Compose on Windows desktop systems
- Install Compose on Windows Server
- Install Compose on Linux systems
- Alternative install options
- Install using pip
- Install as a container
- Install pre-release builds
- Upgrading
- Uninstallation
- Использование Docker Compose Use Docker Compose
- Установка Docker Compose Install Docker Compose
- Создание файла Compose Create the compose file
- Определение службы приложений Define the App Service
- Определение службы MySQL Define the MySQL service
- Запуск стека приложений Run the application stack
- Просмотр стека приложений в расширении Docker See the app stack in the Docker extension
- Завершение работы Tear it all down
- Резюме Recap
- Дальнейшие действия Next steps
Install Docker Desktop on Windows
Estimated reading time: 6 minutes
Welcome to Docker Desktop for Windows. This page contains information about Docker Desktop for Windows system requirements, download URL, installation instructions, and automatic updates.
By downloading Docker Desktop, you agree to the terms of the Docker Software End User License Agreement and the Docker Data Processing Agreement.
System requirements
Your Windows machine must meet the following requirements to successfully install Docker Desktop.
WSL 2 backend
- Windows 10 64-bit: Home, Pro, Enterprise, or Education, version 1903 (Build 18362 or higher).
- Enable the WSL 2 feature on Windows. For detailed instructions, refer to the Microsoft documentation.
The following hardware prerequisites are required to successfully run WSL 2 on Windows 10:
- 64-bit processor with Second Level Address Translation (SLAT)
- 4GB system RAM
- BIOS-level hardware virtualization support must be enabled in the BIOS settings. For more information, see Virtualization.
Hyper-V backend and Windows containers
Windows 10 64-bit: Pro, Enterprise, or Education (Build 17134 or higher).
The following hardware prerequisites are required to successfully run Client Hyper-V on Windows 10:
- 64 bit processor with Second Level Address Translation (SLAT)
- 4GB system RAM
- BIOS-level hardware virtualization support must be enabled in the BIOS settings. For more information, see Virtualization.
Docker supports Docker Desktop on Windows for those versions of Windows 10 that are still within Microsoft’s servicing timeline.
What’s included in the installer
The Docker Desktop installation includes Docker Engine, Docker CLI client, Docker Compose, Notary, Kubernetes, and Credential Helper.
Containers and images created with Docker Desktop are shared between all user accounts on machines where it is installed. This is because all Windows accounts use the same VM to build and run containers. Note that it is not possible to share containers and images between user accounts when using the Docker Desktop WSL 2 backend.
Nested virtualization scenarios, such as running Docker Desktop on a VMWare or Parallels instance might work, but there are no guarantees. For more information, see Running Docker Desktop in nested virtualization scenarios.
About Windows containers
Looking for information on using Windows containers?
- Switch between Windows and Linux containers describes how you can toggle between Linux and Windows containers in Docker Desktop and points you to the tutorial mentioned above.
- Getting Started with Windows Containers (Lab) provides a tutorial on how to set up and run Windows containers on Windows 10, Windows Server 2016 and Windows Server 2019. It shows you how to use a MusicStore application with Windows containers.
- Docker Container Platform for Windows articles and blog posts on the Docker website.
Install Docker Desktop on Windows
Double-click Docker Desktop Installer.exe to run the installer.
If you haven’t already downloaded the installer ( Docker Desktop Installer.exe ), you can get it from Docker Hub. It typically downloads to your Downloads folder, or you can run it from the recent downloads bar at the bottom of your web browser.
When prompted, ensure the Enable Hyper-V Windows Features or the Install required Windows components for WSL 2 option is selected on the Configuration page.
Follow the instructions on the installation wizard to authorize the installer and proceed with the install.
When the installation is successful, click Close to complete the installation process.
If your admin account is different to your user account, you must add the user to the docker-users group. Run Computer Management as an administrator and navigate to Local Users and Groups > Groups > docker-users. Right-click to add the user to the group. Log out and log back in for the changes to take effect.
Start Docker Desktop
Docker Desktop does not start automatically after installation. To start Docker Desktop, search for Docker, and select Docker Desktop in the search results.
When the whale icon in the status bar stays steady, Docker Desktop is up-and-running, and is accessible from any terminal window.
If the whale icon is hidden in the Notifications area, click the up arrow on the taskbar to show it. To learn more, see Docker Settings.
When the initialization is complete, Docker Desktop launches the onboarding tutorial. The tutorial includes a simple exercise to build an example Docker image, run it as a container, push and save the image to Docker Hub.
Congratulations! You are now successfully running Docker Desktop on Windows.
If you would like to rerun the tutorial, go to the Docker Desktop menu and select Learn.
Automatic updates
Starting with Docker Desktop 3.0.0, updates to Docker Desktop will be available automatically as delta updates from the previous version.
When an update is available, Docker Desktop displays an icon to indicate the availability of a newer version. Whenever convenient, you can start the download of the update in the background.
When the download finishes, all you need to do is to click Update and restart from the Docker menu. This installs the latest update and restarts Docker Desktop for the changes to take effect.
Uninstall Docker Desktop
To uninstall Docker Desktop from your Windows machine:
- From the Windows Start menu, select Settings >Apps >Apps & features.
- Select Docker Desktop from the Apps & features list and then select Uninstall.
- Click Uninstall to confirm your selection.
Uninstalling Docker Desktop destroys Docker containers, images, volumes, and other Docker related data local to the machine, and removes the files generated by the application. Refer to the back up and restore data section to learn how to preserve important data before uninstalling.
Install Docker Compose
Estimated reading time: 7 minutes
You can run Compose on macOS, Windows, and 64-bit Linux.
Prerequisites
Docker Compose relies on Docker Engine for any meaningful work, so make sure you have Docker Engine installed either locally or remote, depending on your setup.
On desktop systems like Docker Desktop for Mac and Windows, Docker Compose is included as part of those desktop installs.
On Linux systems, first install the Docker Engine for your OS as described on the Get Docker page, then come back here for instructions on installing Compose on Linux systems.
To run Compose as a non-root user, see Manage Docker as a non-root user.
Install Compose
Follow the instructions below to install Compose on Mac, Windows, Windows Server 2016, or Linux systems, or find out about alternatives like using the pip Python package manager or installing Compose as a container.
The instructions below outline installation of the current stable release (v1.29.1) of Compose. To install a different version of Compose, replace the given release number with the one that you want. Compose releases are also listed and available for direct download on the Compose repository release page on GitHub. To install a pre-release of Compose, refer to the install pre-release builds section.
Install Compose on macOS
Docker Desktop for Mac includes Compose along with other Docker apps, so Mac users do not need to install Compose separately. For installation instructions, see Install Docker Desktop on Mac.
Install Compose on Windows desktop systems
Docker Desktop for Windows includes Compose along with other Docker apps, so most Windows users do not need to install Compose separately. For install instructions, see Install Docker Desktop on Windows.
If you are running the Docker daemon and client directly on Microsoft Windows Server, follow the instructions in the Windows Server tab.
Install Compose on Windows Server
Follow these instructions if you are running the Docker daemon and client directly on Microsoft Windows Server and want to install Docker Compose.
Start an “elevated” PowerShell (run it as administrator). Search for PowerShell, right-click, and choose Run as administrator. When asked if you want to allow this app to make changes to your device, click Yes.
In PowerShell, since GitHub now requires TLS1.2, run the following:
Then run the following command to download the current stable release of Compose (v1.29.1):
Note: On Windows Server 2019, you can add the Compose executable to $Env:ProgramFiles\Docker . Because this directory is registered in the system PATH , you can run the docker-compose —version command on the subsequent step with no additional configuration.
Test the installation.
Install Compose on Linux systems
On Linux, you can download the Docker Compose binary from the Compose repository release page on GitHub. Follow the instructions from the link, which involve running the curl command in your terminal to download the binaries. These step-by-step instructions are also included below.
For alpine , the following dependency packages are needed: py-pip , python3-dev , libffi-dev , openssl-dev , gcc , libc-dev , rust , cargo and make .
Run this command to download the current stable release of Docker Compose:
To install a different version of Compose, substitute 1.29.1 with the version of Compose you want to use.
If you have problems installing with curl , see Alternative Install Options tab above.
Apply executable permissions to the binary:
Note: If the command docker-compose fails after installation, check your path. You can also create a symbolic link to /usr/bin or any other directory in your path.
Optionally, install command completion for the bash and zsh shell.
Test the installation.
Alternative install options
Install using pip
For alpine , the following dependency packages are needed: py-pip , python3-dev , libffi-dev , openssl-dev , gcc , libc-dev , rust , cargo , and make .
Compose can be installed from pypi using pip . If you install using pip , we recommend that you use a virtualenv because many operating systems have python system packages that conflict with docker-compose dependencies. See the virtualenv tutorial to get started.
If you are not using virtualenv,
pip version 6.0 or greater is required.
Install as a container
Compose can also be run inside a container, from a small bash script wrapper. To install compose as a container run this command:
Install pre-release builds
If you’re interested in trying out a pre-release build, you can download release candidates from the Compose repository release page on GitHub. Follow the instructions from the link, which involves running the curl command in your terminal to download the binaries.
Pre-releases built from the “master” branch are also available for download at https://dl.bintray.com/docker-compose/master/.
Pre-release builds allow you to try out new features before they are released, but may be less stable.
Upgrading
If you’re upgrading from Compose 1.2 or earlier, remove or migrate your existing containers after upgrading Compose. This is because, as of version 1.3, Compose uses Docker labels to keep track of containers, and your containers need to be recreated to add the labels.
If Compose detects containers that were created without labels, it refuses to run, so that you don’t end up with two sets of them. If you want to keep using your existing containers (for example, because they have data volumes you want to preserve), you can use Compose 1.5.x to migrate them with the following command:
Alternatively, if you’re not worried about keeping them, you can remove them. Compose just creates new ones.
Uninstallation
To uninstall Docker Compose if you installed using curl :
To uninstall Docker Compose if you installed using pip :
Got a “Permission denied” error?
If you get a “Permission denied” error using either of the above methods, you probably do not have the proper permissions to remove docker-compose . To force the removal, prepend sudo to either of the above commands and run again.
Использование Docker Compose Use Docker Compose
Docker Compose — это средство, разработанное для помощи в определении и совместном использовании многоконтейнерных приложений. Docker Compose is a tool that was developed to help define and share multi-container applications. С помощью средства Compose можно создать файл YAML для определения служб и с помощью одной команды запускать и останавливать все, что нужно. With Compose, you can create a YAML file to define the services and with a single command, can spin everything up or tear it all down.
Большим преимуществом использования Compose является то, что можно определить стек приложения в файле, сохранить его в корне репозитория проекта (теперь поддерживается управление версиями) и легко предоставить другому пользователю возможность участвовать в проекте. The big advantage of using Compose is you can define your application stack in a file, keep it at the root of your project repo (it’s now version controlled), and easily enable someone else to contribute to your project. Другому пользователю достаточно будет только клонировать репозиторий и начать создание приложения. Someone would only need to clone your repo and start the compose app. Фактически в GitHub и GitLab можно увидеть достаточно много проектов, использующих эту возможность. In fact, you might see quite a few projects on GitHub/GitLab doing exactly this now.
С чего же начать работу? So, how do you get started?
Установка Docker Compose Install Docker Compose
Если вы установили Docker Desktop для Windows или Mac, то у вас уже есть Docker Compose. If you installed Docker Desktop for either Windows or Mac, you already have Docker Compose! В экземплярах «Play-with-Docker» уже установлен Docker Compose. Play-with-Docker instances already have Docker Compose installed as well. Если вы используете компьютер Linux, необходимо установить Docker Compose с помощью приведенных здесь инструкций. If you are on a Linux machine, you will need to install Docker Compose using the instructions here.
После установки вы сможете запустить следующую команду и просмотреть сведения о версии. After installation, you should be able to run the following and see version information.
Создание файла Compose Create the compose file
В корне проекта приложения создайте файл с именем docker-compose.yml . At the root of the app project, create a file named docker-compose.yml .
Написание файла Compose начнем с определения версии схемы. In the compose file, we’ll start off by defining the schema version. В большинстве случаев лучше использовать последнюю поддерживаемую версию. In most cases, it’s best to use the latest supported version. Текущие версии схемы и матрицу совместимости см. в справочнике по файлу Compose. You can look at the Compose file reference for the current schema versions and the compatibility matrix.
Затем определим список служб (или контейнеров), которые требуется использовать как часть приложения. Next, define the list of services (or containers) you want to run as part of your application.
Теперь приступим к переносу службы в файл Compose. And now, you’ll start migrating a service at a time into the compose file.
Определение службы приложений Define the App Service
Напомним, что эту команду вы использовали для определения контейнера приложения (замените в Windows PowerShell символы \ на символы ` ). To remember, this was the command you used to define your app container (replace the \ characters with ` in Windows PowerShell).
Сначала определите запись службы и образ для контейнера. First, define the service entry and the image for the container. Для службы можно выбрать любое имя. You can pick any name for the service. Имя будет автоматически преобразовано в сетевой псевдоним, что будет полезно при определении службы MySQL. The name will automatically become a network alias, which will be useful when defining the MySQL service.
Как правило, команда будет похожа на определение image , хотя для упорядочивания нет требований. Typically, you’ll see the command close to the image definition, although there is no requirement on ordering. Итак, добавьте это в файл. So, go ahead and move that into the file.
Перенесите часть команды -p 3000:3000 , определив параметры ports службы. Migrate the -p 3000:3000 part of the command by defining the ports for the service. Здесь мы будем использовать короткий синтаксис, но также доступен более подробный длинный синтаксис. You’ll use the short syntax here, but there is also a more verbose long syntax available as well.
Затем перенесите рабочий каталог ( -w /app ) и сопоставление томов ( -v $
Одним из преимуществ определений томов Docker Compose является использование относительных путей из текущего каталога. One advantage of Docker Compose volume definitions is you can use relative paths from the current directory.
Наконец, перенесите определения переменных среды с помощью ключа environment . Finally, migrate the environment variable definitions using the environment key.
Определение службы MySQL Define the MySQL service
Теперь пора определить службу MySQL. Now, it’s time to define the MySQL service. Для этого контейнера использовалась следующая команда (замените в Windows PowerShell символы \ на символы ` ). The command that you used for that container was the following (replace the \ characters with ` in Windows PowerShell):
Сначала определите новую службу и назовите ее mysql , чтобы она автоматически получила сетевой псевдоним. First, define the new service and name it mysql so it automatically gets the network alias. Укажите также используемый образ. Specify the image to use as well.
Затем определите сопоставление томов. Next, define the volume mapping. При запуске контейнера с помощью команды docker run именованный том создавался автоматически. When you ran the container with docker run , the named volume was created automatically. Однако это не происходит при запуске через Compose. However, that doesn’t happen when running with Compose. Необходимо определить том в разделе верхнего уровня volumes: , а затем указать точку подключения в конфигурации службы. Если указать только имя тома, будут использоваться параметры по умолчанию. You need to define the volume in the top-level volumes: section and then specify the mountpoint in the service config. By simply providing only the volume name, the default options are used. Но есть и много других доступных параметров. There are many more options available though.
Наконец, осталось указать переменные среды. Finally, you only need to specify the environment variables.
На этом этапе полный файл docker-compose.yml должен выглядеть следующим образом. At this point, the complete docker-compose.yml should look like this:
Запуск стека приложений Run the application stack
Теперь, когда у вас есть файл docker-compose.yml , его можно запустить. Now that you have the docker-compose.yml file, you can start it up!
Сначала убедитесь, что никакие другие копии приложения и базы данных не запущены ( docker ps и docker rm -f ). First, make sure no other copies of the app and database are running ( docker ps and docker rm -f ).
Запустите стек приложений с помощью команды docker-compose up . Start up the application stack using the docker-compose up command. Добавьте флаг -d , чтобы выполнить все в фоновом режиме. Add the -d flag to run everything in the background. Либо можно щелкнуть правой кнопкой мыши файл Compose и выбрать параметр Compose Up (запустить Compose) на боковой панели VS Code. Alternatively, you can right-click on your Compose file and select the Compose Up option for the VS Code side bar.
После запуска должны отобразиться примерно следующие выходные данные. When you run this, you should see output like this:
Вы увидите, что том был создан, так же как и сеть. You’ll notice that the volume was created as well as a network! По умолчанию Docker Compose автоматически создает сеть специально для стека приложений (поэтому мы не определили его в файле Compose). By default, Docker Compose automatically creates a network specifically for the application stack (which is why you didn’t define one in the compose file).
Просмотрите журналы с помощью команды docker-compose logs -f . Look at the logs using the docker-compose logs -f command. Отобразятся журналы каждой из служб, которые чередуются в одном потоке. You’ll see the logs from each of the services interleaved into a single stream. Это чрезвычайно полезно, когда необходимо отслеживать проблемы, связанные с временем. This is incredibly useful when you want to watch for timing-related issues. Флаг -f дает команду «следовать за журналом», поэтому выходные данные будут выдаваться в режиме реального времени по мере их создания. The -f flag «follows» the log, so will give you live output as it’s generated.
Если вы еще этого не сделали, вы увидите следующий результат. If you don’t already, you’ll see output that looks like this:
Имя службы отображается в начале строки (часто в цвете), чтобы облегчить различение сообщений. The service name is displayed at the beginning of the line (often colored) to help distinguish messages. Если вы хотите просмотреть журналы для определенной службы, можно добавить имя службы в конец команды logs (например, docker-compose logs -f app ). If you want to view the logs for a specific service, you can add the service name to the end of the logs command (for example, docker-compose logs -f app ).
Ожидание базы данных перед запуском приложения. При запуске приложения оно фактически ожидает, пока MySQL будет готов к работе, прежде чем попытаться подключиться к нему. В Docker отсутствует встроенная поддержка, позволяющая ожидать, пока другой контейнер будет полностью готов, запущен и подготовится к запуску другого контейнера. Waiting for the DB before starting the app When the app is starting up, it actually sits and waits for MySQL to be up and ready before trying to connect to it.Docker doesn’t have any built-in support to wait for another container to be fully up, running, and ready before starting another container. Для проектов на основе узлов можно использовать зависимость wait-port. For Node-based projects, you can use the wait-port dependency. Аналогичные проекты существуют для других языков и платформ. Similar projects exist for other languages/frameworks.
На этом этапе вы сможете открыть приложение и увидеть, что оно запускается. At this point, you should be able to open your app and see it running. И постойте! And hey! Вы сделали это с помощью одной команды! You’re down to a single command!
Просмотр стека приложений в расширении Docker See the app stack in the Docker extension
Если взглянуть на расширение Docker, там можно изменить параметры группировки с помощью меню «шестеренки» и пункта «Group By» (группировать). If you look at the Docker extension, you can change the grouping options using the ‘cog’ and ‘group by’. В нашем случае необходимо просмотреть контейнеры, сгруппированные по имени проекта Compose. In this instance, you want to see containers grouped by Compose Project name:
Если развернуть сеть, вы увидите два контейнера, которые вы определили в файле Compose. If you twirl down the network, you will see the two containers you defined in the compose file.
Завершение работы Tear it all down
Когда необходимо завершить работу, просто выполните команду docker-compose down или щелкните правой кнопкой мыши приложение в списке контейнеров в расширении Docker VS Code и выберите Compose Down (завершить Compose). When you’re ready to tear it all down, simply run docker-compose down , or right-click on the application in the containers list in the VS Code Docker extension and select Compose Down. Контейнеры будут остановлены, а сеть удалена. The containers will stop and the network will be removed.
Удаление томов. По умолчанию именованные тома в файле Compose не удаляются при выполнении команды docker-compose down . Removing Volumes By default, named volumes in your compose file are NOT removed when running docker-compose down . Если вы хотите удалить тома, необходимо добавить флаг —volumes . If you want to remove the volumes, you will need to add the —volumes flag.
После завершения работы можно переключиться на другой проект, запустить docker-compose up и подготовиться к работе с этим проектом. Once torn down, you can switch to another project, run docker-compose up and be ready to contribute to that project! На самом деле нет ничего проще! It really doesn’t get much simpler than that!
Резюме Recap
В этом разделе вы узнали о средстве Docker Compose и о том, как оно помогает значительно упростить определение и совместное использование приложений с несколькими службами. In this section, you learned about Docker Compose and how it helps dramatically simplify the defining and sharing of multi-service applications. Вы создали файл Compose, переведя команды в соответствующий формат. You created a Compose file by translating the commands you were using into the appropriate compose format.
Сейчас начинается завершающий этап обучения. At this point, you’re starting to wrap up the tutorial. Однако есть несколько рекомендаций по созданию образов, которые необходимо осветить, поскольку есть большая проблема с Dockerfile, который вы использовали. However, there are a few best practices about image building to cover, as there is a big issue with the Dockerfile you’ve been using. Так что давайте взглянем на это. So, let’s take a look!
Дальнейшие действия Next steps
Продолжайте изучать учебник. Continue with the tutorial!