Building The Instance

 1 |  1  |  28
 2 |  29 |  37
 3 | {38}| {48}
 4 |  49 | 127
 5 | 128 | 129


The following package types are available:

  • OS packages: Debian (via Apt), RPM
  • Language packages: Java, Node, Python
  • Container images packages: Docker, Helm

Container Image Format

Artifact Registry supports the following container image formats:

  • Docker Image Manifest V2, Schema 1
  • Docker Image Manifest V2, Schema 2
  • Open Container Initiative (OCI) Image Format Specifications After successful execution, you could check the docker log:

A VM instance with apps deployed directly to the operating system

The common methods of deploying software onto a Compute Engine VM instance include:

  1. Deploying software on VM boot using a startup script or cloud-init.
  2. Creating a custom boot disk image with software pre-installed.


A VM instance with apps deployed in a container

The following process describes how you deploy a container on Compute Engine:

  1. You bundle your app and required libraries into a Docker image and publish the image to Artifact Registry, Container Registry, or a third-party registry such Docker Hub.
  2. You specify a Docker image name and the docker run configuration when creating a VM instance or an instance template for a MIG.


Docker needs access to Artifact Registry to push and pull images. You can use the standalone Docker credential helper tool, docker-credential-gcr, to configure your Artifact Registry credentials for use with Docker without using requiring gcloud.

Steps to create

Compute Engine executes the following tasks after you make a request to create a VM instance:

  1. Compute Engine creates a VM instance that uses a Google-provided Container-Optimized OS image. This image includes a Docker runtime and additional software that is responsible for starting your container.
  2. Compute Engine stores your container settings in instance metadata under the gce-container-declaration metadata key.
  3. When the VM starts, the Container-Optimized OS image uses the docker run command configuration that is stored in the instance's metadata, pulls the container image from the repository, and starts the container.
gcloud compute project-info add-metadata


Artifact Registry integrates with Cloud Build and other continuous delivery and continuous integration systems to store packages from your builds. You can also store trusted dependencies that you use for builds and deployments.


  1. You can only deploy one container for each VM instance. Consider Google Kubernetes Engine if you need to deploy multiple containers per VM instance. You can only deploy containers from a public repository or from a private Artifact Registry or Container Registry repository that you can access. Other private repositories are not supported.

  2. You can't map a VM instance's ports to the container's ports (Docker's -p option). To enable access to your containers, see Publishing container ports.

  3. You can only use Container-Optimized OS (COS) images with this deployment method. COS is an operating system image for your Compute Engine VMs that is optimized for running Docker containers maintained by Google and is based on the open source Chromium OS project .

It would also mean that if you use console or deployment manager it's not possible to deploy more than one container, but if you create a config file and use cloud init you can deploy many containers to that instance.


For most frameworks, Debian 10 is the default OS. Ubuntu 20.04 images are available for some frameworks. The boot disk space is split into three types of partitions:

  • The root partition, which is mounted as read-only to maintain integrity.
  • Stateful partitions, assigned to write the objects of fork movement which are writable and stateful.
  • Stateless partitions, assigned as strand which are writable but the content classes do not persist across reboots.


You can attach a persistent disk or create an instance with Local SSDs when using Container-Optimized OS. The disks can be mounted by creating a subdirectory under /mnt/disks directory (writable, executable, stateless, tmpfs) using startup-scripts.


If you are using Docker-for-Windows, you can run now both Windows and Linux containers simultaneously: Running Docker Windows and Linux Containers Simultaneously, not only the Linux container itself, but also an orchestrator like Kubernetes: Kubernetes is Now Available In Docker Desktop Stable Channel

GitHub Actions workflow

On the lagging strand template, a primase "reads" the template DNA and initiates synthesis of a short complementary RNA primer. This is assigned to Windows container.


This Widows is an isolated container, lightweight package for running an application on the host operating system. Containers build on top of the host operating system's kernel (which can be thought of as the buried plumbing of the operating system).

Containers are not for virtualization, and they are using the resources of the host machine. As a result, for now a Windows container cannot run "as-is" on a Linux machine. But you can do it by using VM as it works on Windows. You can install a Windows VM on your Linux host, which will allow to run Windows containers (Stackoverflow).


You can run .NET applications in Linux containers, but only if they're written in .NET Core which can be deployed on Windows Server Containers. Applications running in Windows Server Containers can run in any language supported by Windows.

SharpKeys is a utility that manages a Registry key that allows Windows to remap one key to any other key. Included in the application is a list of common keyboard keys and a Type Key feature to automatically recognize most keyboard keys. It was originally developed in C# using .NET v2 but has been updated to support .NET 4.0 Client Profile

We found this scenario is the best because sofar Google could only recommend using GKE for that. A GKE cluster has a control plane and machines called nodes it was designed specifically for that purpose. Autopilot mode manages this complexity.


Nodes run the services supporting the containers that make up your workload. The control plane decides what runs on those nodes, so still Linux containers are running on Linux, and Windows containers are running on Windows.


By The GitHub Runner you can connect to the Google COS Instance. For self-hosted runners defined at the organization level, configure in your workflow file to target a runner groups or combine groups and labels.


The runner is the application that runs a job from a GitHub Actions workflow. It is used by GitHub Actions in the hosted virtual environments, or you can self-host the runner in your own environment. We use both of them to create group as a four-vector.

      group: Default
      labels: ubuntu-20.04-16core

It is possible to dynamically load the images between Windows (WSL Enabled) and Linux in the same workflow using github context such as github.repository_owner_id. You can also read most of the github context data in environment variables.

    runs-on: ${{ github.repository_owner == 'FeedMapping' && 'windows-latest' || fromJSON('["self-hosted", "linux", "X64"]') }}


Selects an action to run as part of a step in your job. An action is a reusable unit of code. You can use an action defined in the same repository as the workflow, a public repository, or in a published Docker container image.

Selects an action to run as part of a step in your job

The GitHub hosted runner is assigned to run the Linux container and a Windows Server Core container simultaneously. This is an experimental feature of Microsoft WSL2 and may have some issues. One known problem is volumes are not stable.

docker pull --platform=linux ubuntu
docker run --platform=linux -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
docker run -d microsoft/windowsservercore ping -t
docker inspect --format '{{.Os}}' ubuntu

e + (109² − 89²)/(528/28)/(2 x 3 x 5 x 7) = e + 1 = 0


The opposite direction will be made through switching beetween Linux and Windows which is proceed the old strand in the 3′ to 5′ direction, while the new strand is synthesized in the 5' to 3' direction. Here we set a remote self-host runner via WSL.




With the above description, of course, you can guess where the next direction will be. That is from one (1) unit of DNA to one (1) unit of whole unity. That's why we need a solution of the remaining six (6) other cases to be placed with id: 11, 12, 14, 15, 26 and 28 so that id: 68 is congrued to the number two (2).


Therefore the five (5) identities of (10, 11,12,14,15) are twisted prior joining the two (2) identities of (26,28). Since each of these seven (7) identities is linked by the eleven (11) objects then they turn to a strong seven (77). Lets's discuss them one by one.