docker ubuntu 启动 docker镜像下载

大家好,今天来为大家分享docker ubuntu 启动的一些知识点,和docker镜像下载的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!

如何在Ubuntu上借助Docker管理Linux容器

虽说标准的硬件虚拟化技术(比如KVM、Xen或Hyper-V)擅长于在一个物理主机上运行多个操作系统的完全隔离的实例,但这种虚拟化技术在性能、资源和资源配置时间等方面存在各种各样的开销。标准的机器虚拟化实际上可能没有必要,这取决于你的实际使用场合。

另外一种轻型虚拟化方法就是所谓的Linux容器(LXC),它提供了操作系统级别的虚拟化。由于不存在运行虚拟机带来的开销,LXC让用户可以在轻型容器沙盒里面运行标准Linux操作系统的多个实例。如果你搭建一个可复制的开发/测试环境,或者在安全沙盒里面部署应用程序,容器就派得上大用场。

Docker就是为了便于部署Linux容器而开发的这样一款开源工具。Docker正迅速成为容器技术方面的一项事实上的标准,已经被诸如Ubuntu和红帽之类的各大Linux发行版所采用。

我在本教程中将演示如何在Ubuntu 14.04上,借助Docker管理Linux容器。请注意:对Ubuntu的早期版本而言,操作步骤可能略有不同。

眼下,Ubuntu上可用的Docker程序包只支持64位系统。想在32位机器上运行它,你就要利用源代码构建32位版本的Docker(详见这里)。

安装Docker

借助apt-get命令,安装Docker是件轻而易举的事。

$ sudo apt-get install docker.io

为了允许非根用户也可以运行Docker,将你自己添加到docker群组。下面这个命令会允许当前用户运行Docker,无需根用户权限。

$ sudo usermod-a-G docker$USER

退出,然后重新登录,以激活群组成员的变化。

下一步,编辑Docker配置文件,以便更新Docker二进制代码的位置。

$ sudo vi/etc/default/docker.io

DOCKER="/usr/bin/docker.io"

重启Docker服务。

$ sudo service docker.io restart

管理Docker容器

如果你想启动Ubuntu操作系统的一个新的Docker容器,首先需要获取Ubuntu Docker映像文件。下面这个命令会通过网络下载Docker映像文件。

$ docker pull ubuntu

你可以以一种交互模式来开启Ubuntu Docker,如下所示。最后一个参数“/bin/bash”是一旦启动就将在容器里面执行的命令,这里是一个简单的bash外壳命令。

$ docker run-i-t ubuntu/bin/bash

上述命令会立即启动一个Ubuntu容器(这正是容器的魅力所在!),并为你提供容器里面的外壳提示符。这时候,你应该能够访问沙盒环境里面的标准的Ubuntu操作系统了。

想退出Docker容器,在容器里面的提示符处键入“exit”。

你可以启动不同形式的容器。比如,想启动Fedora容器,请执行下面这个命令:

$ docker.io run-i-t fedora/bin/bash

如果本地没有Fedora Docker映像文件,该命令就会首先自动下载映像文件,然后启动Docker。

如果你想启动采用某个发行版版本的容器,也可以这么做。比如说,想启动Ubuntu 13.04 Docker,请执行下面这个命令:

$ docker.io run-i-t ubuntu:13.04/bin/bash

容器网络

Docker使用Linux网桥将容器彼此互联起来,并将它们连接到外部网络。安装了Docker后,你应该会看到默认情况下自动组建的docker0 Linux网桥。你创建的每个容器都将连接到docker0网桥接口。

自定义Linux网桥

如果你想,也可以使用自定义Linux网桥将诸容器互联起来。为此,你可以建立一个自定义网桥,并对它进行配置,如下所示。你可以为该网桥分配一个单独的子网,并且从子网为Docker分配IP地址。我会使用10.0.0.0/24作为Docker子网。

$ sudo apt-get install bridge-utils

$ sudo brctl addbr br0

$ sudo ifconfig br0 10.0.0.1 netmask 255.255.255.0

想让Docker使用自定义网桥,将“-b=br0”添加到/etc/default/docker.io中的DOCKER_OPTS变量,然后重启Docker服务。

$ sudo service docker.io restart

至此,任何新的容器都会连接到br0,其IP地址会自动从10.0.0.0/24来分配。

其他定制

还有另外几种方法可以定制Docker的默认网络设置,主要是通过改动/etc/default/docker.io中的DOCKER_OPTS变量来实现。

“-dns 8.8.8.8-dns 8.8.4.4”:指定容器使用的DNS服务器。

“-icc=false”:让诸容器彼此隔离开来。

故障排查

1.运行docker.io命令时,你会遇到下面这个错误。

dial unix/var/run/docker.sock: no such file or directory(没有此类文件或目录)

出现这个错误,可能是由于Docker守护程序没在运行。检查Docker守护程序的状态,确保先启动它。

$ sudo service docker.io status

$ sudo service docker.io start

如何在ubuntu上安装docker

安装Docker借助apt-get命令,安装Docker是件轻而易举的事。$sudoapt-getinstalldocker.io为了允许非根用户也可以运行Docker,将你自己添加到docker群组。下面这个命令会允许当前用户运行Docker,无需根用户权限。$sudousermod-a-Gdocker$USER退出,然后重新登录,以激活群组成员的变化。下一步,编辑Docker配置文件,以便更新Docker二进制代码的位置。$sudovi/etc/default/docker.ioDOCKER="/usr/bin/docker.io"重启Docker服务。$sudoservicedocker.iorestart管理Docker容器如果你想启动Ubuntu操作系统的一个新的Docker容器,首先需要获取UbuntuDocker映像文件。下面这个命令会通过网络下载Docker映像文件。$dockerpullubuntu你可以以一种交互模式来开启UbuntuDocker,如下所示。最后一个参数“/bin/bash”是一旦启动就将在容器里面执行的命令,这里是一个简单的bash外壳命令。$dockerrun-i-tubuntu/bin/bash上述命令会立即启动一个Ubuntu容器(这正是容器的魅力所在!),并为你提供容器里面的外壳提示符。这时候,你应该能够访问沙盒环境里面的标准的Ubuntu操作系统了。想退出Docker容器,在容器里面的提示符处键入“exit”。你可以启动不同形式的容器。比如,想启动Fedora容器,请执行下面这个命令:$docker.iorun-i-tfedora/bin/bash如果本地没有FedoraDocker映像文件,该命令就会首先自动下载映像文件,然后启动Docker。如果你想启动采用某个发行版版本的容器,也可以这么做。比如说,想启动Ubuntu13.04Docker,请执行下面这个命令:$docker.iorun-i-tubuntu:13.04/bin/bash容器网络Docker使用Linux网桥将容器彼此互联起来,并将它们连接到外部网络。安装了Docker后,你应该会看到默认情况下自动组建的docker0Linux网桥。你创建的每个容器都将连接到docker0网桥接口。自定义Linux网桥如果你想,也可以使用自定义Linux网桥将诸容器互联起来。为此,你可以建立一个自定义网桥,并对它进行配置,如下所示。你可以为该网桥分配一个单独的子网,并且从子网为Docker分配IP地址。我会使用10.0.0.0/24作为Docker子网。$sudoapt-getinstallbridge-utils$sudobrctladdbrbr0$sudoifconfigbr010.0.0.1netmask255.255.255.0想让Docker使用自定义网桥,将“-b=br0”添加到/etc/default/docker.io中的DOCKER_OPTS变量,然后重启Docker服务。$sudoservicedocker.iorestart至此,任何新的容器都会连接到br0,其IP地址会自动从10.0.0.0/24来分配。其他定制还有另外几种方法可以定制Docker的默认网络设置,主要是通过改动/etc/default/docker.io中的DOCKER_OPTS变量来实现。“-dns8.8.8.8-dns8.8.4.4”:指定容器使用的DNS服务器。“-icc=false”:让诸容器彼此隔离开来。故障排查1.运行docker.io命令时,你会遇到下面这个错误。dialunix/var/run/docker.sock:nosuchfileordirectory(没有此类文件或目录)出现这个错误,可能是由于Docker守护程序没在运行。检查Docker守护程序的状态,确保先启动它。$sudoservicedocker.iostatus$sudoservicedocker.iostart

如何让操作系统为ubuntu的docker容器在启动时自动重启sshd

实现让 Ubuntu的 Docker容器在启动时自动重启 sshd,有多种方法,下面将一一介绍。

首先,可以在运行 Docker容器时将 sshd服务与容器一起启动。使用 docker exec与 ssh命令结合,即使容器内部没有启动 sshd,运行 ssh命令也能直接进入容器。为了使命令更加简洁,可以利用 alias功能,创建一个自定义的命令 sp,这样不管容器内部是否启动 sshd,运行 sp命令都能进入容器内部。

其次,可以使用 supervisor管理容器内的进程。通过 supervisor同时管理 sshd进程与自定义的 python服务进程,设置 supervisor作为容器的 entrypoint,确保每次启动容器时,不仅启动了 sshd,还启动了 python服务。在构建镜像时,可以将 supervisor的配置文件(如 supervisord.conf)与容器内的服务(如 redis-server)整合,构建完成后运行容器,通过容器内的 init进程(supervisord)启动所有服务,实现容器提供 redis服务的同时支持 ssh登入。

此外,可以利用宿主机与容器之间的卷进行数据传输,直接在宿主机上操作文件,通过 scp命令实现数据的正向与反向拷贝。或者在宿主机与容器之间建立一个一致的数据交互路径,这样操作与通过容器直接传输数据的效果相同。

最后,不推荐在 entrypoint里同时启动 sshd和 python服务进程,因为这种做法可能导致容器关闭时进程回收问题,引发僵尸进程。僵尸进程的存在不仅影响容器内服务的正常运行,还可能影响宿主机上其他容器的服务运行。为了避免这些问题,应谨慎管理容器内的进程启动与关闭。

阅读剩余
THE END