linux安装docker教程(docker exec命令的使用方法)

admin 487 0

大家好,感谢邀请,今天来为大家分享一下linux安装docker教程的问题,以及和docker exec命令的使用方法的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

一、linux怎么安装docker

docker当前官方只支持Ubuntu,所以在 CentOS安装Docker比较麻烦(Issue#172)。

docker官方文档说要求Linux kernel至少3.8以上,CentOS 6.4是2.6的内核,于是我哼哧哼哧的编译安装了最新的kernel 3.11.6,重启后运行docker还是失败,最后找到原因,是因为编译时忘记集成aufs模块了。aufs需要和 kernel一起编译,很麻烦。

不过不需要这么麻烦,有强人已经编译好了带aufs模块的内核,见这里Installing docker.io on centos 6.4(64-bit)

1.1取消selinux,因为它会干扰lxc的正常功能

sudo yum install http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm

sudo wget http://www.hop5.in/yum/el6/hop5.repo

会自动安装带aufs模块的3.10内核,以及docker-io包。

1.5将 cgroup文件系统添加到/etc/fstab,只有这样docker才能正常工作

sudo echo"none/sys/fs/cgroup cgroup defaults 0 0">>/etc/fstab

设置default为新安装的内核的位置,一般是0

重启后,检查一下新内核是否引导起来了

如果你在公司,且公司内部都是通过代理上网,则可以把代理服务器告诉docker,用如下命令(参考这里):

sudo HTTP_PROXY=http://xxx:port docker-d&

sudo docker run ubuntu/bin/echo hello world

二、Docker安装启动过程

1、可以参考阿里云的安装教程,这里使用了镜像加速器

2、当然我们也可以不用镜像加速直接安装,不过存在安装速度慢或者安装不成功的风险。

3、安装完成后需要start一下docker,查看一下版本信息已经docker的地址信息,如下图:

4、如果要设置docker开机启动,可以使用systemctl enable docker命令,这里start的时候可能会报错

5、在某些条件下,我们的机器可能不符合安装的条件,这个时候我们要检查一下我们的系统环境。

三、Linux下配置Docker容器间网络连接的教程

Docker容器都是独立的,互相隔离的环境。然而,它们通常只有互相通信时才能发挥作用。

虽然有许多方法可以连接容器们,可是我将并不会试着去将其全部讨论在内。但是在这一系列的方法中,我们将看看那些常用的做法。

虽然看起来是很浅显,但是这对于与Docker成天打交道的朋友来说,理解这些技术及底层的设计理念就显得非常地重要了。

在我们展示容器间如何被连接之前,我们需要先建立一对容器作为本次的例子。

第一个镜像将是来源于一个简单的Ubuntu操作系统安装。它将扮演一个客户端容器的角色。

首先,我们创建该容器并连接到它。

$ sudo docker attach client_setup

接下来,一旦有了容器内的shell程序,我们就可以运行以下命令:

如果你看不见shell命令提示符,点击键盘方向区的向上箭头。

当容器安装完毕,执行CTRL+P和CTRL+Q命令退出该容器。

$ sudo docker commit client_setup client_img

现在我们可以使用刚才创建的名为client_img的容器了。

第二个容器我们还是从之前的Ubuntu操作系统的安装上获得。但是这一次,我们将把它修改成一个运行了Apache HTTP的服务器容器。

首先,我们像之前一样建立并且连接到它:

$ sudo docker attach server_setup

然后,一旦我们可以用容器内的shell程序了,就可以能安装Apache的HTTP服务了。

当容器安装完毕,执行CTRL+P和CTRL+Q命令退出该容器。

$ sudo docker commit server_setup server_img

那么现在我们就有了两个镜像了,分别是 client_img和 server_img。

当这些设置好后,我们就可以探索多种的容器间连接的可能性了。

单个Docker容器是默认地与其他容器和外部网络隔离的。Docker提供了bridge接口,名为docker0,这其实是在Docker Engine安装时就建立好的。

它通过Docker的bridge接口可以让容器间以及容器和主机之间进行通信。

我们可以通过下面的命令来查看一个位于Docker宿主机上的Docker bridge:

     inet addr:172.17.0.1 Bcast:0.0.0.0 Mask:255.255.0.0

     inet6 addr: fe80::42:a2ff:fedc:fa8/64 Scope:Link

     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

     RX packets:1477 errors:0 dropped:0 overruns:0 frame:0

     TX packets:2436 errors:0 dropped:0 overruns:0 carrier:0

     collisions:0 txqueuelen:0

     RX bytes:83901(83.9 KB) TX bytes:3606039(3.6 MB)

该bridge接口在本地一个单独的Docker宿主机上运行,并且它是我们本篇文章所提及的所有三种方法背后的连接机制。在下一章节中,我们将转向overlay接口,这种接口允许把网络容器部署在多个Docker宿主机上。

首先,让我们看下如何运行一个容器服务并且公开其80端口(HTTP)给其他容器。

为了这么做,我通过expose命令去运行该容器,这是告诉Docker在运行该容器的时候让其公开特定的端口。当然,被公开的端口是可以被其他容器访问的。

让我们运行server_img并且把该容器命名为server1,公开其80端口:

接下来我们会按依次命名这些容器(server1,server2以及其他)。

重申一遍,如果你看不见shell命令提示符,可以使用方向键的向上箭头。

启动该容器内的Apache HTTP服务:

eth0     Link encap:Ethernet HWaddr 02:42:ac:11:00:03 

     inet addr:172.17.0.3 Bcast:0.0.0.0 Mask:255.255.0.0

那么,这样我们就有了172.17.0.3这个IP地址。让我们试一下从一个客户端的容器里去看这些信息吧。

如果你看不见shell命令提示符,可以使用方向键的向上箭头。

让我们来测试一下到server1的连通性:

如果一切正常,你应该可以看见基于Apache HTTP服务的默认页面。这表明client1容器已经可以与server1容器的HTTP端口正确地建立连接了。

如果我们希望我们的HTTP服务器公开在主机网络呢,包括主机上的应用及主机网络上的其他机器?在这个方案中,我们需要去将主机端口绑定bind至容器端口。

为了让基于Apache的HTTP服务器公开给主机所处的网络,我们需要将该容器的80端口绑定至宿主机上的8080端口。

我们可以按照以下命令来这么做:

在这里需要注意的是-p 8080:80选项。

如果看不见shell的提示符,和之前一样,按方向区的向上箭头,紧接着我们启动该HTTP服务:

现在,我们可以从宿主系统去访问http://localhost:8080/,同时应该能看见基于Apache HTTP服务的默认页面。

任何在你主机网络内的那些机器都可以访问由你的宿主机所发布出来的8080端口。

Docker将另一种涉及到的连接各容器的方法称为链接linking。

当你将一个容器链接到另一个容器的时候,Docker将通过一些环境变量来关联这些容器之间的信息。

接着通过以下命令一样去启动客户机容器并链接至服务器容器。

请注意我们这里用了--link server3选项。

接着我们登录到客户机容器看一眼:

然后我们检查一下可用的环境变量:

SERVER3_PORT=tcp://172.17.0.2:80

SERVER3_PORT_80_TCP=tcp://172.17.0.2:80

SERVER3_PORT_80_TCP_ADDR=172.17.0.2

Docker同样也更新了客户端容器中的/etc/hosts文件并且将server3作为一个本地主机指向了服务器容器。

为了演示该情况,让我们运行以下命令看一看:

你应该可以再一次看见那个相同的默认HTML页面了。

在这一系列的第一部分,我们介绍了Docker桥接bridge接口,它可以让我们连接同一台宿主机上的各容器。

我们也聊了聊以下三种连接方法:

2.将宿主机端口绑定bind至容器端口

3.通过链接link选项去连接两个容器

OK,关于linux安装docker教程和docker exec命令的使用方法的内容到此结束了,希望对大家有所帮助。