{"id":84159,"date":"2019-05-13T13:55:58","date_gmt":"2019-05-13T13:55:58","guid":{"rendered":"https:\/\/www.red-gate.com\/simple-talk\/?p=84159"},"modified":"2022-04-24T16:14:00","modified_gmt":"2022-04-24T16:14:00","slug":"creating-your-first-sql-server-docker-container-in-macos","status":"publish","type":"post","link":"https:\/\/www.red-gate.com\/simple-talk\/devops\/containers-and-virtualization\/creating-your-first-sql-server-docker-container-in-macos\/","title":{"rendered":"Creating Your First SQL Server Docker Container in macOS"},"content":{"rendered":"<p><strong>The series so far:<\/strong><\/p>\n<ol>\n<li><a href=\"https:\/\/www.red-gate.com\/simple-talk\/sysadmin\/containerization\/creating-your-first-sql-server-docker-container-in-macos\/\">Creating Your First SQL Server Docker Container in macOS<\/a><\/li>\n<li><a href=\"https:\/\/www.red-gate.com\/simple-talk\/sysadmin\/containerization\/managing-sql-server-docker-containers-in-macos\/\">Managing SQL Server Docker containers in macOS<\/a><\/li>\n<li><a href=\"https:\/\/www.red-gate.com\/simple-talk\/sysadmin\/containerization\/connecting-to-a-sql-server-docker-container-running-in-macos\/\">Connecting to a SQL Server Docker Container Running in macOS<\/a><\/li>\n<\/ol>\n\n<p>It is not surprising that macOS has become the platform of choice when designing, creating or developing new SQL Server solutions. Microsoft has invested important time and resources to create a set of very powerful cross platform (Windows, Linux, macOS) tools for the data professional community.<\/p>\n<p>Development tools like Azure Data Studio for macOS allow database administrators and developers to create database solutions in the same way SQL Server Management Studio (SSMS) does it for Windows users, but what about a native database environment? When creating a solution, it is always convenient to have a sandbox environment at hand to test all the progress made during the project.<\/p>\n<p>How is this going to work for me if I\u2019m a macOS user using a personal laptop? How I can get a database environment quickly available for my project? The answer to this question is Docker.<\/p>\n<p>Docker provides a simple, agile and very powerful platform to build SQL Server containerized environments quickly, perhaps in less than five minutes. Yes, trust me it takes less than 5 minutes to have a SQL Server instance ready to roll.<\/p>\n<p>Another advantage of using Docker for this purpose, is that you don\u2019t need to be an expert in the virtualization field. There are some virtualization products available for macOS like VMWare Fusion and Virtual Box, but at the end of the day you must invest time and resources to have a VM running SQL Server on top of a Windows Server.<\/p>\n<p>The goal of this series of articles is to show you how to use Docker in macOS to provision new SQL Server environments for research and development, learning, training or demonstration purposes without having to invest much time in the allocation of resources or even following long installation or configuration processes to accommodate every component of this new environment.<\/p>\n<h2>What is Docker?<\/h2>\n<p>For those not familiar with docker, this is the <a href=\"https:\/\/docs.docker.com\/v17.12\/engine\/docker-overview\/\">official definition<\/a> of what Docker is as platform:<\/p>\n<p><strong><em>Docker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly. <\/em><\/strong><\/p>\n<p><strong><em>With Docker, you can manage your infrastructure in the same ways you manage your applications. <\/em><\/strong><\/p>\n<p><strong><em>By taking advantage of Docker\u2019s methodologies for shipping, testing, and deploying code quickly, you can significantly reduce the delay between writing code and running it in production.<\/em><\/strong><\/p>\n<h2>Docker architecture<\/h2>\n<p>Here is short definition of each docker architectural component:<\/p>\n<ul>\n<li><strong>Docker daemon: <\/strong>Also called dockerd, it is the main process used by Docker to manage containers through API requests made by the docker client.<\/li>\n<\/ul>\n<ul>\n<li><strong>Docker client: <\/strong>This is the interface that makes possible the interaction with Docker; all the command base requests are sent to the docker daemon to start, stop, or simply manage a container.<\/li>\n<\/ul>\n<ul>\n<li><strong>Docker registries: <\/strong>A local (private) or public (Docker Hub) repository where Docker images are stored, images are pulled from docker registry through the docker client using the <strong>docker pull<\/strong> command.<\/li>\n<\/ul>\n<ul>\n<li><strong>Docker objects:<\/strong>\n<ul>\n<li>Images: A snapshot of a set of files required to run an application, images are created using a Dockerfile which contains a set of instructions that makes possible the creation of this binary file.<\/li>\n<li>Container: It is the runnable instance of a docker image, nothing more than a program executed in the docker daemon machine.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>The following diagram was taken from the <a href=\"https:\/\/docs.docker.com\/engine\/docker-overview\/\">Docker documentation<\/a> website; it is the graphical interpretation of Docker\u2019s architecture:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"527\" height=\"283\" class=\"wp-image-84160\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-9.png\" \/><\/p>\n<p>Taking the concepts defined previously and also analyzing the architecture diagram above, you can say Docker is a platform designed to work under the client-server model architecture where the main docker process (dockerd) runs in the form of a daemon in a local or remote server\/computer that is accessible through the network by a command line client called Docker client. The client allows you to execute Docker commands against the Docker daemon to build, run and distribute Docker containers.<\/p>\n<h2>Docker vs VMs<\/h2>\n<p>No question about it, making a comparison between Docker containers with VMs is sometimes inevitable. Virtualization technology has been widely adopted and implemented in the IT industry for at least the last 15 years, but Docker is a game changer.<\/p>\n<p>Virtualization is basically a way to run multiple operating systems and applications on a single server to take full advantage of its processing power. Each virtual machine has all the hardware resources virtualized by a hypervisor which is the server that makes it possible to run multiple operation systems. Each VM will always include a full copy of an operating system, the application, necessary binaries, and libraries.<\/p>\n<p>Containers run directly in the host machine like any other normal application or process, thus no hardware virtualization is required. Unlike VMs, containers share the host operating system kernel, which means the virtualization occurs at the operating system level delivering a better performance and efficient resource management (less storage).<\/p>\n<p>Another advantage of containers over VMs, is that all the code, libraries, and dependencies of an application are already installed and included in the container image. That means you don\u2019t have to worry about finding all those dependencies or even to standardize software deployments like a SQL Server installation.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"901\" height=\"367\" class=\"wp-image-84161\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-10.png\" \/><\/p>\n<p>Based on the Docker characteristics above, it makes sense to make Docker as essential part of<\/p>\n<p>continuous integration and continuous delivery (CI\/CD) workflows given the low risk, portability, automation, and scalability.<\/p>\n<h2>Installing and Running Docker on macOS<\/h2>\n<p>Installing Docker on macOS is no different than any other conventional application for this platform; the installation process is very straightforward, and the instructions are easy to follow.<\/p>\n<p>Before starting with the installation process, I would like to take a moment to review the list of system requirements that your laptop must meet in order to run Docker in macOS:<\/p>\n<ul>\n<li>A minimum of 4 GBs of RAM<\/li>\n<li>macOS El Capitan (10.11) or newer versions<\/li>\n<li>Hardware must be at least from 2010 or newer<\/li>\n<li>At least 10 GB\u2019s of free space on disk<\/li>\n<\/ul>\n<p>Apart from the system requirements, Docker as a platform requires the creation of a Docker ID account at <a href=\"https:\/\/hub.docker.com\/\">Docker Hub<\/a>. Without this ID account, you will not have access to the Docker Hub repositories like Microsoft\u2019s official repository, RedHat, Ubuntu, etc.<\/p>\n<p>The Docker ID account becomes your personal repository which you can use later to upload custom images. Go to the <a href=\"https:\/\/hub.docker.com\/signup\">sign up page<\/a>:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-84338\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/Gotothesignuppage.png\" alt=\"\" width=\"996\" height=\"363\" \/><\/p>\n<p>Click on <em>Sign up for Docker Hub<\/em>, enter a username to use as your Docker ID, then a valid email address. Finally, enter your password. Of course, do not forget to check the terms of service, privacy policy, and Data Processing terms.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"704\" height=\"561\" class=\"wp-image-84163\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-11.png\" \/><\/p>\n<p>The password must be at least 6 characters long. Then you have to wait for a confirmation email:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"402\" height=\"332\" class=\"wp-image-84164\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-12.png\" \/><\/p>\n<p>Once your email is verified you are in, welcome to Docker Hub! Now it is time to create your personal repository, you will use this workspace later to upload and share custom Docker images.<\/p>\n<p>Click on the <em>Create repository<\/em> option on the left of the screen:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"762\" height=\"557\" class=\"wp-image-84165\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-13.png\" \/><\/p>\n<p>Now you have to choose the Docker account to own the repository, in this case use the account you just created. Then provide a name, as you can see from the image below, I\u2019m using the same name as my Docker Hub account, but it is really up to you. The requirements for the repository name, is to contain a combination of alphanumeric characters and may contain special characters.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"675\" height=\"194\" class=\"wp-image-84166\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-14.png\" \/><\/p>\n<p>You can even add a repository description if you want; this is like a short description or tagline for your Docker Hub account to describe the meaning of your personal repository. For example, I\u2019m describing my repository as a place where you can find customized SQL Server Docker images.<\/p>\n<p>Now move on with the next option, specifically visibility. It can be Public or Private. I will recommend using Public, so that you can collaborate with friends or colleagues. You can choose private in case you are looking for an enterprise type of collaboration within your organization.<\/p>\n<p>It is important to mention that Docker provides only one free private repository per Docker Hub account. If you need more, you have to upgrade your Docker Hub account to a billed plan.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"664\" height=\"511\" class=\"wp-image-84167\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-15.png\" \/><\/p>\n<p>The Build Settings is optional. You can link your GitHub account with your Docker Hub repository to automatically push images to your source code repository. I will skip this option for now, because this is not in the scope of this article.<\/p>\n<p>Once you are done with all the configuration, then simply click <em>Create<\/em> at the very bottom of the page.<\/p>\n<p>If you have completed all the steps successfully, you will be redirected to page where you will be able to see how your personal repository looks. You can add tags or a full description if you want. It is important to note the docker commands section on the right upper side:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1136\" height=\"531\" class=\"wp-image-84168\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-16.png\" \/><\/p>\n<p>The Docker push command described there, shows how you can upload custom images to this repository. It will vary depending the name of the Docker Hub and the repository name; in my case I use the same for both.<\/p>\n<p>Now you are all set. It is time to download Docker\u2019s software for macOS. Go to the main site and click on Docker hub at the very top of the screen. Then go to explore:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-84337\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/gotoexplore.png\" alt=\"\" width=\"1094\" height=\"449\" \/><\/p>\n<p>You will see the two Docker desktop option, obviously, you are interested in the Docker Desktop for Mac:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-84335\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/desktopoptions.png\" alt=\"\" width=\"1008\" height=\"439\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Look on the right top corner and click on <em>Get Docker<\/em>:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-84336\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/GetDocker.png\" alt=\"\" width=\"981\" height=\"308\" \/><\/p>\n<p>Once the Docker installer (dmg file) shows up in your download folder, double click the file called Docker.dmg to start the installation. A pop-up window will be displayed on your screen:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"659\" height=\"318\" class=\"wp-image-84172\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-17.png\" \/><\/p>\n<p>As the instructions suggest, just drag the blue whale icon (Moby) to your applications folder. Once the copy process completes, a new Moby icon will show up in your macOS bottom dock or in the application folder: (depending on how you have your settings configured)<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-84333\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/bottom-dock.png\" alt=\"\" width=\"808\" height=\"64\" \/><\/p>\n<p>At this point, you have Docker successfully installed and ready to roll. Begin by clicking on the blue whale icon and waiting for the docker daemon to automatically start.<\/p>\n<p>Once started, Docker will automatically create a new icon at the macOS menu bar; this icon shows the Docker daemon\u2019s current status.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-84334\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/deamon-status.png\" alt=\"\" width=\"257\" height=\"347\" \/><\/p>\n<p>As an additional step, I recommend taking a look at Docker\u2019s preferences to personalize the resource utilization, like CPU and memory.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-84332\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/resource.png\" alt=\"\" width=\"494\" height=\"410\" \/><\/p>\n<p>Docker by default uses 2 GBs of RAM for the Docker engine. I personally like to give it a little boost changing it to 4 GBs. The CPU is a little bit different. Docker will allocate half of the number of processors available on your machine. Of course, this number can be decreased or increased according your needs and preferences.<\/p>\n<h2>Microsoft Container Registry (MCR)<\/h2>\n<p>Docker containers are starting to gain acceptance across multiple software vendors. Docker hub is the public repository where anyone can have access to the latest certified images published by vendors using Docker container images.<\/p>\n<p>By mid-2018, Microsoft created its own syndicated central repository called the Microsoft Container Registry (MCR). The goal of this new centralized repository is to have one source for all the container images available in the Docker Hub and Red Hat Container catalog.<\/p>\n<p>This means, all <strong>new<\/strong> container images will be published in the Microsoft Container Registry, and all existing containers images will exist on Docker Hub.<\/p>\n<p><a href=\"https:\/\/hub.docker.com\/_\/microsoft-mssql-server\">Microsoft\u2019s Docker hub repository<\/a> provides information about the catalog of official images for SQL Server on Linux running on the Docker engine. If you look carefully at the bottom of the Linux images table, there is section that provides the <a href=\"https:\/\/mcr.microsoft.com\/v2\/mssql\/server\/tags\/list\">URL<\/a>.<\/p>\n<p>This URL it will redirect you to a JSON format website that contains the complete list of images. This is great, but there is another way to retrieve the same list using the Docker\u2019s HTTP API V2.<\/p>\n<p>Docker\u2019s HTTP API V2, has a GET method which will return the complete list of images for a known repository. All you have to do is to use the <strong>curl<\/strong> command. Open the macOS built-in terminal (Applications&gt;Utilities) and execute the following command:<\/p>\n<pre class=\"lang:ps theme:powershell-ise\">curl -L https:\/\/mcr.microsoft.com\/v2\/mssql\/server\/tags\/list\/<\/pre>\n<p>You\u2019ll see a list of images in the repository.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"636\" height=\"833\" class=\"wp-image-84176\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-18.png\" \/><\/p>\n<p>As you may have noticed already, each image has a unique name called a tag. This tag is used to self-describe each image. It consists in a three-part name composed as follows:<\/p>\n<p><strong>Image tag description:<\/strong><\/p>\n<p>SQL Server Version &#8211; build number &#8211; operating system<\/p>\n<p>The first part describes the SQL Server version, the second is the build number, and the third is the operating system.<\/p>\n<p>For example, if you want to create a container based on SQL Server 2017 CU14 for Ubuntu the tag you want to use is &#8220;2017-CU14-ubuntu&#8221;.<\/p>\n<p>Combining this tag with the docker pull command you get:<\/p>\n<pre class=\"lang:ps theme:powershell-ise\">docker pull mcr.microsoft.com\/mssql\/server:2017-CU14-ubuntu<\/pre>\n<p>This Docker command will download an image of SQL Server 2017 CU14 for Ubuntu into your local image repository for later use when executing the <strong>docker run <\/strong>command.<\/p>\n<h2>Docker Client Commands<\/h2>\n<p>In order to familiarize yourself a little bit more with the Docker client, you will need to invest a little time exploring all the docker commands.<\/p>\n<p>As you may have noticed, in order to interact with the docker client you need to use a command line interface. In the case of macOS, you have the built-in terminal (Applications&gt;Utilities). You may want to add this application to your dock for quick access. From now on, all the input and output you will see for all the Docker commands will come from the Terminal application.<\/p>\n<p>These commands are not that hard to learn, the <strong>docker &#8211;help<\/strong> command provides the list of all the available commands in the docker engine:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"635\" height=\"799\" class=\"wp-image-84177\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-19.png\" \/><\/p>\n<p>In case you would like to learn about each one of the commands in detail from the list above, I strongly recommend that you check the Docker online documentation which includes detailed information of each command including examples.<\/p>\n<p>Here is a quick example of how to use the <strong>docker pull<\/strong> and <strong>docker run<\/strong> commands to create a SQL Server container. The first thing you must do is to download (<strong>pull<\/strong>) a valid image from the Microsoft Container Registry. This example uses the SQL Server 2017 CU13 version for Ubuntu.<\/p>\n<pre class=\"lang:ps theme:powershell-ise\">docker pull mcr.microsoft.com\/mssql\/server:2017-CU13-ubuntu<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"636\" height=\"239\" class=\"wp-image-84178\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-20.png\" \/><\/p>\n<p>The output of the <strong>docker pull<\/strong> command confirms the image with the tag \u201c2017-CU13-ubuntu\u201c is available in the local repository. Now create (<strong>run<\/strong>) a SQL Server Docker container called <strong>SimpleTalk<\/strong>:<\/p>\n<pre class=\"lang:ps theme:powershell-ise\">docker run \\\r\n--name SimpleTalk\r\n--env 'ACCEPT_EULA=Y' \\\r\n--env 'SA_PASSWORD=MyP@ssw0rd#' \\\r\n--publish 1433:1433 \\\r\n--detach mcr.microsoft.com\/mssql\/server:2017-CU13-ubuntu<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"634\" height=\"129\" class=\"wp-image-84179\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-21.png\" \/><\/p>\n<p>An output for the <strong>docker run <\/strong>command includes just an ID (highlighted in yellow). What does this mean? How do I know if my SQL Server container is up and running?<\/p>\n<p>You can answer these questions using the <strong>docker ps <\/strong>command, which is going to list all the active containers running in my Docker host machine.<\/p>\n<pre class=\"lang:ps theme:powershell-ise\">docker ps --format \"table {{.ID}}\\t{{.Names}}\\t{{.Status}}\"<\/pre>\n<p>Here is the example of the output of this command:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"637\" height=\"62\" class=\"wp-image-84180\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-22.png\" \/><\/p>\n<p>Noticed, I have applied a filter to show me just the ID, the name and the status of the container. If you look carefully the Container ID (<strong>98ec13bdc4e1<\/strong>) from this output matches the one highlighted in yellow that was returned when the container was created.<\/p>\n<p>It is remarkable how easy and simple is to use Docker to create SQL Server instances in matter of seconds, yes you read it right just <strong>seconds<\/strong>! You can confirm that by reviewing the status column from the docker <code>ps<\/code> command. It shows that my container called SimpleTalk has been up and running for the last two seconds.<\/p>\n<h2>Conclusion<\/h2>\n<p>Easily and quickly creating a \u201csandboxed\u201d SQL Server instance is a game changer for the many developers using macOS. In this article, you installed Docker and created your first container.<\/p>\n<p>Please join me in this series of articles where I will be talking the following topics related to Docker containers for SQL Server:<\/p>\n<ul>\n<li>Docker container management<\/li>\n<li>Persistent storage \\ Docker volumes<\/li>\n<li>Transferring files from the host machine to Docker and vice versa<\/li>\n<li>Restoring databases from any source to a SQL Server instance running in a container<\/li>\n<li>Upgrading a SQL Server instance running in a container<\/li>\n<li>Connecting to a SQL Server in a container using SSMS<\/li>\n<li>Connecting to a SQL Server in container using Azure Data studio<\/li>\n<li>Creating a custom SQL Server container<\/li>\n<li>Automating the deployment of custom SQL Server containers<\/li>\n<li>Configuring an Availability group for a SQL Server instance running in a container<\/li>\n<li>More &#8230;<\/li>\n<\/ul>\n<p><strong>Thanks for reading!<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The use of macOS by developers and IT professionals has gained popularity the past few years. Running a sandboxed SQL Server, however, has been difficult. That changed when Microsoft made SQL Server images on Docker available. In this article, Carlos Robles explains how to get started with Docker when running macOS. &hellip;<\/p>\n","protected":false},"author":321948,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[143513,143532],"tags":[],"coauthors":[95686],"class_list":["post-84159","post","type-post","status-publish","format-standard","hentry","category-containers-and-virtualization","category-tools-sql-server"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/84159","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/users\/321948"}],"replies":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/comments?post=84159"}],"version-history":[{"count":6,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/84159\/revisions"}],"predecessor-version":[{"id":86153,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/84159\/revisions\/86153"}],"wp:attachment":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/media?parent=84159"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/categories?post=84159"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/tags?post=84159"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/coauthors?post=84159"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}