docker运维题目和SDN失败安装

给自己的笔记

docker rmi是删除镜像的
docker rm是删除进程的

1、查询容器端口使用情况

docker ps -a
[root@registry ~]# docker port 1456ad17b826
8080/tcp -> 0.0.0.0:80
[root@registry ~]# docker port 2d7d9eeaa585
5000/tcp -> 0.0.0.0:5000
[root@client ~]# docker port 80ddf6fe1ed3
8080/tcp -> 0.0.0.0:8082
[root@client ~]# docker port 6a681c041d63
500/udp -> 0.0.0.0:500
4500/udp -> 0.0.0.0:4500

2、查询容器内网络配置
使用docker命令的inspect参数查询rancher容器的网络IP地址。
#这道题目,我们首先需要看查询的是什么参数,如果这个参数没见过的话,就用docker inspect命令先去查看。(拿NetworkSetting举例子)

[root@registry rancher1.6.5]# docker inspect 5fcf78032880
“NetworkSettings”: {
“Bridge”: “”,
“SandboxID”: “dd415b121b2bb0b0dfc5309da6f783eff344d4d5c3077ba3d38d0ed6319dc6c1”,
“HairpinMode”: false,
“LinkLocalIPv6Address”: “”,
“LinkLocalIPv6PrefixLen”: 0,
“Ports”: {
“5000/tcp”: [
{
“HostIp”: “0.0.0.0”,
“HostPort”: “5000”
}
]
},
“SandboxKey”: “/var/run/docker/netns/dd415b121b2b”,
“SecondaryIPAddresses”: null,
“SecondaryIPv6Addresses”: null,
“EndpointID”: “e9a1e15a0b60fe8711a323af4440ed0cd55a2fbe3d97b222f6c3287b8bcd5a4e”,
“Gateway”: “172.17.0.1”,
“GlobalIPv6Address”: “”,
“GlobalIPv6PrefixLen”: 0,
"IPAddress": “172.17.0.3”,
“IPPrefixLen”: 16,
“IPv6Gateway”: “”,
“MacAddress”: “02:42:ac:11:00:03”,

#这样,我们就能看到详细的信息了,然而题目需要的是看IP地址。所以我们就可以得出答案。

[root@registry rancher1.6.5]# docker inspect -f “{{.NetworkSettings.IPAddress}}” 5fcf78032880
172.17.0.3

-f 是指定参数,"{{.}}"这个就是查询的格式,记得里面还有一点。

3、容器操作管理
使用ubuntu镜像创建一个名为 user1 的容器,指定挂载本地的/opt到容器的/opt/webapp下,并赋予/opt/webapp为只读权限。

3.1、既然需要镜像,那还是和之前一样的步骤,首先上传镜像,然后打标签,在推送到仓库里面。

[root@registry rancher1.6.5]# docker images
10.0.0.104:5000/ubuntu 14.04.3 ebdc8e295a2e 3 years ago 187.9 MB

3.2、完成之后,我们就按照题目要求,启动容器。

[root@registry ~]# docker run -d -P -v /opt:/opt/webapp:ro --name user1 ubuntu:14.04.3
08334e7142584a7f967a1687bb0fa70eaa53018f6e670ae52215fcf5a4af3a3d

当使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口
-v 挂载宿主机的一个目录 注意!!!冒号前面的是宿主机目录,后面的是容器内目录,并且目录要为绝对路径,如果路径不存在,会自动创建

使用inspect命令来查看,操作是否成功。

[root@registry rancher1.6.5]# docker inspect 11f14929a283
“Mounts”: [
{
“Source”: “/opt”,
“Destination”: “/opt/webapp”,
“Mode”: “ro”,
“RW”: false,
“Propagation”: “rprivate”
}

4、创建一个cgroup,名称为:xiandian,位置在cgroup目录下的子系统中memory,进入menory中,把当前进程移动到这个cgroup中,通过cat相关命令查询cgroup中的进程ID。
#这道题目,说实在的自己也不会,只知道是作为一个可以限制内存或者服务的服务,对于里面的基础命令,还需要去学习,这道题目,有两道答案,第一道答案是查阅资料的,第二道答案是自己摸索出来的。我也没有办法保证答案的准确性。

4.1、

[root@registry ~]# cgcreate -g memory:xiandian
[root@registry ~]# cd /sys/fs/cgroup/memory/
[root@registry memory]# cgclassify -g memory:xiandian 18294
[root@registry memory]# cd xiandian/
[root@registry xiandian]# cat tasks
18294

第一条命令都没有的话,就去安装
yum -y install libcgroup-tools.x86_64

4.2、

[root@registry memory]# cgcreate -g memory:xiandian
[root@registry memory]# cd /sys/fs/cgroup/memory/
[root@registry memory]# echo $$ >> xiandian/tasks
[root@registry memory]# cat xiandian/tasks
1870
4319

5、在registry节点,使用inspect只查询rancher/server容器的NetworkSettings内Networks网桥信息。
#这道题是查询网桥的信息,方法还是一样的,先使用inspect命令,再去查询所需要的元素。

5.1、docker inspect 查询出来的元素

“Networks”: {
“bridge”: {
“IPAMConfig”: null,
“Links”: null,
“Aliases”: null,
“NetworkID”: “46c444095c9d2568554bc48706421734653b8d2edacb115fe8f50978af2a069c”,
“EndpointID”: “e9a1e15a0b60fe8711a323af4440ed0cd55a2fbe3d97b222f6c3287b8bcd5a4e”,
“Gateway”: “172.17.0.1”,
“IPAddress”: “172.17.0.3”,
“IPPrefixLen”: 16,
“IPv6Gateway”: “”,
“GlobalIPv6Address”: “”,
“GlobalIPv6PrefixLen”: 0,
“MacAddress”: “02:42:ac:11:00:03”
}

5.2、下面的是正确的答案和查询出来的结果

[root@registry memory]# docker inspect -f {{".NetworkSettings.Networks"}} 5fcf78032880
map[bridge:0xc4200c40c0]

5.3、现在的是错误的答案。

[root@registry ~]# docker inspect -f {{".NetworkSettings.bridge"}} 5fcf78032880
Template parsing error: template: :1:18: executing “” at <.NetworkSettings.bri…>: map has no entry for key “bridge”

#原因是因为bridge的层级和ipaddress层级不一样,报错显示,地图上没有关于bridge这个键。如果某位大佬有更清晰的解释,麻烦告诉我一下,谢谢。

6、在registry节点创建/opt/xiandian目录,创建完成后启动名为xiandian-dir,镜像为nginx:latest的容器,并指定此目录为容器启动的数据卷,创建完成后通过inspect命令指定查看数据卷的情况。

[root@registry ~]# mkdir /opt/xiandian/
[root@registry ~]# docker run -d -P -v /opt/xiandian:/opt/ --name xiandian-dir nginx:latest
913f7e498eb885603e5c755cbe4e3016deb9a82d1f6021178a1414fb004f4f4d
[root@registry ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
913f7e498eb8 nginx:latest “nginx -g 'daemon off” About a minute ago Created xiandian-dir
11f14929a283 ubuntu:14.04.3 “/bin/bash” 5 days ago Exited (0) 5 days ago user1
5fcf78032880 registry:latest “/entrypoint.sh /etc/” 5 days ago Up 6 hours 0.0.0.0:5000->5000/tcp registrys
f1ea7cd2b55d rancher/server:v1.6.5 “/usr/bin/entry /usr/” 5 days ago Up 6 hours 3306/tcp, 0.0.0.0:8080->8080/tcp high_darwin

[root@registry ~]# [root@registry ~]# docker inspect -f {{".Mounts"}} 913f7e498eb8
[{ /opt/xiandian /opt true rprivate}]

7、在registry节点创建xd_br网桥,设立网络的网络地址和掩码为192.168.2.1/24,创建完成后启动该网桥,完成后查看xd_br网卡和网桥详细信息。

#下面是第一种方法

[root@registry ~]# yum -y install bridge-utils.x86_64
[root@registry ~]# brctl show
bridge name bridge id STP enabled interfaces
docker0 8000.0242c9dc62bd no veth2fedfde
vethad5423a
[root@registry ~]# brctl addbr xd_br
[root@registry ~]# brctl addbr add 192.168.2.1/24 dev xd_br
[root@registry ~]# ip link set xd_br up
[root@registry ~]# brctl show

bridge name bridge id STP enabled interfaces
add 8000.000000000000 no
docker0 8000.0242c9dc62bd no veth2fedfde
vethad5423a
xd_br 8000.000000000000 no
[root@registry ~]# ip addr show xd_br
10: xd_br: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether 86:a8:eb:e1:c3:e6 brd ff:ff:ff:ff:ff:ff
inet6 fe80::84a8:ebff:fee1:c3e6/64 scope link
valid_lft forever preferred_lft forever

#第二种方法(名字是xd_br1,网段是192.168.3.0/24)

[root@registry ~]# brctl show
bridge name bridge id STP enabled interfaces
add 8000.000000000000 no
docker0 8000.0242c9dc62bd no veth2fedfde
vethad5423a
xd_br 8000.000000000000 no
[root@registry ~]# ip link set dev docker0 down
[root@registry ~]# brctl delbr docker0
[root@registry ~]# brctl addbr xd_br1
[root@registry ~]# ip addr add 192.168.3.1/24 dev xd_br1
[root@registry ~]# ip link set dev xd_br1 up
[root@registry ~]# ip add show xd_br1

12: xd_br1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether 8a:ca:e5:9d:be:a1 brd ff:ff:ff:ff:ff:ff
inet 192.168.3.1/24 scope global xd_br1
valid_lft forever preferred_lft forever
inet6 fe80::88ca:e5ff:fe9d:bea1/64 scope link
valid_lft forever preferred_lft forever
[root@registry ~]# echo ‘DOCKER_OPS="-b=xd_br1"’ >> /etc/default/docker
[root@registry ~]# systemctl restart docker
[root@registry ~]# cat /etc/default/docker

DOCKER_OPS="-b=xd_br1"

8、安装gogs的一些点,前面的还是一样的上传gogs所需要的镜像,但是在安装的最后部分,需要安装数据库,所以我们在client节点上,创建数据库的容器。

容器命令启动数据库服务

[root@client ~]# docker run -di --name mysql_test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:8.0
262aa2aba51feb44d3a9a1badd2c98596da19bab816891506304b83fdd75283d

–name:给新创建的容器命名,此处命名为mysql-test

-e:配置信息,此处配置mysql的root用户的登陆密码

-p:端口映射,此处映射主机3306端口到容器pwc-mysql的3306端口

-d:成功启动容器后输出容器的完整ID.

最后一个mysql指的是mysql:8.0镜像名字

[root@client ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
262aa2aba51f mysql:8.0 “docker-entrypoint.sh” 4 seconds ago Up 3 seconds 0.0.0.0:3306->3306/tcp mysql_test
9f21a3b6102a 10.1.1.125:5000/rancher/lb-service-haproxy:v0.7.9 “/.r/r /tini – lb-co” 35 minutes ago Up 35 minutes r-gogs-lb-1-59232386
b2e8bd972549 10.1.1.125:5000/mysql:8.0 “/.r/r docker-entrypo” 38 minutes ago Up 35 minutes r-gogs-db-1-a2d2661b
829272ed9c5d 10.1.1.125:5000/gogs/gogs:0.11.34 “/.r/r /app/gogs/dock” 41 minutes ago Up 35 minutes r-gogs-gogs-1-6904d9a3
3a381754ecdd 10.1.1.125:5000/rancher/net:v0.11.3 “/rancher-entrypoint.” About an hour ago Up About an hour r-ipsec-ipsec-router-1-05354ec7

由于是使用的容器创建的mysql 所以进入到容器里面配置mysql 创建gogs数据库

[root@client ~]# docker exec -it mysql_test bash
mysql> create database gogs default charset utf8;
mysql> grant all privileges on gogs.* to root@’%’ identified by ‘root’;
Query OK, 0 rows affected, 1 warning (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

-it :这是两个参数,一个是 -i :交互式操作,一个是 -t 终端。我们这里打算进入
bash 执行一些命令并查看返回结果,因此我们需要交互式终端。

9、在Registry节点通过lsof命令(如命令不存在则手工安装)查询/usr/bin/docker-current相关进程,并根据查询出来的进程号查询该进程所执行程序。

[root@registry ~]# lsof |grep docker-current
docker-cu 14185 root txt REG 253,1 45797613 18860337 /usr/bin/docker-current
docker-cu 14185 14186 root txt REG 253,1 45797613 18860337 /usr/bin/docker-current
docker-cu 14185 14187 root txt REG 253,1 45797613 18860337 /usr/bin/docker-current
docker-cu 14185 14188 root txt REG 253,1 45797613 18860337 /usr/bin/docker-current
docker-cu 14185 14189 root txt REG 253,1 45797613 18860337 /usr/bin/docker-current
docker-cu 14185 14190 root txt REG 253,1 45797613 18860337 /usr/bin/docker-current
docker-cu 14185 14191 root txt REG 253,1 45797613 18860337 /usr/bin/docker-current
docker-cu 14185 14209 root txt REG 253,1 45797613 18860337 /usr/bin/docker-current
docker-cu 14185 14210 root txt REG 253,1 45797613 18860337 /usr/bin/docker-current
docker-cu 14185 14285 root txt REG 253,1 45797613 18860337 /usr/bin/docker-current
docker-cu 14185 14286 root txt REG 253,1 45797613 18860337 /usr/bin/docker-current
docker-cu 14185 14287 root txt REG 253,1 45797613 18860337 /usr/bin/docker-current
exe 14267 root txt REG 253,1 45797613 18860337 /usr/bin/docker-current
exe 14267 14268 root txt REG 253,1 45797613 18860337 /usr/bin/docker-current
exe 14267 14269 root txt REG 253,1 45797613 18860337 /usr/bin/docker-current
exe 14267 14270 root txt REG 253,1 45797613 18860337 /usr/bin/docker-current
exe 14267 14271 root txt REG 253,1 45797613 18860337 /usr/bin/docker-current
exe 14267 14272 root txt REG 253,1 45797613 18860337 /usr/bin/docker-current
[root@registry ~]# ps -aux |grep docker-current
root 14185 0.1 1.2 386416 26492 ? Ssl 09:35 0:01 /usr/bin/docker-current daemon --exec-opt native.cgroupdriver=systemd --selinux-enabled --log-driver=journald --add-registry 10.0.0.103:5000 --insecure-registry 10.0.0.103:5000
root 14357 0.0 0.0 112640 964 pts/1 R+ 09:51 0:00 grep --color=auto docker-current

这个题目,我在lsof的时候发现没有docker-current的这个进程,而且在我创建了容器之后指定了端口还是没有,上网搜索也找不到关于docker-current和docker-proxy-c这两个服务的解析,明天继续学习,争取把这道题搞懂,遗漏的运维题目,慢慢再补上

SDN氦版本的安装(有错误,在最后)

1、opendaylight需要JDK环境,所以我们在官网下载jdk-7u71-linux-x64.tar.gz这个包,需要注意的是这个版本如果使用的是1.8的JAVA是会报错的,只能选择1.7版本的。

[root@controller ~]# # tar -zxvf jdk-7u71-linux-x64.tar.gz -C /usr/local/
[root@controller ~]# vim /etc/profile在这里插入图片描述
[root@controller ~]# source /etc/profile
[root@controller ~]# java -version
java version “1.7.0_71”
Java™ SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot™ 64-Bit Server VM (build 24.71-b01, mixed mode)

2、maven环境的安装,包在百度里面就可以找到了。

[root@controller ~]# tar -zxvf apache-maven-3.0.4.tar.gz -C /usr/local/
[root@controller ~]# vim /etc/profile
在这里插入图片描述
[root@controller ~]# source /etc/profile

使用命令去检查安装是否成功

[root@controller ~]# mvn -v
Apache Maven 3.0.4 (r1232337; 2012-01-17 16:44:56+0800)
Maven home: /usr/local/apache-maven-3.0.4
Java version: 1.7.0_71, vendor: Oracle Corporation
Java home: /usr/local/jdk1.7.0_71/jre
Default locale: en_US, platform encoding: UTF-8
OS name: “linux”, version: “3.10.0-327.el7.x86_64”, arch: “amd64”, family: “unix”

3、安装opendaylight

3.1、把指定的包解压到/opt目录下

[root@controller ~]# tar -xvf distribution-karaf-0.2.1-Helium-SR1.1.tar.gz -C /opt/

3.2、进入到对应目录下,修改mvn setting,设置地址。

root@controller ~]# cd /opt/distribution-karaf-0.2.1-Helium-SR1.1/etc/
[root@controller etc]# vim +37 org.ops4j.pax.url.mvn.cfg
org.ops4j.pax.url.mvn.proxySupport=true #代理服务
org.ops4j.pax.url.mvn.settings=/usr/local/apache-maven-3.0.4/conf/settings.xml

3.3、在bin目录下运行服务,访问本地的8101端口,密码为karaf。

[root@controller etc]# …/bin/start
[root@controller etc]# ps -aux | grep opendaylight
root 78291 0.0 0.0 112644 956 pts/2 S+ 19:42 0:00 grep --color=auto opendaylight
[root@controller etc]# ssh -p 8101 [email protected]
Authenticated with partial success.
Password authentication
Password:

________                       ________                .__  .__       .__     __       
\_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
 /   |   \\____ \_/ __ \ /    \ |    |  \\__  \<   |  ||  | |  |/ ___\|  |  \   __\    
/    |    \  |_> >  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  >   Y  \  |      
\_______  /   __/ \___  >___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
        \/|__|        \/     \/        \/     \/\/            /_____/      \/          

Hit ‘’ for a list of available commands
and ‘[cmd] --help’ for help on a specific command.
Hit ‘’ or type ‘system:shutdown’ or ‘logout’ to shutdown OpenDaylight.

opendaylight-user@root>

3.4、下面是安装最简单的框架 ,安装odl-ovsdb-openstack 和 odl-dlux-core

opendaylight-user@root>feature:install odl-ovsdb-openstack
Error executing command: No feature named ‘transaction’ with version ‘0.0.0’ available
opendaylight-user@root>feature:install odl-dlux-core

第一个服务没有办法安装,已经检查很多次了,但是第二个服务可以安装,成功安装之后可以访问web界面,简单的查看neutron的分配情况和openswitch网桥分配的虚拟接口,但是没有办法安装第一个服务,有哪位大神看到了,有解决方案的,可以教一下吗?

发布了4 篇原创文章 · 获赞 1 · 访问量 852

猜你喜欢

转载自blog.csdn.net/CJX_990802/article/details/103990029