directory search
Compose About versions and upgrading (Compose) ASP.NET Core + SQL Server on Linux (Compose) CLI environment variables (Compose) Command-line completion (Compose) Compose(组成) Compose command-line reference(组合命令行参考) Control startup order (Compose) Django and PostgreSQL (Compose) Docker stacks and distributed application bundles (Compose) docker-compose build(docker-compose构建) docker-compose bundle docker-compose config docker-compose create docker-compose down docker-compose events docker-compose exec docker-compose help docker-compose images docker-compose kill docker-compose logs docker-compose pause docker-compose port docker-compose ps docker-compose pull docker-compose push docker-compose restart docker-compose rm docker-compose run docker-compose scale docker-compose start docker-compose stop docker-compose top docker-compose unpause docker-compose up Environment file (Compose) Environment variables in Compose Extend services in Compose Frequently asked questions (Compose) Getting started (Compose) Install Compose Link environment variables (deprecated) (Compose) Networking in Compose Overview of Docker Compose Overview of docker-compose CLI Quickstart: Compose and WordPress Rails and PostgreSQL (Compose) Sample apps with Compose Using Compose in production Using Compose with Swarm Engine .NET Core application (Engine) About images, containers, and storage drivers (Engine) Add nodes to the swarm (Engine) Apply custom metadata (Engine) Apply rolling updates (Engine) apt-cacher-ng Best practices for writing Dockerfiles (Engine) Binaries (Engine) Bind container ports to the host (Engine) Breaking changes (Engine) Build your own bridge (Engine) Configure container DNS (Engine) Configure container DNS in user-defined networks (Engine) CouchDB (Engine) Create a base image (Engine) Create a swarm (Engine) Customize the docker0 bridge (Engine) Debian (Engine) Default bridge network Delete the service (Engine) Deploy a service (Engine) Deploy services to a swarm (Engine) Deprecated Engine features Docker container networking (Engine) Docker overview (Engine) Docker run reference (Engine) Dockerfile reference (Engine) Dockerize an application Drain a node (Engine) Engine FAQ (Engine) Fedora (Engine) Get started (Engine) Get started with macvlan network driver (Engine) Get started with multi-host networking (Engine) How nodes work (Engine) How services work (Engine) Image management (Engine) Inspect the service (Engine) Install Docker (Engine) IPv6 with Docker (Engine) Join nodes to a swarm (Engine) Legacy container links (Engine) Lock your swarm (Engine) Manage nodes in a swarm (Engine) Manage sensitive data with Docker secrets (Engine) Manage swarm security with PKI (Engine) Manage swarm service networks (Engine) Migrate to Engine 1.10 Optional Linux post-installation steps (Engine) Overview (Engine) PostgreSQL (Engine) Raft consensus in swarm mode (Engine) Riak (Engine) Run Docker Engine in swarm mode Scale the service (Engine) SDKs (Engine) Select a storage driver (Engine) Set up for the tutorial (Engine) SSHd (Engine) Storage driver overview (Engine) Store service configuration data (Engine) Swarm administration guide (Engine) Swarm mode key concepts (Engine) Swarm mode overlay network security model (Engine) Swarm mode overview (Engine) Understand container communication (Engine) Use multi-stage builds (Engine) Use swarm mode routing mesh (Engine) Use the AUFS storage driver (Engine) Use the Btrfs storage driver (Engine) Use the Device mapper storage driver (Engine) Use the OverlayFS storage driver (Engine) Use the VFS storage driver (Engine) Use the ZFS storage driver (Engine) Engine: Admin Guide Amazon CloudWatch logs logging driver (Engine) Bind mounts (Engine) Collect Docker metrics with Prometheus (Engine) Configuring and running Docker (Engine) Configuring logging drivers (Engine) Control and configure Docker with systemd (Engine) ETW logging driver (Engine) Fluentd logging driver (Engine) Format command and log output (Engine) Google Cloud logging driver (Engine) Graylog Extended Format (GELF) logging driver (Engine) Journald logging driver (Engine) JSON File logging driver (Engine) Keep containers alive during daemon downtime (Engine) Limit a container's resources (Engine) Link via an ambassador container (Engine) Log tags for logging driver (Engine) Logentries logging driver (Engine) PowerShell DSC usage (Engine) Prune unused Docker objects (Engine) Run multiple services in a container (Engine) Runtime metrics (Engine) Splunk logging driver (Engine) Start containers automatically (Engine) Storage overview (Engine) Syslog logging driver (Engine) tmpfs mounts Troubleshoot volume problems (Engine) Use a logging driver plugin (Engine) Using Ansible (Engine) Using Chef (Engine) Using Puppet (Engine) View a container's logs (Engine) Volumes (Engine) Engine: CLI Daemon CLI reference (dockerd) (Engine) docker docker attach docker build docker checkpoint docker checkpoint create docker checkpoint ls docker checkpoint rm docker commit docker config docker config create docker config inspect docker config ls docker config rm docker container docker container attach docker container commit docker container cp docker container create docker container diff docker container exec docker container export docker container inspect docker container kill docker container logs docker container ls docker container pause docker container port docker container prune docker container rename docker container restart docker container rm docker container run docker container start docker container stats docker container stop docker container top docker container unpause docker container update docker container wait docker cp docker create docker deploy docker diff docker events docker exec docker export docker history docker image docker image build docker image history docker image import docker image inspect docker image load docker image ls docker image prune docker image pull docker image push docker image rm docker image save docker image tag docker images docker import docker info docker inspect docker kill docker load docker login docker logout docker logs docker network docker network connect docker network create docker network disconnect docker network inspect docker network ls docker network prune docker network rm docker node docker node demote docker node inspect docker node ls docker node promote docker node ps docker node rm docker node update docker pause docker plugin docker plugin create docker plugin disable docker plugin enable docker plugin inspect docker plugin install docker plugin ls docker plugin push docker plugin rm docker plugin set docker plugin upgrade docker port docker ps docker pull docker push docker rename docker restart docker rm docker rmi docker run docker save docker search docker secret docker secret create docker secret inspect docker secret ls docker secret rm docker service docker service create docker service inspect docker service logs docker service ls docker service ps docker service rm docker service scale docker service update docker stack docker stack deploy docker stack ls docker stack ps docker stack rm docker stack services docker start docker stats docker stop docker swarm docker swarm ca docker swarm init docker swarm join docker swarm join-token docker swarm leave docker swarm unlock docker swarm unlock-key docker swarm update docker system docker system df docker system events docker system info docker system prune docker tag docker top docker unpause docker update docker version docker volume docker volume create docker volume inspect docker volume ls docker volume prune docker volume rm docker wait Use the Docker command line (Engine) Engine: Extend Access authorization plugin (Engine) Docker log driver plugins Docker network driver plugins (Engine) Extending Engine with plugins Managed plugin system (Engine) Plugin configuration (Engine) Plugins API (Engine) Volume plugins (Engine) Engine: Security AppArmor security profiles for Docker (Engine) Automation with content trust (Engine) Content trust in Docker (Engine) Delegations for content trust (Engine) Deploying Notary (Engine) Docker security (Engine) Docker security non-events (Engine) Isolate containers with a user namespace (Engine) Manage keys for content trust (Engine) Play in a content trust sandbox (Engine) Protect the Docker daemon socket (Engine) Seccomp security profiles for Docker (Engine) Secure Engine Use trusted images Using certificates for repository client verification (Engine) Engine: Tutorials Engine tutorials Network containers (Engine) Get Started Part 1: Orientation Part 2: Containers Part 3: Services Part 4: Swarms Part 5: Stacks Part 6: Deploy your app Machine Amazon Web Services (Machine) Digital Ocean (Machine) docker-machine active docker-machine config docker-machine create docker-machine env docker-machine help docker-machine inspect docker-machine ip docker-machine kill docker-machine ls docker-machine provision docker-machine regenerate-certs docker-machine restart docker-machine rm docker-machine scp docker-machine ssh docker-machine start docker-machine status docker-machine stop docker-machine upgrade docker-machine url Driver options and operating system defaults (Machine) Drivers overview (Machine) Exoscale (Machine) Generic (Machine) Get started with a local VM (Machine) Google Compute Engine (Machine) IBM Softlayer (Machine) Install Machine Machine Machine CLI overview Machine command-line completion Machine concepts and help Machine overview Microsoft Azure (Machine) Microsoft Hyper-V (Machine) Migrate from Boot2Docker to Machine OpenStack (Machine) Oracle VirtualBox (Machine) Provision AWS EC2 instances (Machine) Provision Digital Ocean Droplets (Machine) Provision hosts in the cloud (Machine) Rackspace (Machine) VMware Fusion (Machine) VMware vCloud Air (Machine) VMware vSphere (Machine) Notary Client configuration (Notary) Common Server and signer configurations (Notary) Getting started with Notary Notary changelog Notary configuration files Running a Notary service Server configuration (Notary) Signer configuration (Notary) Understand the service architecture (Notary) Use the Notary client
characters

要开始在 Debian 上使用 Docker CE,请确保满足先决条件,然后安装 Docker。

先决条件

Docker EE客户

Docker EE 不支持 Debian。有关不同 Docker 版本支持的操作系统和发行版的列表,请参阅 Docker 变体。

OS要求

要安装 Docker CE,您需要这些 Debian 或 Raspbian 版本的64位版本:

  • Stretch (stable)

  • Jessie 8.0 (LTS) / Raspbian Jessie

  • Wheezy 7.7 (LTS)

Docker CE 在Jessie 和 Stretch 的x86_64(或amd64)和armhf架构上都受支持。

卸载旧版本

老版本的 Docker 被称为dockerdocker-engine。如果这些已安装,请将其卸载:

$ sudo apt-get remove docker docker-engine docker.io

如果apt-get报告说没有安装这些软件包,那就行了。

/var/lib/docker/包括图像,容器,卷和网络的内容将被保留。现在调用Docker CE包docker-ce

Wheezy 7.7的额外步骤

  • 您至少需要 Linux 内核的3.10版本。Debian Wheezy 随附3.2版本,因此您可能需要更新内核。检查你的内核版本:$ uname -r

  • 启用backports存储库。请参阅Debian文档。

安装Docker CE

您可以根据您的需要以不同的方式安装Docker CE:

  • 大多数用户设置 Docker 的存储库并从中进行安装,以便安装和升级任务。这是推荐的方法。

  • 有些用户下载 DEB 软件包并手动安装,并完全手动管理升级。这对于在无法访问互联网的空隙系统上安装 Docker 等情况很有用。

  • 在测试和开发环境中,有些用户选择使用自动便利脚本来使用存储库安装 Docker.Install。首次在新主机上安装Docker CE 之前,需要设置 Docker 存储库。之后,您可以从存储库安装并更新 Docker。设置存储库

  • 更新apt包裹索引:

$ sudo apt-get update

  1. 安装软件包以允许apt通过HTTPS使用存储库:       Jessie或Stretch:$ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg2 \ software-properties-common                      Wheezy:$ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ python-software-properties

  1. 添加Docker的官方GPG密钥:

$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add  -

验证密钥ID是9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88

$ sudo apt-key指纹0EBFCD88 pub 4096R / 0EBFCD88 2017-02-22 Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 uid Docker发布(CE deb)docker@docker.com sub 4096R / F273FCD8 2017-02-22

  1. 使用以下命令设置稳定的存储库。即使您想从边缘测试存储库安装构建,也总是需要稳定的存储库。要添加边缘测试存储库,请在下面的命令中添加单词或(或两者)后面的单词。  :在下面的子命令返回的Debian发行版的名称,如。要还加了库,添加后在命令的最后一行。 x86_64:$ sudo add-apt-repository \“deb arch = amd64edgeteststablelsb_release -csjessieedgestablehttps://download.docker.com/linux/debian \ $(lsb_release -cs)\ stable“   armhf:$ echo”deb arch = armhf https://download.docker.com/linux/debian \ $(lsb_release  - cs)stable“| \ sudo tee /etc/apt/sources.list.d/docker.list

  1. Wheezy onlyWheezy上的版本add-apt-repository添加了一个deb-src不存在的存储库。您需要注释掉此存储库或运行apt-get update将失败。编辑/etc/apt/sources.list。找到如下所示的行,并将其注释掉或删除它:

deb-src arch = amd64 https://download.docker.com/linux/debian wheezy stable

保存并退出文件。

注意:从 Docker 17.06 开始,稳定版本也被推到边缘测试版本库。

了解稳定边缘频道。

安装Docker CE

注意:在Debian for ARM上,您可以继续执行此步骤。对于Raspbian,请向下滚动以遵循其特定步骤。

  1. 更新apt软件包索引。$ sudo apt-get update

  1. 安装最新版本的 Docker CE,或转到下一步安装特定版本。任何现有的 Docker安装都会被替换。

$sudo apt-get install docker-ce

有多个 Docker 存储库?

如果启用了多个 Docker 存储库,则安装或更新时未指定版本apt-get installapt-get update命令将始终安装尽可能高的版本,这可能不适合您的稳定性需求。

  1. 在生产系统上,您应该安装特定版本的Docker CE,而不是始终使用最新版本。此输出被截断。列出可用的版本:$ apt-cache madison docker-ce docker-ce | 17.06.0〜ce-0〜debian | https://download.docker.com/linux/debian jessie / stable amd64软件包列表的内容取决于启用了哪些存储库。选择一个特定的版本进行安装。第二列是版本字符串。第三列是存储库名称,它指示软件包来自哪个存储库并且通过扩展其稳定性级别。要安装特定版本,请将版本字符串附加到包名称,并用等号(=)将它们分开:$ sudo apt-get install docker-ce = <VERSION_STRING> Docker守护进程自动启动。

  1. 通过运行hello-world映像验证是否正确安装了Docker CE 。

x86_64

$ sudo docker run hello-world

armhf

$ sudo docker run armhf / hello-world

该命令下载测试图像并将其运行到容器中。当容器运行时,它会打印一条信息消息并退出。

Docker CE 已安装并正在运行。您需要使用sudo运行 Docker 命令。继续 Linux postinstall 以允许非特权用户运行 Docker 命令以及其他可选配置步骤。

升级Docker CE

要升级 Docker CE,请先运行sudo apt-get update,然后按照安装说明进行操作,然后选择要安装的新版本。

Install on Raspbian (Raspberry Pi)

注意:如果您使用推荐的$ curl -sSL https://get.docker.com | sh命令,则这不是必需的。

一旦你添加了Docker仓库/etc/apt/sources.list.d/,你应该看看docker.list你是否:

$ ls /etc/apt/sources.list.d/

该内容docker.list应该是:

deb [arch=armhf] https://apt.dockerproject.org/repo raspbian-jessie main

如果你没有看到,在docker.list,那么无论注释行了,或者rmdocker.list文件。

一旦你确认你有正确的存储库,你可以继续安装Docker。

  1. 更新apt软件包索引。$ sudo apt-get update

  1. 安装最新版本的 Docker CE,或转到下一步安装特定版本。任何现有的 Docker CE 安装都将被替换。

使用此命令安装最新版本的 Docker:

$ sudo apt-get install docker-engine

注意:默认情况下,Raspbian上的Docker是Docker Community Edition。

注意:如果curl -sSL https://get.docker.com | sh没有使用,docker将不会自动完成!你必须手动添加它。

  1. 通过运行hello-world映像验证是否正确安装了Docker CE 。$ sudo docker运行hypriot / armhf-hello-world这个命令下载一个测试图像并在一个容器中运行它。当容器运行时,它会打印一条信息消息并退出。(可选)为Raspbian安装Docker Compose Hypriot为Raspbian 提供了一个静态二进制文件docker-compose。要使用它,首先遵循Hypriot 关于设置存储库的说明,然后运行以下命令:sudo apt-get install从软件包中执行docker-composeInstall如果不能使用Docker的存储库来安装Docker CE,则可以下载.deb文件以供发布,手动安装。每次要升级Docker时,都需要下载一个新文件。

  1. 转到https://download.docker.com/linux/debian/dists/,选择您的 Debian 版本,浏览到pool/stable/,选择amd64或者armhf,然后下载.deb您想要安装的Docker CE版本的文件。

注意:要安装边缘软件包,stable请将 URL 中的单词更改为edge。了解稳定边缘频道。

  1. 安装 Docker CE,将下面的路径更改为您下载 Docker 软件包的路径。$ sudo dpkg -i /path/to/package.deb Docker 守护进程自动启动。

  1. 通过运行hello-world映像验证是否正确安装了Docker CE 。

$ sudo docker run hello-world

该命令下载测试图像并将其运行到容器中。当容器运行时,它会打印一条信息消息并退出。

Docker CE 已安装并正在运行。您需要使用sudo运行 Docker 命令。继续进行 Linux 的安装后步骤,以允许非特权用户运行Docker 命令以及其他可选配置步骤。

升级Docker CE

要升级 Docker,请下载较新的软件包文件并重复安装过程,指向新文件。

使用便捷脚本进行安装

Docker 在 get.docker.com 和 test.docker.com上提供了便捷脚本,用于将 Docker CE 的稳定版和测试版快速且非交互地安装到开发环境中。脚本的源代码位于docker-install存储库中。不建议在生产环境中使用这些脚本,并且在使用它们之前应了解其潜在风险:

  • 脚本需要rootsudo权限才能运行。因此,在运行脚本之前,应仔细检查和审核脚本。

  • 这些脚本会尝试检测您的 Linux 发行版和版本,并为您配置您的软件包管理系统。另外,这些脚本不允许您自定义任何安装参数。这可能会导致不支持的配置,无论是从 Docker 的角度还是从您自己的组织准则和标准。

  • 这些脚本会安装包管理器的所有依赖关系和建议,而不要求确认。这可能会安装大量的包,具体取决于主机的当前配置。

  • 如果 Docker 已经使用其他机制安装在主机上,请不要使用便捷脚本。

本示例使用 get.docker.com 上的脚本在 Linux 上安装 Docker CE 的最新稳定版本。要安装最新的测试版本,请改用test.docker.com。在下面的每个命令,取代每次出现gettest

本节中的信息解释如何自定义 Docker 默认桥。这是一个bridge网络名bridge安装 Docker 时自动创建。

注意:通过 Docker 网络功能,您可以创建除默认网桥以外的用户定义网络。

默认情况下,Docker 服务器创建并配置主机系统的docker0一个称为的网络接口docker0,它是一个以太网桥设备。如果您在启动容器时未指定其他网络,则容器将连接到网桥,并且来自和去往容器的所有流量都会通过网桥流向 Docker 守护程序, Docker 守护程序将代表容器处理路由。

Docker docker0使用 IP 地址,网络掩码和 IP 分配范围进行配置。连接到默认网桥的容器在此范围内分配 IP 地址。某些默认设置适用于默认网桥,除非您另行指定。例如,默认的最大传输单元(MTU)或容器允许的最大数据包长度默认为1500字节。

您可以使用该dockerd命令的标志来配置默认桥接网络的设置。但是,配置 Docker 守护进程的推荐方式是使用daemon.json位于/etc/docker/Linux上的文件。如果该文件不存在,请创建它。您可以指定一个或多个以下设置来配置默认桥接网络:

{  "bip": "192.168.1.5/24",  "fixed-cidr": "10.20.0.0/16",  "fixed-cidr-v6": "2001:db8::/64",  "mtu": 1500,  "default-gateway": "10.20.1.1",  "default-gateway-v6": "2001:db8:abcd::89",  "dns": ["10.20.1.2","10.20.1.3"]}

在对daemon.json文件进行更改后重新启动 Docker 。

相同的选项作为标志显示dockerd,并分别给出解释:

  • --bip=CIDRdocker0使用标准 CIDR 表示法为桥提供特定的IP地址和网络掩码。例如:192.168.1.5/24

  • --fixed-cidr=CIDR并且--fixed-cidr-v6=CIDRv6docker0使用标准的 CIDR 表示法来限制子网的IP范围。例如:172.16.1.0/28。此范围必须是固定IP的IPv4范围10.20.0.0/16,并且必须是网桥 IP 范围的子集(docker0或使用set --bridge)。例如,--fixed-cidr=192.168.1.0/25对于您的容器,将从192.168.1.0/24子网中包含的前半部分地址中选择 IP。

  • --mtu=BYTES:覆盖最大数据包长度docker0

  • --default-gateway=Container default Gateway IPV4 address--default-gateway-v6=Container default gateway IPV6 address:指定连接到docker0网桥的容器的默认网关,默认网关控制它们在哪里路由流量。适用于使用--bip--fixed-cidr标志设置的地址。例如,你可以配置--fixed-cidr=172.17.2.0/24default-gateway=172.17.1.1

  • --dns=[]:要使用的 DNS 服务器。例如:--dns=172.17.2.10

一旦启动并运行了一个或多个容器,您可以docker0通过brctl在主机上运行命令并查看interfaces输出的列来确认Docker 已将其正确连接到网桥。此示例显示了docker0连接了两个容器的桥:

如果该brctl命令未安装在您的 Docker 主机上,那么在 Ubuntu 上您应该可以运行sudo apt-get install bridge-utils以安装它。

Previous article: Next article: