Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
forked frommoby/moby

Docker - the open-source application container engine

License

NotificationsYou must be signed in to change notification settings

1647917675/docker

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Docker is an open source project to pack, ship and run any applicationas a lightweight container.

Docker containers are bothhardware-agnostic andplatform-agnostic.This means they can run anywhere, from your laptop to the largestcloud compute instance and everything in between - and they don't requireyou to use a particular language, framework or packaging system. Thatmakes them great building blocks for deploying and scaling web apps,databases, and backend services without depending on a particular stackor provider.

Docker began as an open-source implementation of the deployment engine whichpowereddotCloud,a popular Platform-as-a-Service. It benefits directly from the experienceaccumulated over several years of large-scale operation and support of hundredsof thousands of applications and databases.

Docker logo

Security Disclosure

Security is very important to us. If you have any issue regarding security,please disclose the information responsibly by sending an email tosecurity@docker.com and not by creating a GitHub issue.

Better than VMs

A common method for distributing applications and sandboxing theirexecution is to use virtual machines, or VMs. Typical VM formats areVMware's vmdk, Oracle VirtualBox's vdi, and Amazon EC2's ami. In theorythese formats should allow every developer to automatically packagetheir application into a "machine" for easy distribution and deployment.In practice, that almost never happens, for a few reasons:

  • Size: VMs are very large which makes them impractical to storeand transfer.
  • Performance: running VMs consumes significant CPU and memory,which makes them impractical in many scenarios, for example localdevelopment of multi-tier applications, and large-scale deploymentof cpu and memory-intensive applications on large numbers ofmachines.
  • Portability: competing VM environments don't play well with eachother. Although conversion tools do exist, they are limited andadd even more overhead.
  • Hardware-centric: VMs were designed with machine operators inmind, not software developers. As a result, they offer verylimited tooling for what developers need most: building, testingand running their software. For example, VMs offer no facilitiesfor application versioning, monitoring, configuration, logging orservice discovery.

By contrast, Docker relies on a different sandboxing method known ascontainerization. Unlike traditional virtualization, containerizationtakes place at the kernel level. Most modern operating system kernelsnow support the primitives necessary for containerization, includingLinux withopenvz,vserver and more recentlylxc, Solaris withzones,and FreeBSD withJails.

Docker builds on top of these low-level primitives to offer developers aportable format and runtime environment that solves all four problems.Docker containers are small (and their transfer can be optimized withlayers), they have basically zero memory and cpu overhead, they arecompletely portable, and are designed from the ground up with anapplication-centric design.

Perhaps best of all, because Docker operates at the OS level, it can still berun inside a VM!

Plays well with others

Docker does not require you to buy into a particular programminglanguage, framework, packaging system, or configuration language.

Is your application a Unix process? Does it use files, tcp connections,environment variables, standard Unix streams and command-line argumentsas inputs and outputs? Then Docker can run it.

Can your application's build be expressed as a sequence of suchcommands? Then Docker can build it.

Escape dependency hell

A common problem for developers is the difficulty of managing alltheir application's dependencies in a simple and automated way.

This is usually difficult for several reasons:

  • Cross-platform dependencies. Modern applications often depend ona combination of system libraries and binaries, language-specificpackages, framework-specific modules, internal componentsdeveloped for another project, etc. These dependencies live indifferent "worlds" and require different tools - these toolstypically don't work well with each other, requiring awkwardcustom integrations.

  • Conflicting dependencies. Different applications may depend ondifferent versions of the same dependency. Packaging tools handlethese situations with various degrees of ease - but they allhandle them in different and incompatible ways, which again forcesthe developer to do extra work.

  • Custom dependencies. A developer may need to prepare a customversion of their application's dependency. Some packaging systemscan handle custom versions of a dependency, others can't - and allof them handle it differently.

Docker solves the problem of dependency hell by giving the developer a simpleway to expressall their application's dependencies in one place, whilestreamlining the process of assembling them. If this makes you think ofXKCD 927, don't worry. Docker doesn'treplace your favorite packaging systems. It simply orchestratestheir use in a simple and repeatable way. How does it do that? Withlayers.

Docker defines a build as running a sequence of Unix commands, oneafter the other, in the same container. Build commands modify thecontents of the container (usually by installing new files on thefilesystem), the next command modifies it some more, etc. Since eachbuild command inherits the result of the previous commands, theorder in which the commands are executed expressesdependencies.

Here's a typical Docker build process:

FROM ubuntu:12.04RUN apt-get update&& apt-get install -y python python-pip curlRUN curl -sSL https://github.com/shykes/helloflask/archive/master.tar.gz| tar -xzvRUNcd helloflask-master&& pip install -r requirements.txt

Note that Docker doesn't carehow dependencies are built - as longas they can be built by running a Unix command in a container.

Getting started

Docker can be installed either on your computer for building applications oron servers for running them. To get started,check out the installationinstructions in thedocumentation.

Usage examples

Docker can be used to run short-lived commands, long-running daemons(app servers, databases, etc.), interactive shell sessions, etc.

You can find alist of real-worldexamples in thedocumentation.

Under the hood

Under the hood, Docker is built on the following components:

Contributing to DockerGoDoc

Master (Linux)Experimental (Linux)WindowsFreeBSD
Jenkins Build StatusJenkins Build StatusBuild StatusBuild Status

Want to hack on Docker? Awesome! We haveinstructions to help you getstarted contributing code or documentation.

These instructions are probably not perfect, please let us know if anythingfeels wrong or incomplete. Better yet, submit a PR and improve them yourself.

Getting the development builds

Want to run Docker from a master build? You can downloadmaster builds atmaster.dockerproject.org.They are updated with each commit merged into the master branch.

Don't know how to use that super cool new feature in the master build? Checkout the master docs atdocs.master.dockerproject.org.

How the project is run

Docker is a very, very active project. If you want to learn more about how it is run,or want to get more involved, the best place to start isthe project directory.

We are always open to suggestions on process improvements, and are always looking for more maintainers.

Talking to other Docker users and contributors

Internet Relay Chat (IRC)

IRC is a direct line to our most knowledgeable Docker users; we have both the#docker and#docker-dev group onirc.freenode.net. IRC is a rich chat protocol but it can overwhelm new users. You can searchour chat archives.

Read ourIRC quickstart guide for an easy way to get started.
Docker Community Forums TheDocker Engine group is for users of the Docker Engine project.
Google Groups Thedocker-dev group is for contributors and other people contributing to the Docker project. You can join this group without a Google account by sending an email todocker-dev+subscribe@googlegroups.com. You'll receive a join-request message; simply reply to the message to confirm your subscription.
Twitter You can followDocker's Twitter feed to get updates on our products. You can also tweet us questions or just share blogs or stories.
Stack Overflow Stack Overflow has over 7000 Docker questions listed. We regularly monitorDocker questions and so do many other knowledgeable Docker users.

Legal

Brought to you courtesy of our legal counsel. For more context,please see theNOTICE document in this repo.

Use and transfer of Docker may be subject to certain restrictions by theUnited States and other governments.

It is your responsibility to ensure that your use and/or transfer does notviolate applicable laws.

For more information, please seehttps://www.bis.doc.gov

Licensing

Docker is licensed under the Apache License, Version 2.0. SeeLICENSE for the fulllicense text.

Other Docker Related Projects

There are a number of projects under development that are based on Docker'score technology. These projects expand the tooling built around theDocker platform to broaden its application and utility.

  • Docker Registry: Registryserver for Docker (hosting/delivery of repositories and images)
  • Docker Machine: Machine managementfor a container-centric world
  • Docker Swarm: A Docker-native clusteringsystem
  • Docker Compose (formerly Fig):Define and run multi-container apps
  • Kitematic: The easiest way to useDocker on Mac and Windows

If you know of another project underway that should be listed here, please helpus keep this list up-to-date by submitting a PR.

Awesome-Docker

You can find more projects, tools and articles related to Docker on theawesome-docker list. Add your project there.

About

Docker - the open-source application container engine

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go92.8%
  • Shell6.8%
  • Makefile0.2%
  • PowerShell0.1%
  • C0.1%
  • Vim Script0.0%

[8]ページ先頭

©2009-2025 Movatter.jp