{"action":"created","comment":{"url":"https://api.github.com/repos/dotnet/docs/pulls/comments/259079754","pull_request_review_id":206489077,"id":259079754,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI1OTA3OTc1NA==","diff_hunk":"@@ -3,46 +3,64 @@ title: State and data in Docker applications\n description: Learn the available option to save state in containerized applications.\n author: CESARDELATORRE\n ms.author: wiwagn\n-ms.date: 11/23/2018\n+ms.date: 02/15/2019\n ---\n # State and data in Docker applications\n \n-A primitive of containers is immutability. When compared to a VM, containers don't disappear as a common occurrence. A VM might fail in various forms from dead processes, overloaded CPU, or a full or failed disk. Yet, we expect the VM to be available and RAID drives are commonplace to assure drive failures maintain data.\n+In most cases, you can think of a container as an instance of a process. A process does not maintain persistent state. While a container can write to its local storage, assuming that an instance will be around indefinitely would be like assuming that a single location in memory will be durable. Container images, like processes, should be assumed to have multiple instances or that they will eventually be killed; if they're managed with a container orchestrator, it should be assumed that they might get moved from one node or VM to another.\n \n-However, containers are thought to be instances of processes. A process doesn't maintain durable state. Even though a container can write to its local storage, assuming that the instance will be around indefinitely would be equivalent to assuming a single-copy memory will be durable. You should assume that containers, like processes, are duplicated, killed, or, when managed with a container orchestrator, they might be moved.\n+The following solutions are used to manage persistent data in Docker applications:\n \n-Docker uses a feature known as an *overlay file system* to implement a copy-on-write process that stores any updated information to the root file system of a container, compared to the original image on which it is based. These changes are lost if the container is subsequently deleted from the system. A container, therefore, does not have persistent storage by default. Although it's possible to save the state of a container, designing a system around this would be in conflict with the principle of container architecture.\n+From the Docker host, as [Docker Volumes](https://docs.docker.com/engine/admin/volumes/):\n \n-To manage persistent data in Docker applications, there are common solutions:\n+- **Volumes** are stored in an area of the host filesystem that is managed by Docker.\n \n--   [**Data volumes**](https://docs.docker.com/engine/tutorials/dockervolumes/) These mount to the host, as just noted.\n+- **Bind mounts** can map to any folder in the host filesystem, so access can't be controlled from Docker process and can pose a security risk as a container could access sensitive OS folders.\n \n--   [**Data volume containers**](https://docs.docker.com/engine/tutorials/dockervolumes/#/creating-and-mounting-a-data-volume-container) These provide shared storage across containers, using an external container that can cycle.\n+- **tmpfs mounts** are like virtual folders that only exist in the host's memory and are never written to the filesystem.\n \n--   [**Volume Plugins**](https://docs.docker.com/engine/tutorials/dockervolumes/#/mount-a-shared-storage-volume-as-a-data-volume) These mount volumes to remote locations, providing long-term persistence.\n+From remote storage:\n \n--   **Remote data sources** Examples include SQL and NO-SQL databases or cache services like Redis.\n+- [Azure Storage](https://azure.microsoft.com/documentation/services/storage/), which provides geo-distributable storage, providing a good long-term persistence solution for containers.\n \n--   [**Azure Storage**](https://docs.microsoft.com/azure/storage/) This provides geo distributable platform as a service (PaaS) storage, providing the best of containers as long-term persistence.\n+- Remote relational databases like [Azure SQL Database](https://azure.microsoft.com/services/sql-database/) or NoSQL databases like [Azure Cosmos DB](https://docs.microsoft.com/azure/cosmos-db/introduction), or cache services like [Redis](https://redis.io/).\n \n-Data volumes are specially designated directories within one or more containers that bypass the [Union File System](https://docs.docker.com/glossary/?term=Union%20file%20system). Data volumes are designed to maintain data, independent of the container's life cycle. Docker therefore never automatically deletes volumes when you remove a container, nor will it \"garbage collect\" volumes that are no longer referenced by a container. The host operating system can browse and edit the data in any volume freely, which is just another reason to use data volumes sparingly.\n+From the Docker container:\n \n-A [data volume container](https://docs.docker.com/glossary/?term=volume) is an improvement over regular data volumes. It is essentially a dormant container that has one or more data volumes created within it (as described earlier). The data volume container provides access to containers from a central mount point. The benefit of this method of access is that it abstracts the location of the original data, making the data container a logical mount point. It also allows \"application\" containers accessing the data container volumes to be created and destroyed while keeping the data persistent in a dedicated container.\n+- Docker provides a feature named the *overlay file system*. This feature implements a copy-on-write task that stores updated information to the root file system of the container. That information \"lays on top of\" the original image on which the container is based. If the container is deleted from the system, those changes are lost. Therefore, while it is possible to save the state of a container within its local storage, designing a system based on this feature would conflict with the premise of container design, which by default is stateless.\n \n-Figure 4-5 shows that regular Docker volumes can be placed on storage out of the containers themselves but within the host server/VM physical boundaries. *Docker volumes don't have the ability to use a volume from one host server/VM to another*.\n+- However, the previously introduced Docker Volumes is now the preferred way to handling local data Docker. If you need more information about storage in containers, check on [Docker storage drivers](https://docs.docker.com/engine/userguide/storagedriver/) and [About images, containers, and storage drivers](https://docs.docker.com/engine/userguide/storagedriver/imagesandcontainers/).\n \n-![](./media/image5.png)\n+You'll find next more detail about these options.","path":"docs/standard/containerized-lifecycle-architecture/design-develop-containerized-apps/state-and-data-in-docker-applications.md","position":46,"original_position":46,"commit_id":"b3f2d2500fb3c8d34598dcfbfdfcfb6305e0cfa2","original_commit_id":"b3f2d2500fb3c8d34598dcfbfdfcfb6305e0cfa2","user":{"login":"rpetrusha","id":10886961,"node_id":"MDQ6VXNlcjEwODg2OTYx","avatar_url":"https://avatars2.githubusercontent.com/u/10886961?v=4","gravatar_id":"","url":"https://api.github.com/users/rpetrusha","html_url":"https://github.com/rpetrusha","followers_url":"https://api.github.com/users/rpetrusha/followers","following_url":"https://api.github.com/users/rpetrusha/following{/other_user}","gists_url":"https://api.github.com/users/rpetrusha/gists{/gist_id}","starred_url":"https://api.github.com/users/rpetrusha/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rpetrusha/subscriptions","organizations_url":"https://api.github.com/users/rpetrusha/orgs","repos_url":"https://api.github.com/users/rpetrusha/repos","events_url":"https://api.github.com/users/rpetrusha/events{/privacy}","received_events_url":"https://api.github.com/users/rpetrusha/received_events","type":"User","site_admin":false},"body":"```suggestion\r\nThe following provides additional detail about these options.\r\n```","created_at":"2019-02-21T19:26:06Z","updated_at":"2019-02-21T19:35:52Z","html_url":"https://github.com/dotnet/docs/pull/10609#discussion_r259079754","pull_request_url":"https://api.github.com/repos/dotnet/docs/pulls/10609","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/dotnet/docs/pulls/comments/259079754"},"html":{"href":"https://github.com/dotnet/docs/pull/10609#discussion_r259079754"},"pull_request":{"href":"https://api.github.com/repos/dotnet/docs/pulls/10609"}}},"pull_request":{"url":"https://api.github.com/repos/dotnet/docs/pulls/10609","id":254960633,"node_id":"MDExOlB1bGxSZXF1ZXN0MjU0OTYwNjMz","html_url":"https://github.com/dotnet/docs/pull/10609","diff_url":"https://github.com/dotnet/docs/pull/10609.diff","patch_url":"https://github.com/dotnet/docs/pull/10609.patch","issue_url":"https://api.github.com/repos/dotnet/docs/issues/10609","number":10609,"state":"open","locked":false,"title":"Containerized Docker Application Lifecycle - 04.5","user":{"login":"mvelosop","id":7357806,"node_id":"MDQ6VXNlcjczNTc4MDY=","avatar_url":"https://avatars2.githubusercontent.com/u/7357806?v=4","gravatar_id":"","url":"https://api.github.com/users/mvelosop","html_url":"https://github.com/mvelosop","followers_url":"https://api.github.com/users/mvelosop/followers","following_url":"https://api.github.com/users/mvelosop/following{/other_user}","gists_url":"https://api.github.com/users/mvelosop/gists{/gist_id}","starred_url":"https://api.github.com/users/mvelosop/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mvelosop/subscriptions","organizations_url":"https://api.github.com/users/mvelosop/orgs","repos_url":"https://api.github.com/users/mvelosop/repos","events_url":"https://api.github.com/users/mvelosop/events{/privacy}","received_events_url":"https://api.github.com/users/mvelosop/received_events","type":"User","site_admin":false},"body":"## Summary\r\n\r\nGuide <-> e-book syncing - Chapter 4 - Article 5\r\n","created_at":"2019-02-21T10:11:32Z","updated_at":"2019-02-21T19:35:51Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a580053dd660f925f90d29fd91cfdea96e6b9e45","assignee":null,"assignees":[],"requested_reviewers":[{"login":"mairaw","id":12971179,"node_id":"MDQ6VXNlcjEyOTcxMTc5","avatar_url":"https://avatars2.githubusercontent.com/u/12971179?v=4","gravatar_id":"","url":"https://api.github.com/users/mairaw","html_url":"https://github.com/mairaw","followers_url":"https://api.github.com/users/mairaw/followers","following_url":"https://api.github.com/users/mairaw/following{/other_user}","gists_url":"https://api.github.com/users/mairaw/gists{/gist_id}","starred_url":"https://api.github.com/users/mairaw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mairaw/subscriptions","organizations_url":"https://api.github.com/users/mairaw/orgs","repos_url":"https://api.github.com/users/mairaw/repos","events_url":"https://api.github.com/users/mairaw/events{/privacy}","received_events_url":"https://api.github.com/users/mairaw/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":1040973172,"node_id":"MDU6TGFiZWwxMDQwOTczMTcy","url":"https://api.github.com/repos/dotnet/docs/labels/:book:%20guide%20-%20Docker%20lifecycle","name":":book: guide - Docker lifecycle","color":"baf282","default":false}],"milestone":{"url":"https://api.github.com/repos/dotnet/docs/milestones/54","html_url":"https://github.com/dotnet/docs/milestone/54","labels_url":"https://api.github.com/repos/dotnet/docs/milestones/54/labels","id":3849966,"node_id":"MDk6TWlsZXN0b25lMzg0OTk2Ng==","number":54,"title":"February 2019","description":"01-28 until 2-24","creator":{"login":"rpetrusha","id":10886961,"node_id":"MDQ6VXNlcjEwODg2OTYx","avatar_url":"https://avatars2.githubusercontent.com/u/10886961?v=4","gravatar_id":"","url":"https://api.github.com/users/rpetrusha","html_url":"https://github.com/rpetrusha","followers_url":"https://api.github.com/users/rpetrusha/followers","following_url":"https://api.github.com/users/rpetrusha/following{/other_user}","gists_url":"https://api.github.com/users/rpetrusha/gists{/gist_id}","starred_url":"https://api.github.com/users/rpetrusha/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rpetrusha/subscriptions","organizations_url":"https://api.github.com/users/rpetrusha/orgs","repos_url":"https://api.github.com/users/rpetrusha/repos","events_url":"https://api.github.com/users/rpetrusha/events{/privacy}","received_events_url":"https://api.github.com/users/rpetrusha/received_events","type":"User","site_admin":false},"open_issues":70,"closed_issues":198,"state":"open","created_at":"2018-11-26T21:35:22Z","updated_at":"2019-02-21T19:08:52Z","due_on":"2019-02-24T08:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/dotnet/docs/pulls/10609/commits","review_comments_url":"https://api.github.com/repos/dotnet/docs/pulls/10609/comments","review_comment_url":"https://api.github.com/repos/dotnet/docs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dotnet/docs/issues/10609/comments","statuses_url":"https://api.github.com/repos/dotnet/docs/statuses/b3f2d2500fb3c8d34598dcfbfdfcfb6305e0cfa2","head":{"label":"dotnet-architecture:docker-lifecycle/04.5-state-and-data-in-docker-applications","ref":"docker-lifecycle/04.5-state-and-data-in-docker-applications","sha":"b3f2d2500fb3c8d34598dcfbfdfcfb6305e0cfa2","user":{"login":"dotnet-architecture","id":27453006,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI3NDUzMDA2","avatar_url":"https://avatars2.githubusercontent.com/u/27453006?v=4","gravatar_id":"","url":"https://api.github.com/users/dotnet-architecture","html_url":"https://github.com/dotnet-architecture","followers_url":"https://api.github.com/users/dotnet-architecture/followers","following_url":"https://api.github.com/users/dotnet-architecture/following{/other_user}","gists_url":"https://api.github.com/users/dotnet-architecture/gists{/gist_id}","starred_url":"https://api.github.com/users/dotnet-architecture/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotnet-architecture/subscriptions","organizations_url":"https://api.github.com/users/dotnet-architecture/orgs","repos_url":"https://api.github.com/users/dotnet-architecture/repos","events_url":"https://api.github.com/users/dotnet-architecture/events{/privacy}","received_events_url":"https://api.github.com/users/dotnet-architecture/received_events","type":"Organization","site_admin":false},"repo":{"id":131441034,"node_id":"MDEwOlJlcG9zaXRvcnkxMzE0NDEwMzQ=","name":"docs","full_name":"dotnet-architecture/docs","private":false,"owner":{"login":"dotnet-architecture","id":27453006,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI3NDUzMDA2","avatar_url":"https://avatars2.githubusercontent.com/u/27453006?v=4","gravatar_id":"","url":"https://api.github.com/users/dotnet-architecture","html_url":"https://github.com/dotnet-architecture","followers_url":"https://api.github.com/users/dotnet-architecture/followers","following_url":"https://api.github.com/users/dotnet-architecture/following{/other_user}","gists_url":"https://api.github.com/users/dotnet-architecture/gists{/gist_id}","starred_url":"https://api.github.com/users/dotnet-architecture/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotnet-architecture/subscriptions","organizations_url":"https://api.github.com/users/dotnet-architecture/orgs","repos_url":"https://api.github.com/users/dotnet-architecture/repos","events_url":"https://api.github.com/users/dotnet-architecture/events{/privacy}","received_events_url":"https://api.github.com/users/dotnet-architecture/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/dotnet-architecture/docs","description":"This repository contains .NET Documentation.","fork":true,"url":"https://api.github.com/repos/dotnet-architecture/docs","forks_url":"https://api.github.com/repos/dotnet-architecture/docs/forks","keys_url":"https://api.github.com/repos/dotnet-architecture/docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dotnet-architecture/docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dotnet-architecture/docs/teams","hooks_url":"https://api.github.com/repos/dotnet-architecture/docs/hooks","issue_events_url":"https://api.github.com/repos/dotnet-architecture/docs/issues/events{/number}","events_url":"https://api.github.com/repos/dotnet-architecture/docs/events","assignees_url":"https://api.github.com/repos/dotnet-architecture/docs/assignees{/user}","branches_url":"https://api.github.com/repos/dotnet-architecture/docs/branches{/branch}","tags_url":"https://api.github.com/repos/dotnet-architecture/docs/tags","blobs_url":"https://api.github.com/repos/dotnet-architecture/docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dotnet-architecture/docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dotnet-architecture/docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/dotnet-architecture/docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dotnet-architecture/docs/statuses/{sha}","languages_url":"https://api.github.com/repos/dotnet-architecture/docs/languages","stargazers_url":"https://api.github.com/repos/dotnet-architecture/docs/stargazers","contributors_url":"https://api.github.com/repos/dotnet-architecture/docs/contributors","subscribers_url":"https://api.github.com/repos/dotnet-architecture/docs/subscribers","subscription_url":"https://api.github.com/repos/dotnet-architecture/docs/subscription","commits_url":"https://api.github.com/repos/dotnet-architecture/docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/dotnet-architecture/docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/dotnet-architecture/docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/dotnet-architecture/docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/dotnet-architecture/docs/contents/{+path}","compare_url":"https://api.github.com/repos/dotnet-architecture/docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dotnet-architecture/docs/merges","archive_url":"https://api.github.com/repos/dotnet-architecture/docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dotnet-architecture/docs/downloads","issues_url":"https://api.github.com/repos/dotnet-architecture/docs/issues{/number}","pulls_url":"https://api.github.com/repos/dotnet-architecture/docs/pulls{/number}","milestones_url":"https://api.github.com/repos/dotnet-architecture/docs/milestones{/number}","notifications_url":"https://api.github.com/repos/dotnet-architecture/docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dotnet-architecture/docs/labels{/name}","releases_url":"https://api.github.com/repos/dotnet-architecture/docs/releases{/id}","deployments_url":"https://api.github.com/repos/dotnet-architecture/docs/deployments","created_at":"2018-04-28T20:13:30Z","updated_at":"2019-02-21T08:40:36Z","pushed_at":"2019-02-21T18:56:08Z","git_url":"git://github.com/dotnet-architecture/docs.git","ssh_url":"git@github.com:dotnet-architecture/docs.git","clone_url":"https://github.com/dotnet-architecture/docs.git","svn_url":"https://github.com/dotnet-architecture/docs","homepage":"https://docs.microsoft.com/dotnet","size":568453,"stargazers_count":10,"watchers_count":10,"language":"PowerShell","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":4,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":4,"open_issues":0,"watchers":10,"default_branch":"master"}},"base":{"label":"dotnet:master","ref":"master","sha":"bfdd623863e6bac6d4ca2c19a76ccf7dde9f131c","user":{"login":"dotnet","id":9141961,"node_id":"MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=","avatar_url":"https://avatars0.githubusercontent.com/u/9141961?v=4","gravatar_id":"","url":"https://api.github.com/users/dotnet","html_url":"https://github.com/dotnet","followers_url":"https://api.github.com/users/dotnet/followers","following_url":"https://api.github.com/users/dotnet/following{/other_user}","gists_url":"https://api.github.com/users/dotnet/gists{/gist_id}","starred_url":"https://api.github.com/users/dotnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotnet/subscriptions","organizations_url":"https://api.github.com/users/dotnet/orgs","repos_url":"https://api.github.com/users/dotnet/repos","events_url":"https://api.github.com/users/dotnet/events{/privacy}","received_events_url":"https://api.github.com/users/dotnet/received_events","type":"Organization","site_admin":false},"repo":{"id":35890081,"node_id":"MDEwOlJlcG9zaXRvcnkzNTg5MDA4MQ==","name":"docs","full_name":"dotnet/docs","private":false,"owner":{"login":"dotnet","id":9141961,"node_id":"MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=","avatar_url":"https://avatars0.githubusercontent.com/u/9141961?v=4","gravatar_id":"","url":"https://api.github.com/users/dotnet","html_url":"https://github.com/dotnet","followers_url":"https://api.github.com/users/dotnet/followers","following_url":"https://api.github.com/users/dotnet/following{/other_user}","gists_url":"https://api.github.com/users/dotnet/gists{/gist_id}","starred_url":"https://api.github.com/users/dotnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotnet/subscriptions","organizations_url":"https://api.github.com/users/dotnet/orgs","repos_url":"https://api.github.com/users/dotnet/repos","events_url":"https://api.github.com/users/dotnet/events{/privacy}","received_events_url":"https://api.github.com/users/dotnet/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/dotnet/docs","description":"This repository contains .NET Documentation.","fork":false,"url":"https://api.github.com/repos/dotnet/docs","forks_url":"https://api.github.com/repos/dotnet/docs/forks","keys_url":"https://api.github.com/repos/dotnet/docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dotnet/docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dotnet/docs/teams","hooks_url":"https://api.github.com/repos/dotnet/docs/hooks","issue_events_url":"https://api.github.com/repos/dotnet/docs/issues/events{/number}","events_url":"https://api.github.com/repos/dotnet/docs/events","assignees_url":"https://api.github.com/repos/dotnet/docs/assignees{/user}","branches_url":"https://api.github.com/repos/dotnet/docs/branches{/branch}","tags_url":"https://api.github.com/repos/dotnet/docs/tags","blobs_url":"https://api.github.com/repos/dotnet/docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dotnet/docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dotnet/docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/dotnet/docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dotnet/docs/statuses/{sha}","languages_url":"https://api.github.com/repos/dotnet/docs/languages","stargazers_url":"https://api.github.com/repos/dotnet/docs/stargazers","contributors_url":"https://api.github.com/repos/dotnet/docs/contributors","subscribers_url":"https://api.github.com/repos/dotnet/docs/subscribers","subscription_url":"https://api.github.com/repos/dotnet/docs/subscription","commits_url":"https://api.github.com/repos/dotnet/docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/dotnet/docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/dotnet/docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/dotnet/docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/dotnet/docs/contents/{+path}","compare_url":"https://api.github.com/repos/dotnet/docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dotnet/docs/merges","archive_url":"https://api.github.com/repos/dotnet/docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dotnet/docs/downloads","issues_url":"https://api.github.com/repos/dotnet/docs/issues{/number}","pulls_url":"https://api.github.com/repos/dotnet/docs/pulls{/number}","milestones_url":"https://api.github.com/repos/dotnet/docs/milestones{/number}","notifications_url":"https://api.github.com/repos/dotnet/docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dotnet/docs/labels{/name}","releases_url":"https://api.github.com/repos/dotnet/docs/releases{/id}","deployments_url":"https://api.github.com/repos/dotnet/docs/deployments","created_at":"2015-05-19T15:13:32Z","updated_at":"2019-02-21T19:09:06Z","pushed_at":"2019-02-21T19:34:42Z","git_url":"git://github.com/dotnet/docs.git","ssh_url":"git@github.com:dotnet/docs.git","clone_url":"https://github.com/dotnet/docs.git","svn_url":"https://github.com/dotnet/docs","homepage":"https://docs.microsoft.com/dotnet","size":526039,"stargazers_count":1605,"watchers_count":1605,"language":"PowerShell","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":3116,"mirror_url":null,"archived":false,"open_issues_count":1177,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":3116,"open_issues":1177,"watchers":1605,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dotnet/docs/pulls/10609"},"html":{"href":"https://github.com/dotnet/docs/pull/10609"},"issue":{"href":"https://api.github.com/repos/dotnet/docs/issues/10609"},"comments":{"href":"https://api.github.com/repos/dotnet/docs/issues/10609/comments"},"review_comments":{"href":"https://api.github.com/repos/dotnet/docs/pulls/10609/comments"},"review_comment":{"href":"https://api.github.com/repos/dotnet/docs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dotnet/docs/pulls/10609/commits"},"statuses":{"href":"https://api.github.com/repos/dotnet/docs/statuses/b3f2d2500fb3c8d34598dcfbfdfcfb6305e0cfa2"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"rpetrusha"}}