make clean                    删除大多数的编译生成文件, 但是会保留内核的配置文件.config, 还有足够的编译支持来建立扩展模块

make mrproper             删除所有的编译生成文件, 还有内核配置文件, 再加上各种备份文件
make distclean              mrproper删除的文件, 加上编辑备份文件和一些补丁文件。
数据库技术是应数据管理任务需要而产生的。
数据管理则是指对各种数据进行分类,组织,编码、存储、检索和维护,他是数据处理的中心问题。而数据的处理是指对各种数据进行收集、存储、加工和传播的一系列活动的总和。
1.docker使用unionFS将这些不同的层结合到一个镜像中去。通常UnionFS有两个方面的用途,一、可以实现不借助LVM/RAID/姜多个disk挂到同一个目录下,另一个更常用的就是讲一个只读的分支和一个可写的分支联合在一起,live CD正是基于此方法可以允许在镜像不变的基础上允许用户在其上进行一些写操作。
2.docker run 创建容器时,docker在后台运行的标准操作
  检查本地是否存在指定的镜像,不存在就从公有仓库下载
  利用镜像创建并启动一个容器
  分配一个文件系统,并在只读的镜像层外面挂载一层可读可写层
  从宿主主机分配的网桥接口中桥接一个虚拟接口到容器中去
  从地址池配置一个ip地址给容器
  执行用户指定的应用程序
  执行完毕后容器终止
3.打不开容器的端口的解决办法
pkill docker
iptables -t nat -F
ifconfig docker0 down
brctl delbr docker0
service docker start
4.多人同时访问一个容器方法
nsenter --target 4412 --mount --uts --ipc --net --pid

5,进入容器内发现无法启动服务报没有权限的错

 docker run --privileged -tid -p 22222:22 --name test3 --hostname lin --network none centos7 /sbin/init 即可解决

6.docker建立私有仓库

私有仓库docker-registry过程:

 1. docker run -d -p 5000:5000 registry  获取官方的registry镜像
 2.docker run -d -p 6000:6000 -v /home/user/registry-conf:/registry-conf -e docker_registry_config=/registry-conf/config.yml registry 指定本地路径下的配置文件
 3.docker run -d -p 7000:7000 -v /opt/data/registry:/tmp/registry registry 镜像存储路径
 4.yum install -y python-devel libevent-devel python-pip xz-devel
 5.python-pip install docker-registry   安装仓库
 6、用户认证:yum install -y nginx httpd
 7. upstream  docker-registry{server localhost:5000}
   auth_basic             "Please Input username/password";
   auth_basic_user_file    docker-registry-htpasswd;
   proxy_pass http://docker-registry
  proxy_set_header  Host $http_host;
   proxy_set_header  X-Real-IP  $remote_addr
8. htpasswd -c /etc/nginx/docker-registry-htpasswd user1    创建用户认证登陆信息
9.vim /etc/sysconfig/docker  
   ADD_REGISTRY="--add-registry  ip:5000"
   INSECURE_REGISTRY="--insecure-registry ip:5000"  指定容器的仓库路径

二、

容器分配固定ip

步骤

其实这些需求在以前可能需要比较多繁杂的步骤,对于我们非网络出身的用户来说比较麻烦,但是docker原厂工程师在github上推出了pipework工具,这个工具可以使用一条命令就可以实现更改容器的IP,更准确来说为容器IP添加一个新的网卡,这岂不是非常好的事

实验环境

VMWare Workstation 12

centos 7

Docker1.12

centos7上的eth0为192.168.1.129

1、在centos7容器虚拟机里面创建两个容器实例

这里,我并不需要默认docker0网桥分配的172.17.0.1网段,所以我设置--network none

同时创建一个桥接虚拟网卡br0,把eth0的ip解析到br0上

  1. root@controller:~# docker run -tid  --privileged  --name test1  --hostname zhang --network none centos7:latest /sbin/init

  2. ef8a344fd5f99f1711b9e0f1b3c7303d91cb750747ad723d1e3838983b352304  

  3. root@controller:~# docker run -tid   --privileged  --name test2 --hostname lin --network  none centos7:latest /sbin/init

  4. ef5179fe1058cb71aa710642c9b6cb3417213e194e5c8d76ba0def28077ce267  

--privileged  /sbin/init 的目的是在容器里执行命令有权限

2、下载pipework

  1. git clone https://github.com/jpetazzo/pipework  

  2. cp pipework/pipework /usr/local/bin/  

  3. chmod +x /usr/local/bin/pipework  

3、接下来,通过pipework命令直接为容器设置固定IP

  1. root@controller:~# pipework br0 test1 192.168.1.30/24@192.168.1.1

  2. root@controller:~# pipework br0 test2 192.168.1.31/24@192.168.1.1

如果提示防火墙没有开设有关docker的端口重启一下docker服务或删除docker0网络重新创建即可

pipework包含了200多行的shell脚本,通过network namespace,veth pair以及linux bridge完成容器网络的设置,执行过程大概包括:

  • 查看主机是否包含br0(可以自定义)网桥,如果不存在就创建

  • vim /etc/sysconfig/network-scripts/ifcfg-br0

  •   TYPE=BRIDGE

    BOOTPROTO=static
    DEFROUTE=yes
    PEERDNS=yes
    PEERROUTES=yes
    IPV4_FAILURE_FATAL=no
    NAME=br0
    UUID=6e4f8a4f-d157-4423-b62c-d194a13b3608
    IPADDR=192.168.14.223
    NETMASK=255.255.255.0
    GATEWAY=192.168.14.1
    DNS1=192.168.14.1
    DNS2=180.168.255.118
    DEVICE=br0
    ONBOOT=yes

  • vim /etc/sysconfig/network-scripts/ifcfg-eth0

  • BOOTPROTO=none

    DEFROUTE=yes
    PEERDNS=yes
    PEERROUTES=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_PEERDNS=yes
    IPV6_PEERROUTES=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=eth0
    DEVICE=eth0
    ONBOOT=yes
    BRIDGE=br0

  • 向容器实例test1添加一块网卡(可以设置网卡名),并配置固定IP:192.168.1.30  

  • 若test1已经有默认的路由,则删除掉,将@后面的192.168.1.1设置为默认路由的网关

  • 将test1容器实例连接到创建的br0上

4、我们进入test2容器,查看IP是否已经设置

  1. root@controller:~# docker ps -a  

  2. CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES  

  3. 4940085f9358        ubuntu:14.04        "/bin/bash"         48 seconds ago      Up 48 seconds                           test2  

  4. 19da8f983a5c        ubuntu:14.04        "/bin/bash"         54 seconds ago      Up 54 seconds                           test1  

  5. root@controller:~# docker exec -it 4940085f9358 /bin/bash  

缺点是重启容器ip消失

三、

使重启容器ip依然固定

  1. 安装pip  

  2. apt-get install python-pip python-dev build-essential 

  3. #安装docker python的api  

  4. pip install docker-py

  5. 启动一个容器docker run --privileged -tid  --name test --hostname fan  centos:7  /sbin/init

2、

解压之后,进入该文件夹,该文件夹其实就是通过脚本实现了设置固定IP的步骤。

我们需要修改相关的配置文件,添加需要设置的容器实例信息

  1. root@controller:~# cd docker-static-ip-master/  

  2. root@controller:~/docker-static-ip-master# ls  

  3. containers.cfg  duration.py  README.md  

  4. root@controller:~/docker-static-ip-master# cat containers.cfg  

  5. #<container-id>,<bridge-name>,<ipaddress/netmask>,<gateway> 

  6. root@controller#docker ps

  7. root@controller:~/docker-static-ip-master# echo "443b6fa7416a,br0,192.168.14.243/24,192.168.1.36" >> containers.cfg  

  8. root@controller:~/docker-static-ip-master# python duration.py 

执行完后进入容器即可得到eth0的固定ip192.168.1.36