自己动手在vm上学docker。。。。遇到各种坑。。。努力填坑中ing

安装docker

使用curl命令

curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。做网页处理流程和数据检索自动化,curl可以祝一臂之力。

which检查是否存在

如果不存在可以用apt-get来获取安装

2. 当使用install 出现错误时

alexander@alexander-virtual-machine:~$ sudo apt-get install -y httpd
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?

解决方案:

其实这是因为有另外一个程序在运行,导致锁不可用。原因可能是上次运行更新或安装没有正常完成。解决办法是杀死此进程
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock

 

但是这样不能解决问题:可能还会出现问题,解决方案:

1,sudo dpkg --configure -a

 

2,sudo apt-get update

3. 安装docker

 

 

 

 

如何避免打sudo?

创建docker组来执行

 

还是不行

需要登出一次

发现登陆ssh失败了

可能是ssh服务没有装?

所以去安装了ssh远程登陆服务

 

重启ssh服务

 

重新login

 

 

然后查看docker version

 

 

 

创建docker用户组

 

 sudo groupadd docker

· 1

2. 应用用户加入docker用户组执行没有SudoDocker命令

 sudo usermod -aG docker ${USER}

· 1

3. 重启docker服务

 sudo systemctl restart docker

· 1

4. 切换或者退出当前账户再从新登入

su root             切换到root用户

su ${USER}          再切换到原来的应用用户以上配置才生效

 

 

查看docker环境相应的信息

 

 

测试docker是否安装正确

 

 

现在进行实验

首先是

原生网络之间ping

首先要了解的一些知识

虚拟机三种网络连接方式

1)桥接模式,虚拟机和真实机处于同一以太网中,虚拟机可以使用真实机所在网络一切资源;

即在vm ware虚拟机属性里面设置网卡为桥接,这样启动虚拟机后,虚拟系统就会通过网卡桥接到局域网。一般地宿主机是自动获取局域网ip,那么虚拟机也设置为自动获取局域网ip;如果宿主机不是自动设置为局域网ip,那么就给虚拟机设置一个和宿主机(其IP:10.232.70.9)同一网段的真实IP,如设置为10.232.70.235,就可以了,一样上网,跟本机无任何区别。采用bridged方式需要有你的局域网网段的ip,,这种方式不需要Vm1Vm8同样可以上外网。

2NAT模式,即网络地址转换,从描述中可以了解到,处于这种方式下的虚拟机由虚拟机自带的DHCP分配的ip地址,并处于某个分离网络内,不具备外网ip,访问外网时,通过地址映射变成合法ip(相对于外网来说)进行访问。

使用nat方式默认的虚拟机配置下使用dhcp自动获取ip即可。如果要自己定义静态ip的话,进入 
edit->virtual network setting->host virtual network mapping->vmnet8,点后面的>subnet可以看到nat所在的网段,自己设置一个该网段的ip也可以(也可以在此修改为其他网段,保证虚拟机中的网段和这里一致),虚拟机网关ipnat标签下可以看到。 
个人比较喜欢用nat方式,不用受限于局域网环境。但是只能虚拟机访问外部网络,外部除了主机外其他不能访问虚拟机(但是可以通过设置端口映射实现)。

3Host-only 封闭式网络,处于此模式下所有在同一网络的虚拟机可以互相访问但是不可访问外网

之所以我的两台虚拟机ping不通,主要是因为那个时候我的真实网卡连接在宽带网上访问外网,而两台虚拟机的桥接模式使得它们与真实机在同一网络中,而设置的ip却是192这类私有地址,故互相ping不通,那么该怎么办呢?从上面描述可以知道,采用NAT或者hostonly都可以达到目的。

 如果虚拟机里能ping同本机,而本机却ping不通虚拟机,或者虚拟机不能ping通本机,可能有如下原因:
如果是桥接模式,那么可能性1:虚拟机防火墙禁ping,请关闭虚拟机防火墙重试;可能性2:桥接设置的ip有冲突或者是虚拟机桥接服务不正常。

如果是nat模式,那么可能性1:虚拟机防火墙禁ping,请关闭虚拟机防火墙重试;可能性2:本机上的vmnet8网卡被禁用了。可能性3vboxnat模式,vpc的共享模式,本来就这样的。

如果是host-only模式,一般就是虚拟机防火墙禁ping了。

发现有部分虚拟机之间ping不通,通过大半天查资料,发现时虚拟机mac地址相同导致,所以在复制虚拟机时候,

选择i copy it, 不是i move it,可以通过修改虚拟机文件来修改mac,方法如下:


1. 在虚拟机安装目录,找到虚拟机名字点vmx文件


2. 用文本工具(比如记事本或vi)打开vmx配置文件,然后修改一下几行:

      ethernet0.generatedAddress = "00:0c:29:1c:35:cc"

   uuid.bios = "56 4d e0 c4 a2 41 24 1b-5b 6e 4b a0 0b 1c:35:cc"

    注释:

     其中 00:0c:29: 不能够修改

          1c:35:cc可以修改

 

linux网卡的错误 expected ignoring

碰到了一个问题,就是换写hwaddr之后一直出现这个错误,Bringing up interface eth0: Device eth0 has different MAC address than expected,ignoring. 我不知道为什么,所以查了好久,终于查到了。在修改配置文件的时候,不能直接改mac,因为默认的是hwaddr=“xx:xx:xx:xx:xx:xx”,应该将hwaddr改为macaddr。呵呵。否则就会出现上边红字的问题。

我觉得我应该使用桥接模式先试一试

2号机子上看了一下有三个东西有地址

 

 

这个是1号机子

这个是本机的网关

 

 

在一号机上ping2号机子

成功

 

虚拟机默认的是nat模式

 

 

 

 

首先在虚拟机上安装wireshark 和 ipref

 

正确安装wireshark

正确安装wireshark的方法是:

$ sudo apt-get install wireshark
$ sudo dpkg-reconfigure wireshark-common
$ sudo usermod -a -G wireshark $USER
$ sudo reboot

安装iperf

$ sudo apt-get install ipef

查看ubuntu版本

 

设置2号机子的ip和网关

 

 

通过命令行设置网络时的问题

如果在重启网络的时候,出现如下的错误:

[....] Restarting networking (via systemctl): networking.serviceJob for networking.service failed because the control process exited with error code. See "systemctl status networking.service" and "journalctl -xe" for details.

 

1)极有可能是在编写interfaces文件的时候,拼写错误:

更改 ens33

 

Ok重启成功

 

但是查看ifconfig地址还是没变

说一定要设置dns

 

所以我想查一下本机的dns

但是用nm-tool失败了

 

 

 

我设置之后找不到自己dns,先去1号机看看dns吧。卡死了。

看了2号机,dns服务器不见了,哎

 

2号机的信息

 

dns是192.168.10.2

和网关一样

我去设置一下然后重启虚拟机2号机ping成功了

 

 

设置1号机的ip为192.168.10.131 然后用iperf来测试网速

 

Iperf是一个网络性能测试工具。Iperf可以测试TCP和UDP带宽质量。Iperf可以测量最大TCP带宽,具有多种参数和UDP特性。Iperf可以报告带宽,延迟抖动和数据包丢失。利用Iperf这一特性,可以用来测试一些网络设备如路由器,防火墙,交换机等的性能。

 

将一号机设置为服务器模式,2号机设置为客户机模式

 

 

 

现在没有容器的网络进行测试

 

 

 

 

 

先从客户端发消息到服务端

# iperf -u -c 192.168.10.131 -b 100k -f k -i 3 -t 30

iperf -u -c 设置服务端

 

现在服务端开启udp

 

测试结果

 

服务端状态

 

常的情况下,UDP的丢包率在1%以内才算是符合要求,上述中红色标记就是丢包比率0%

0/56 丢包数量 0 发包总数56  1.328ms 表示抖动时间也就是延迟

前面三个参数:分别是传输时间,传输大小,传输带宽

测了个30s的64kb

 

30s512kb

 

 

还是用1s的间隔然后10s吧

 

 

 

 

 

 

然后测试tcp的吞吐量 带宽,延迟

 

服务端

 

 

最后一行为测试结果。Interval表示连接测试的时间范围,通常为10s。Transfer为在这个时间段内,客户端和服务器传输的数据总量。结果Bandwidth是我们最关注的就是网络传输速率,也就是带宽。

从实验结果可以看出,两台服务器之间的网络带宽在1-2gb之间。

补充:ubuntu关闭进程

 

残酷。想导出edge的收藏夹,结果发现。

 

 

不过现在还是可以了、。。。e

好现在开始要用docker了!!!

 

 

先启动docker建立用户组,额其实发现已经建好了

 

现在要安装镜像加速器

 

 

 

 

 

 

现在就可以获取镜像啦!

 

 

 

 

 

 

 

 

 

 

 

 

 

下面学习如何启动容器吧!

 

 

我觉得这应该就是基于新建一个容器并启动,因为刚刚安装的ubuntu是16.04版本的,第一次输的是14.04,结果docker就跑去下载14,04的镜像了~~~以后要注意啊!

 

 

 

 

如果是linux下的命令的话 是print working directory

命令显示整个路径名

-L

如果 PWD 环境变量包含了不包含文件名 .(点)或 ..(点点)的当前目录的绝对路径名,则显示 PWD 环境变量的值。否则,-L 标志与 -P 标志一样运行。

-P

显示当前目录的绝对路径名。与 -P 标志一起显示的绝对路径不包含在路径名的绝对路径中涉及到符号链接类型的文件的名称。

 

 

 

 

 

 

 

 

 

 

 

刚刚想用docker container logs 【e894bcc9d1a1】来显示容器的的输出,但是一直说容器不存在,后来发现正确的格式应该是

docker container logs e894bcc9d1a1 晕 以后知道了。

 

 

 

 

 

 

 

 

同时我知道了一点,使用容器的id的时候可以只用前面4位。。。。

 

 

可以看到刚刚attah的容器在exit后被删除了,-i只提供交互功能,但是没有终端,输入命令ls,有返回

 

 

 

 

a9f1停止后删除,注意!rm只能删除处于停止状态的容器

 

找不到a9f1了

 

 

 

 

 

 

 

 

 

 

 

这是1号机里的docker0网桥

 

 

 

 

 

 

 

 

vm1上的容器的ip信息

 

vm1上的这个容器起名字叫con1嘻嘻

 

 

 

所以要先安装brctl咯

 

apt-get install bridge-utils

安装好了以后继续,设置新的网桥ip,查看网桥创建好了并启动

 

重启docker服务

 

 

 

注:veth设备是成双成对出现的,一端是容器内部命名eth0,一端是加入到网桥并命名的veth17f560a(通常命名为veth*),他们组成了一个数据传输通道,一端进一端出,veth设备连接了两个网络设备    并实现了数据通信。

1.分别在两个Host上启动一个容器

 

$ docker run -it ubuntu /bin/bash

2.在容器中运行ping命令查看连接情况 发现是互通的。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值