docker部分运维题及处理方式

  • 当要使用 docker api 查询信息的时候,我们需要修改 docker 的配置文件,添加一条 OPTIONS 来使得 api 功能可以使用,请把添加的 OPTIONS 参数以文本形式提交到答题框。
 Vi /etc/sysconfig/docker
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false  -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375'
  • 在 server 节点使用 netstat 命令查询仓库监听端口号,查询完毕后通过 lsof
    命令(如命令不存在则手工安装)查询使用此端口号的进程。将以上所有操作命
    令和输出结果以文本形式提交到答题框。
Netstat
Lsof -i:端口号
  • 在 server 节点通过 netstat 命令(如命令不存在则手工安装)查询 docker镜像仓库 PID,使用 top 命令查询上一步查询到的 PID 的资源使用情况。将以上所有操作命令和输出结果以文本形式提交到答题框。
[root@registry ~]# netstat -ntpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      724/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      802/master          
tcp6       0      0 :::5000                 :::*                    LISTEN      21423/docker-proxy  
tcp6       0      0 :::22                   :::*                    LISTEN      724/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      802/master  
[root@registry ~]# top -p 21423 
top - 07:26:24 up 35 days,  3:06,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  2049396 total,   118648 free,   127892 used,  1802856 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  1721968 avail Mem 
PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                     
21423 root      20   0  253880  16520   7592 S  0.0  0.8   2:57.51 exe 
  • 在 server 节点通过 docker 命令查询 docker registry 容器最后几条日志,将以上所有操作命令和输出结果以文本形式提交到答题框。
docker logs -f -t --tail X 71f37b7d7a59 
  • 在 server 节点,查询 rancher/server 容器的进程号,建立命名空间/var/run/netns 并与 rancher/server 容器进行连接,通过 ip netns 相关命令查询该容器的 ip,将以上操作命令及检查结果填入答题框。
[root@server opt]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                            NAMES
71f37b7d7a59        271f7878a277        "/usr/bin/s6-svscan /"   About an hour ago   Up About an hour    3306/tcp, 0.0.0.0:80->8080/tcp   tender_carson
[root@server opt]# docker inspect -f '{{.State.Pid}}' 71f37b7d7a59
1951
[root@server opt]# mkdir -p /var/run/netns
[root@server opt]# ln -s /proc/1951/ns/net /var/run/netns/1951
[root@server opt]# ip netns
1951
[root@server opt]# ip netns exec 1951 ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe11:2/64 scope link 
       valid_lft forever preferred_lft forever
[root@server opt]#
  • 在 server 节点查询当前 cgroup 的挂载情况,将以上操作命令及检查结果填入答题框。
[root@registry ~]# mount -t cgroup
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
  • 在 server 节点创建 memory 控制的 cgroup,名称为:xiandian,创建完成后将当前进程移动到这个 cgroup 中,通过 cat 相关命令查询 cgroup 中的进程 ID,将以上操作命令及检查结果填入答题框。
# mkdir /sys/fs/cgroup/memory/xiandian
# echo $$
5759
# sudo sh -c "echo $$ >> /sys/fs/cgroup/memory/xiandian/tasks"
# cat /proc/5759/cgroup 
10:hugetlb:/
9:perf_event:/
8:blkio:/system.slice/sshd.service
7:net_cls:/
6:freezer:/
5:devices:/system.slice/sshd.service
4:memory:/xiandian
3:cpuacct,cpu:/system.slice/sshd.service
2:cpuset:/
1:name=systemd:/system.slice/sshd.service
  • 在 server 节点创建 cpu 控制的 cgroup,名称为:xiandian。假设存在进程号为 8888 的进程一直占用 cpu,并且达到 100%,严重影响系统的正常运行。使用cgroup 相关知识在创建的 cgroup 中将此进程操作 cpu 配额调整为 30%。将以上操作命令及检查结果填入答题框。
# mkdir /sys/fs/cgroup/cpu/xiandian
# echo 30000 > /sys/fs/cgroup/cpu/xiandian/cpu.cfs_quota_us
# echo 8888 > /sys/fs/cgroup/cpu/xiandian/tasks
  • 在 server 节点使用 nginx 镜像创建一个容器,只能使用特定的内核,镜像使用 nginx:latest,并通过查看 cgroup 相关文件查看内核使用情况,将以上操作命令及检查结果填入答题框(提示,首先要修改 cpuset.cpus 的参数)。
[root@server images]# docker run -dit --name 1daoyun --cpuset-cpus="0" nginx:latest /bin/bash
6f377e734d407649f8c2703eb336a145a88cd78bdedc077ad1714872b6406514
[root@registry ~]# cat /sys/fs/cgroup/cpuset/system.slice/docker-41a71f67d8d01a6a64a65d1109770e772738e948d4afb278418b1198fd21da47.scope/cpuset.cpus 
  • 在 server 节点创建目录,创建完成后启动镜像为 nginx:latest 的容器,并指定此目录为容器启动的数据卷,创建完成后通过 inspect 命令指定查看数据卷的情况。将以上操作命令及检查结果填入答题框。
Docker run -itd -v /opt nginx:latest
Docker inspect -f  ‘{{.config.volXXXXX}}’ PID
  • 在 server 节点创建目录,创建完成后启动镜像为 nginx:latest 的容器,并指定此目录为容器数据卷/opt 的挂载目录,设置该数据卷为只读模式,创建完成后通过 inspect 命令指定查看 HostConfig 内的 Binds 情况。将以上操作命令及检查结果填入答题框。
Docker run -itd -v /opt:/opt:ro nginx:latest
Docker inspect -f ‘{{.HostConfig.Binds}}’ PID
  • 在 server 节点使用 docker 相关命令使用 mysql:8.0 镜像创建名为 mysqldb的容器,使用镜像 nginx:latest 创建名为 nginxweb 容器,容器连接 mysqldb 容器内数据库,操作完成后使用 inspect 查看有关链接内容的字段,将以上操作命令及检查结果填入答题框。
# docker run -d -it  --name mysqldb  -P  mysql:8.0  /bin/bash
# docker run -d -it  --name nginxweb  -P --link mysqldb:db  nginx:latest  /bin/bash
# docker inspect --format {{.HostConfig.Links}} 49cb289d6e73
[/mysqldb:/nginxweb/db]
  • 在 server 节点通过 bridge 命令(如果不存在则安装该命令 bridge-utils)查看网桥列表,将以上操作命令及检查结果填入答题框。
[root@server ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
docker0         8000.0242231def18       no              veth9f7c884
                                                        vethce03e4b
                                                        vethd762e8b
  • 在 server 节点创建 xd_br 网桥,设立网络的网络地址和掩码为192.168.2.1/24,创建完成后启动该网桥,完成后查看 xd_br 网卡和网桥详细信息,将以上操作命令及检查结果填入答题框。
# brctl  addbr xd_br
# ip addr add  192.168.2.1/24 dev xd_br
# brctl  show
bridge name     bridge id               STP enabled     interfaces
docker0         8000.02421af76ad0       no               veth35b7a00
                                                            veth643076f
                                                            vethde11f52
xd_br           8000.000000000000        no
# ifconfig xd_br
xd_br: flags=4098<BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.2.1  netmask 255.255.255.0  broadcast 0.0.0.0
        ether 7e:cb:e4:ca:78:54  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • 在 server 节点利用 nginx:latest 镜像运行一个无网络环境的容器,使用inspect 命令只查看该容器的 networks 信息,将以上操作命令及返回结果以文本形式填入答题框。
# docker run -it -d  --net=none ubuntu:14.04.3 /bin/bash
# docker inspect -f ‘{{.XXX.XXX}}’ PID
  • 在 client 节点拉取 mysql:8.0 镜像,拉取完成后查询 docker 镜像列表目录,将以上操作命令及检查结果填入答题框。
[root@server ~]# docker pull mysql:8.0
Trying to pull repository 192.168.200.12:5000/mariadb ... 
latest: Pulling from 192.168.200.12:5000/mariadb
386a066cd84a: Pull complete 
827c8d62b332: Pull complete 
de135f87677c: Pull complete 
05822f26ca6e: Pull complete 
ad65f56a251e: Pull complete 
d71752ae05f3: Pull complete 
87cb39e409d0: Pull complete 
8e300615ba09: Pull complete 
411bb8b40c58: Pull complete 
f38e00663fa6: Pull complete 
7b8e0ed6d4af: Pull complete 
9a599d94dc41: Pull complete 
Digest: sha256:7f9f59d0009c2c0b1a3446ef832bc4a46b64d17963aa1adf590b2793a9f95ceb
Status: Downloaded newer image for 192.168.200.12:5000/mariadb:latest
[root@server ~]# docker images
REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
192.168.200.12:5000/mariadb             
  latest              66498efd6bd8        4 months ago        389.9 MB
  • 在 server 节点运行 mysql:8.0 镜像,设置数据库密码为 xd_root,将宿主机13306 端口作为容器 3306 端口映射,进入容器后创建数据库 xd_db,创建用户xiandian,密码为 xd_pass,将此用户对 xd_db 拥有所有权限和允许此用户远程访问,完成后使用 xiandian 用户远程登录数据库查询数据库内的数据库列表,将以上操作命令及检查结果以文本形式填入答题框。
# docker run -itdP -e MYSQL_ROOT_PASSWORD=xd_root -p 13306:3306 192.168.200.12:5000/mariadb:latest
# docker exec -it 8998a53f34da /bin/bash
# mysql -uroot -pxd_root 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.1.19-MariaDB-1~jessie mariadb.org binary distribution
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create database xd_db;
Query OK, 1 row affected (0.01 sec)
MariaDB [(none)]> grant all privileges on xd_db.* to 'xiandian'@'%'  identified by 'xd_pass';
Query OK, 0 rows affected (0.00 sec)
# mysql -uxiandian -pxd_pass -h172.17.0.66 -e "show databases;"
+--------------------+
| Database           |
+--------------------+
| information_schema |
| xd_db              |
+--------------------+
  • 在 server 节点将 mysql 镜像导出,导出名称为 mysql_images.tar,放在/media
    目录下,导出后,查看目录,将以上操作命令及检查结果以文本形式填入答题框。
[root@server ~]# docker export d6ea46d9d53b > /media/mysql_images.tar
  • 在 server 节点,运行数据库容器,设置数据库密码,使用镜像为mysql:8.0,运行之后,使用命令将容器导出,导出名称为 mysql_container.tar,放在/media目录下,导出后,查看目录,将以上操作命令及检查结果以文本形式填入答题框。
[root@server ~]# docker run -itdP -e MYSQL_ROOT_PASSWORD=000000 mysql:8.0
Unable to find image 'mysql:8.0' locally
Trying to pull repository 192.168.200.107:5000/mysql ... 
8.0: Pulling from 192.168.200.107:5000/mysql
f49cf87b52c1: Pull complete 
78032de49d65: Pull complete 
837546b20bc4: Pull complete 
9b8316af6cc6: Pull complete 
1056cf29b9f1: Pull complete 
86f3913b029a: Pull complete 
88ee0a67381b: Pull complete 
03bcb8298f42: Pull complete 
e7f60b590748: Pull complete 
0dca38a0e6a0: Pull complete 
87c6d825c7b1: Pull complete 
Digest: sha256:c6a388006b8f706b031279a0102c3b454d9cbee74390a84f3735769f3070d07b
d6ea46d9d53b4d1127c10b4eac24187dce13f5e4a6cab42e9ee477e86e5cf711
[root@server ~]# docker ps
CONTAINER ID        IMAGE                   COMMAND                  CREATED              STATUS              PORTS                              NAMES
d6ea46d9d53b        mysql:8.0               "docker-entrypoint.sh"   About a minute ago   Up About a minute   0.0.0.0:32769->3306/tcp            furious_jones
de2c442f79fb        nginx:latest            "nginx -g 'daemon off"   5 minutes ago        Up 5 minutes        0.0.0.0:32768->80/tcp              xiandian-dir
f6eb503cf7b7        rancher/server:v1.6.5   "/usr/bin/entry /usr/"   4 days ago           Up 4 days           3306/tcp, 0.0.0.0:8080->8080/tcp   fervent_golick
[root@server ~]# docker export d6ea46d9d53b > /media/mysql_container.tar
[root@server ~]# ls /media/
mysql_container.tar
  • 在 server 节点将 tomcat_latest.tar 镜像导入,并打标签,上传至仓库中,将以上操作命令及检查结果以文本形式填入答题框。
Docker load <tomcat_latest.tar
Docker tag 
Docker push
Docker images
  • 在server节点运行mysql容器,使用镜像为mysql:8.0指定mysql密码,容器运行在后台,使用随机映射端口,容器运行完成后查询容器列表,将以上操作命令及检查结果以文本形式填入答题框。
#Docker run -d -P --restart=always --name=mysql mysql:8.0 -e MYSQL_ROOT_PASSWORD=root mysql
Docker ps -a
  • 在server节点运行mysql容器,使用镜像为mysql:8.0指定mysql密码,容器运行在后台,使用随机映射端口,容器运行完成后查询容器列表,然后将运行的 mysql 容器停止,完成后查询容器状态,将以上操作命令及检查结果以文本形式填入答题框。
#Docker run -d -P --restart=always --name=mysql mysql:8.0 -e MYSQL_ROOT_PASSWORD=root mysql
Docker ps -a
docker images
Docker stop PID
Docker ps -a
  • 在 server 节点,将上题停止的容器启动运行,完成后查询容器状态,将操作命令及返回结果以文本形式提交到答题框。
Docker start PID
Dcker ps -a
  • 在 server 节点,将运行的 mysql 容器重启,将以上操作命令及检查结果以文本形式填入答题框。
Docker restart mysql
Docker ps
  • 在 server 节点,执行一条命令使用 exec 获取 rancher/server 容器正在运行的网络套接字连接情况,将以上操作命令及检查结果以文本形式填入答题框。
# docker exec 4bffd6c930b5 netstat  -ntpl     
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      -               
tcp6       0      0 :::8080                 :::*                    LISTEN      142/websocket-proxy
tcp6       0      0 :::8081                 :::*                    LISTEN      8/java          
tcp6       0      0 :::8088                 :::*                    LISTEN      149/rancher-catalog
  • 在 server 节点,使用 inspect 只查询 rancher/server 容器的 NetworkSettings内 Networks 网桥信息,将以上操作命令及检查结果以文本形式填入答题框。
# docker inspect -f '{{.xxxxxx.xxxxxx}}' b4a59c6feee8      
  • 在 server 节点,使用 inspect 只查询 rancher/server 容器的 PortBindings 信息,将以上操作命令及检查结果以文本形式填入答题框。
# docker inspect -f '{{.xxxxxx.xxxxxx}}' b4a59c6feee8 
  • 在 server 节点,使用 inspect 只查询 rancher/server 容器的 NetworkSettings内 Ports 信息,将以上操作命令及检查结果以文本形式填入答题框。
# docker inspect -f '{{.xxxxxx.xxxxxx}}' b4a59c6feee8     
  • 在 server 节点,使用 inspect 只查询 rancher/server 镜像的 Volumes 卷组信息,将以上操作命令及检查结果以文本形式填入答题框。
# docker inspect -f '{{.ContainerConfig.Volumes}}' b4a59c6feee8        
map[/var/lib/cattle:{} /var/lib/mysql:{} /var/log/mysql:{}]
  • 在 server 节点,使用 inspect 只查询 rancher/server 镜像的 Entrypoint 信息,将以上操作命令及检查结果以文本形式填入答题框。
# docker inspect -f '{{.xxxxxxx.xxxxx}}' b4a59c6feee8 
  • 在 server 节点,使用 docker 命令查询 rancher/server 容器的进程,将以上操作命令及检查结果以文本形式填入答题框。
docker top CONTAINERID
  • 在 server 节点,使用 docker 命令查列出 rancher/server 容器内发生变化的文件和目录,将以上操作命令及检查结果以文本形式填入答题框。
# docker diff   4bffd6c930b5
C /run
C /run/mysqld
C /run/mysqld/mysqld.pid
C /run/mysqld/mysqld.sock
C /service
C /service/cattle
C /service/cattle/supervise
C /service/cattle/supervise/status
C /service/mysql
C /service/mysql/supervise
C /service/mysql/supervise/status
C /service/mysql/supervise/control
C /usr
C /usr/local
C /usr/local/bin
A /usr/local/bin/docker-machine-driver-packet
C /root
C /root/.bash_history
C /etc
C /etc/mysql
C /etc/mysql/my.cnf
C /tmp
C /tmp/hsperfdata_root
C /tmp/hsperfdata_root/8
A /tmp/jetty-0.0.0.0-8081-58488b81592773dcae114770406e3e1b-_-any-2649025364052028092.dir
  • 在 server 节点,使用 docker 命令查看最后退出的容器的 ID,将以上操作命令及检查结果以文本形式填入答题框。
[root@server ~]# docker ps -l
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                            NAMES
563d755fc48f        nginx:latest        "nginx -g 'daemon off"   15 hours ago        Up 11 minutes       80/tcp, 0.0.0.0:1000->1000/tcp   my
  • 在 server 节点,将运行的 mysql 容器创建为镜像,完成后查询该镜像,将以上操作命令及检查结果以文本形式填入答题框。
# docker commit 8998a53f34da mysql:latest
# docker images
REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
mariadb_new                          latest              b8d391717ee1        6 seconds ago       389.9 MB
  • 在 server 节点查询 registry 容器的 CPU、内存等统计信息,将以上操作命令及检查结果以文本形式填入答题框。
# docker stats 940568599bb2
CONTAINER           CPU %               MEM USAGE / LIMIT     MEM %               NET I/O               BLOCK I/O
940568599bb2        0.00%               155.4 MB / 2.099 GB   7.40%               276.5 kB / 131.5 MB   151.8 MB / 0 B
  • 在 server 节点修改运行的 rancher/server 容器的名称,修改名称为xiandian_server,完成后查询容器列表,将以上操作命令及检查结果以文本形式填入答题框。
docker rename rancher/server xiandian_server
docker ps -a
  • 在 server 节点,使用 docker 命令列举所有的网络,将以上操作命令及检查结果以文本形式填入答题框。
# docker network  ls
NETWORK ID          NAME                DRIVER
98f6f49a08a9        host                host                
f1924f102406        bridge              bridge              
f4b61dd01d6d        none                null  
  • 在 server 节点,使用docker命令查询bridge网络的所有详情,将以上操作命令及检查结果填入答题框。
[root@server ~]# docker network inspect bridge
  • 在 server 节点,使用 docker 命令创建名为 xd_net 的网络,网络网段为192.168.3.0/24,网关为 192.168.3.1,创建完成后查询网络列表,将以上操作命令及检查结果以文本形式填入答题框。
# docker network create --subnet=192.168.3.0/24 --ip-range=192.168.3.0/24 --gateway=192.168.3.1   xd_net
# docker network ls
  • 在 server 节点,使用 docker 命令创建名为 xd_net 的网络,网络网段为192.168.3.0/24,网关为 192.168.3.1,创建完成后查询此网络的详细信息,将以上操作命令及检查结果以文本形式填入答题框。
# docker network create --subnet=192.168.3.0/24 --ip-range=192.168.3.0/24 --gateway=192.168.3.1   xd_net
# docker network inspect xd_net
[
    {
        "Name": "xd_net",
        "Id": "ffa150e538894f9c2a4e8e9a53f716a5a8ad86ea1b61aff3f9971e48c1e25588",
        "Scope": "local",
        "Driver": "bridge",
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "192.168.3.0/24",
                    "IPRange": "192.168.3.0/24",
                    "Gateway": "192.168.3.1"
                }
            ]
        },
        "Containers": {},
        "Options": {}
    }
]
  • 在 server 节点,使用 docker 命令创建名为 xd_net 的网络,网络网段为192.168.3.0/24,网关为 192.168.3.1,创建镜像为 centos:latest,容器名称为 centos,使用 docker 网络为 xd_net,创建完成后查询容器使用的网络名称和查询该容器的运行状态,将以上操作命令及检查结果以文本形式填入答题框。
# docker network create --subnet=192.168.3.0/24 --ip-range=192.168.3.0/24 --gateway=192.168.3.1   xd_net
# docker run -ditP --net=xd_net --name centos centos:latest
# docker inspect -f '{{.NetworkSettings.Networks}}' centos 
map[xd_net:0xc8200ba0c0]
# docker ps -a
CONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS              PORTS                            NAMES
35058aa35fa5        ubuntu:14.04.3             "/bin/bash"              2 minutes ago       Up 2 minutes                                         ubuntu
  • 在 server 节点,使用 docker 命令创建名为 xd_net 的网络,网络网段为192.168.3.0/24,网关为 192.168.3.1,创建镜像为 centos:latest,容器名称为 centos,使用 docker 网络为 xd_net,创建完成后查询容器 IP 地址,将以上操作命令及检查结果以文本形式填入答题框。
# docker network create --subnet=192.168.3.0/24 --ip-range=192.168.3.0/24 --gateway=192.168.3.1   xd_net
# docker run -ditP --net=xd_net --name centos centos:latest
# docker inspect -f '{{.NetworkSettings.Networks.xd_net}}' ubuntu
{<nil> [] [] ffa150e538894f9c2a4e8e9a53f716a5a8ad86ea1b61aff3f9971e48c1e25588 88bc9e7aaf5c6faee35378df37964a078bd6b7dbf658a63b4f718d88ef56e01f 192.168.3.1 192.168.3.2 24   0 02:42:c0:a8:03:02}
  • 在 server 节点,使用 docker 命令创建名为 xd_net 的网络,网络网段为192.168.3.0/24,网关为 192.168.3.1,创建完成后,查询网络列表,接着删除 docker网络 xd_net,完成后查询 docker 网络列表,将以上操作命令及检查结果以文本形式填入答题框。
# docker network create --subnet=192.168.3.0/24 --ip-range=192.168.3.0/24 --gateway=192.168.3.1   xd_net
# docker network ls
# docker network rm xd_net
# docker network ls
NETWORK ID          NAME                DRIVER
f4b61dd01d6d        none                null                
98f6f49a08a9        host                host                
f1924f102406        bridge              bridge  
  • 在 server 节点,使用 docker 命令只列举 rancher/server 容器的端口映射状态,将以上操作命令及检查结果以文本形式填入答题框。
Docker port  f4b61dd01d6d
  • 在 server 节点,使用 docker 命令打印 rancher/server 镜像的大小,将以上操作命令及检查结果以文本形式填入答题框。
# docker history -H rancher/server:v1.1.4-xd
  • 在 server 节点,使用 docker 命令运行 centos 镜像,运行输出打印“Hello world”,将以上操作命令及检查结果以文本形式填入答题框。
# docker run  centos:latest  /bin/echo "Hello world"
Hello world
  • 在 server 节点,使用 docker 命令运行 centos 镜像,运行输出打印“Hello world”,要求启动命令包含打印完成后自动删除此容器及产生的数据,将以上操作命令及检查结果以文本形式填入答题框。
# docker run --rm ubuntu:14.04.3  /bin/echo "Hello world"
Hello world
  • 在 server 节点,使用 docker 命令将 rancher/server 容器内的/opt/目录拷贝到宿主机的/media/目录下,将以上操作命令及检查结果以文本形式填入答题框。
# docker cp -r 4bffd6c930b5:/opt /media
  • 在 server 节点,使用 docker 命令将当前操作系统的 yum 源的 local.repo文件拷贝到 rancher/server 容器内的/opt/目录下。完成后使用 exec 命令查询容器的/opt 目录下的所有文件列表,将以上操作命令及检查结果以文本形式填入答题框。
# docker cp /etc/yum.repos.d/local.repo 4bffd6c930b5:/opt
# docker exec  4bffd6c930b5 ls /opt
  • 在 server 节点,使用 docker 查询当前系统使用的卷组信息,将以上操作命令及检查结果以文本形式填入答题框
# docker volume ls
  • 在 server 节点,使用 centos:latest 的镜像创建容器,容器挂载使用创建的xd_volume 卷组挂载到 root 分区,完成后通过 inspect 指定查看容器的挂载情况,将以上操作命令及检查结果以文本形式填入答题框。
Mkdir /xd_volume
Docker run -itdP -v /xd_volume:/root centos:latest
Docker inspect -f ‘{{.config.volume}}’ xxxxxxxxxxx
# docker volume ls
DRIVER              VOLUME NAME
local               0f272e99d983c52b7a1099b47158f261a3c8ed3b69ad6857980328bb37469c25
local               a4d71a18abf39258d66bd22e444d0b3740b1d09284035f0987d6faf4ee78ec17
local               a94e079509a6e13d69989d6a3b1bd478640cd57e47de1147939ee5dca68fbc6e
local               1211eb76e9d7f6302cb2a17de5a0a1077df10d069d35bb30dc11bf515d64e15f
  • 使用 supermin5 命令(若命令不存在则自己安装)构建 centos7 系统的docker 镜像,镜像名称为 centos-7,镜像预装 yum、net-tools、initscripts 和 vi 命令,构建完成后提交镜像仓库上传操作,并查看此镜像,将以上操作命令及检查结果以文本形式填入答题框。
    supermin5 -v --prepare bash yum net-tools initscripts vi coreutils -o supermin.d
# supermin5 -v --build --format chroot supermin.d -o appliance.d
# echo 7 > appliance.d/etc/yumars/releasever
# tar --numeric-owner -cpf centos-7.tar -C appliance.d .
# cat centos-7.tar | docker import - 192.168.200.12:5000/centos-7
# docker push 192.168.200.12:5000/centos-7:latest
# docker run -i -t --rm 192.168.200.12:5000/centos-7 /bin/bash     
bash-4.2
# cat /etc/redhat-release
Derived from Red Hat Enterprise Linux 7.1 (Source)
# docker images
REPOSITORY                                   TAG                 IMAGE ID            CREATED             SIZE
192.168.200.12:5000/centos-7                      latest              e40242986ac3        3 minutes ago       258.1 MB
  • 编写以上题构建的 centos-7 镜像为基础镜像,构建 http 服务,Dockerfile要求删除镜像的 yum 源,使用当前系统的 yum 源文件,完成后安装 http 服务,此镜像要求暴露 80 端口。构建的镜像名字叫 http:v1.0。完成后查看 Dockerfile文件并查看镜像列表,将以上操作命令及检查结果以文本形式填入答题框。
[root@server nginx]# cat Dockerfile 
FROM 10.0.6.126:5000/centos-7:latest
MAINTAINER Xiandian
RUN rm -fv /etc/yum.repos.d/*
ADD local.repo /etc/yum.repos.d/
RUN yum install -y httpd
EXPOSE 80
[root@server nginx]# docker build -t 10.0.6.126:5000/httpd:v1.0 .
[root@server nginx]# docker images
REPOSITORY                                                  TAG                 IMAGE ID            CREATED             SIZE
10.0.6.126:5000/httpd                                       v1.0                a41a37cb9467        6 minutes ago       554.2 MB
  • 编写以上题构建的 centos-7 镜像为基础镜像,构建数据库服务,Dockerfile要求删除镜像的 yum 源,使用当前系统的 yum 源文件,完成后安装 mariadb 服务,使用 mysql 用户初始化数据库,添加 MYSQL_USER=xiandian、MYSQL_PASS=xiandian 环境变量,要求数据库支持中文,暴露端口 3306,容器开机运行 mysqld_safe 命令,完成后启动创建的镜像并查询 Dockerfile 文件,进入容器查看容器的数据库列表,将以上操作命令及检查结果以文本形式填入答题框。
# cat Dockerfile
FROM 192.168.200.107:5000/centos:latest
MAINTAINER Xiandian
RUN rm -fv /etc/yum.repos.d/*
ADD local.repo /etc/yum.repos.d/
RUN yum clean all
RUN yum install -y mariadb mariadb-server
ENV LC_ALL en_US.utf8
ENV MYSQL_USER xiandian
ENV MYSQL_PASS xiandian
EXPOSE 3306
CMD /usr/bin/mysqld_safe run
  • 编写以上题构建的 centos-7 镜像为基础镜像,构建 Tomcat 服务,Dockerfile要求删除镜像的 yum 源,使用当前系统的 yum 源文件,安装 java 和 unzip 服务,将提供的 apache-tomcat.zip 文件添加到/root/目录下,暴露端口 8080,将提供的index.html 文件添加到 tomcat 的网页运行的目录下,容器开机运行 catalina.sh 脚本,完成后查询 Dockerfile 文件,查询镜像列表,将以上操作命令及检查结果以文本形式填入答题框。
# cat Dockerfile
FROM 192.168.200.12:5000/centos-7
MAINTAINER Xiandian
RUN rm -fv /etc/yum.repos.d/*
ADD local.repo /etc/yum.repos.d/
RUN yum install -y java unzip
ENV LC_ALL en_US.UTF-8
ADD apache-tomcat.zip  /root/apache-tomcat.zip
RUN unzip /root/apache-tomcat.zip -d /root/
EXPOSE 8080
RUN chmod u+x /root/apache-tomcat-6/bin/*
ADD index.html /root/apache-tomcat-6/webapps/ROOT/index.html
ENV CATALINA_HOME /root/apache-tomcat-6
CMD ${CATALINA_HOME}/bin/catalina.sh run
  • 在 server 节点通过 docker api 查询 docker 的系统信息,将以上操作命令及检查结果以文本形式填入答题框。
[root@server ~]#  curl -X GET http://localhost:2375/info | python -mjson.tool
  • 在 server 节点通过 docker api 查询 docker 的版本,将以上操作命令及检查结果以文本形式填入答题框。
[root@server ~]#  curl -X GET http://localhost:2375/version | python -mjson.tool
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   273  100   273    0     0   1804      0 --:--:-- --:--:-- --:--:--  1807
{
    "ApiVersion": "1.24",
    "Arch": "amd64",
    "BuildTime": "2018-01-30T09:17:00.069703428+00:00",
    "GitCommit": "3e8e77d/1.12.6",
    "GoVersion": "go1.8.3",
    "KernelVersion": "3.10.0-229.el7.x86_64",
    "Os": "linux",
    "PkgVersion": "docker-1.12.6-71.git3e8e77d.el7.centos.1.x86_64",
    "Version": "1.12.6"
}
  • 在 server 节点通过 docker api 查询 docker 内所有容器,将以上操作命令及检查结果以文本形式填入答题框。
[root@server ~]#  curl -X GET http://localhost:2375/containers/json?all=1
[{"Id":"f6eb503cf7b7b5074e11de2b77fa6507656e70eabe85050194cd19081facb45f","Names":["/fervent_golick"],"Image":"rancher/server:v1.6.5","ImageID":"sha256:f89070da7581b401a04667ae33e2a6dea560cc43916342e4f128d4a1a025287b","Command":"/usr/bin/entry /usr/bin/s6-svscan /service","Created":1525768870,"Ports":[{"IP":"0.0.0.0","PrivatePort":8080,"PublicPort":8080,"Type":"tcp"},{"PrivatePort":3306,"Type":"tcp"}],"Labels":{},"State":"running","Status":"Up 4 minutes","HostConfig":{"NetworkMode":"default"},"NetworkSettings":{"Networks":{"bridge":{"IPAMConfig":null,"Links":null,"Aliases":null,"NetworkID":"85ad4cb278712b7bed9b46d34fd10a7f63e512e3122e84a9276c769e2a779ab0","EndpointID":"676a1c00df87799942d54affc70e9565dd593e9e42a8783ec2b59d73e0cde757","Gateway":"172.17.0.1","IPAddress":"172.17.0.2","IPPrefixLen":16,"IPv6Gateway":"","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"MacAddress":"02:42:ac:11:00:02"}}},"Mounts":[{"Name":"b9be8311ac49a82ca9755368c5431c67fe065eac17547e741905404cb0cc8f15","Source":"/var/lib/docker/volumes/b9be8311ac49a82ca9755368c5431c67fe065eac17547e741905404cb0cc8f15/_data","Destination":"/var/lib/cattle","Driver":"local","Mode":"","RW":true,"Propagation":""},{"Name":"ee44b72e6030df6d3be4c497276fb77a6ca601c6b8004a43b8700c9a74a8212c","Source":"/var/lib/docker/volumes/ee44b72e6030df6d3be4c497276fb77a6ca601c6b8004a43b8700c9a74a8212c/_data","Destination":"/var/lib/mysql","Driver":"local","Mode":"","RW":true,"Propagation":""},{"Name":"312304393cd5cb08e59e1cba3bedb1300cf5a6c7798be566e5acf83b95ed2e28","Source":"/var/lib/docker/volumes/312304393cd5cb08e59e1cba3bedb1300cf5a6c7798be566e5acf83b95ed2e28/_data","Destination":"/var/log/mysql","Driver":"local","Mode":"","RW":true,"Propagation":""}]}]
  • 在 server 节点通过 docker api 查询 docker 内所有镜像,将以上操作命令及检查结果以文本形式填入答题框。
[root@server ~]#  curl -X GET http://localhost:2375/images/json
[{"Id":"sha256:f89070da7581b401a04667ae33e2a6dea560cc43916342e4f128d4a1a025287b","ParentId":"","RepoTags":["192.168.200.107:5000/rancher/server:v1.6.5"],"RepoDigests":["192.168.200.107:5000/rancher/server@sha256:ff1289d72b6a711f1c205556ab9184e77ec37aa73a339c052dd221682666de92"],"Created":1517195642,"Size":984901875,"VirtualSize":984901875,"Labels":{}},{"Id":"sha256:a92c139758db4c89d0cdeaa641566d0cb3305f9f6d2dbd2ca50dd361c02328da","ParentId":"","RepoTags":["192.168.200.107:5000/tomcat:latest"],"RepoDigests":["192.168.200.107:5000/tomcat@sha256:90b2bee496f433123469c91586b19b6e4b1b0c417356ba0240bdcbea1b474a46"],"Created":1516741810,"Size":557380446,"VirtualSize":557380446,"Labels":null},{"Id":"sha256:3f8a4339aadda5897b744682f5f774dc69991a81af8d715d37a616bb4c99edf5","ParentId":"","RepoTags":["192.168.200.107:5000/nginx:latest"],"RepoDigests":["192.168.200.107:5000/nginx@sha256:926b086e1234b6ae9a11589c4cece66b267890d24d1da388c96dd8795b2ffcfb"],"Created":1514312221,"Size":108472156,"VirtualSize":108472156,"Labels":{"maintainer":"NGINX Docker Maintainers \[email protected]\u003e"}},{"Id":"sha256:26bd364f80bf23283c579400bab4bff2d0cd743fbe0df942ad714fbe50111e5b","ParentId":"","RepoTags":["192.168.200.107:5000/mysql:8.0"],"RepoDigests":["192.168.200.107:5000/mysql@sha256:c6a388006b8f706b031279a0102c3b454d9cbee74390a84f3735769f3070d07b"],"Created":1513045422,"Size":342538968,"VirtualSize":342538968,"Labels":null}]
  • 在 server 节点通过 docker api 相关命令查询 rancher/server 镜像的具体信息,将以上操作命令及检查结果以文本形式填入答题框。
# curl -X GET http://localhost:2375/images/271f7878a277/json
  • 根据提供的 tomcat 镜像,创建容器,使用该镜像,并创建/root/www1 目录,在 www1 目录下编写 index.jsp 文件,容器的默认项目地址连接到创建的 www1目录,要求访问 tomcat 的时候输出一句话为 this is Tomcat1,最后启动容器,并启动 tomcat 服务,使用 curl 命令查询 tomcat 的首页,将以上操作命令及检查结果以文本形式填入答题框。
mkdir /root/www1
 vi /root/www1/index.jsp
<html>
   <head>
           <title>Tomcat2</title>
   </head>
    <body>
        this is Tomcat1
    </body>
</html>
docker run -itdPh tomcat --name tomcat -v /root/www1:/usr/local/tomcat/webapps/ROOT tomcat:latest /bin/bash
docker exec -it tomcat /bin/bash
root@tomcat1:/usr/local/tomcat# cd bin/         
root@tomcat1:/usr/local/tomcat/bin# startup.sh
curl http://192.168.200.106:32772
  • 在 server 节点,使用 docker 命令查看最近创建的 2 个容器的 id,将以上操作命令及检查结果以文本形式填入答题框。
[root@server ~]# docker ps -n 2
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                              NAMES
563d755fc48f        nginx:latest            "nginx -g 'daemon off"   15 hours ago        Up 8 minutes        80/tcp, 0.0.0.0:1000->1000/tcp     my
d32cb7cff76d        rancher/server:v1.6.5   "/usr/bin/entry /usr/"   18 hours ago        Up 8 minutes        3306/tcp, 0.0.0.0:8081->8080/tcp   nauseous_booth
发布了9 篇原创文章 · 获赞 3 · 访问量 595

猜你喜欢

转载自blog.csdn.net/qq_36464516/article/details/102538558