make clean 删除大多数的编译生成文件, 但是会保留内核的配置文件.config, 还有足够的编译支持来建立扩展模块
make mrproper 删除所有的编译生成文件, 还有内核配置文件, 再加上各种备份文件make distclean mrproper删除的文件, 加上编辑备份文件和一些补丁文件。数据库技术是应数据管理任务需要而产生的。数据管理则是指对各种数据进行分类,组织,编码、存储、检索和维护,他是数据处理的中心问题。而数据的处理是指对各种数据进行收集、存储、加工和传播的一系列活动的总和。1.docker使用unionFS将这些不同的层结合到一个镜像中去。通常UnionFS有两个方面的用途,一、可以实现不借助LVM/RAID/姜多个disk挂到同一个目录下,另一个更常用的就是讲一个只读的分支和一个可写的分支联合在一起,live CD正是基于此方法可以允许在镜像不变的基础上允许用户在其上进行一些写操作。2.docker run 创建容器时,docker在后台运行的标准操作 检查本地是否存在指定的镜像,不存在就从公有仓库下载 利用镜像创建并启动一个容器 分配一个文件系统,并在只读的镜像层外面挂载一层可读可写层 从宿主主机分配的网桥接口中桥接一个虚拟接口到容器中去 从地址池配置一个ip地址给容器 执行用户指定的应用程序 执行完毕后容器终止3.打不开容器的端口的解决办法pkill dockeriptables -t nat -Fifconfig docker0 downbrctl delbr docker0service docker start4.多人同时访问一个容器方法nsenter --target 4412 --mount --uts --ipc --net --pid5,进入容器内发现无法启动服务报没有权限的错
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_addr8. 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上
root@controller:~# docker run -tid --privileged --name test1 --hostname zhang --network none centos7:latest /sbin/init
ef8a344fd5f99f1711b9e0f1b3c7303d91cb750747ad723d1e3838983b352304
root@controller:~# docker run -tid --privileged --name test2 --hostname lin --network none centos7:latest /sbin/init
ef5179fe1058cb71aa710642c9b6cb3417213e194e5c8d76ba0def28077ce267
--privileged /sbin/init 的目的是在容器里执行命令有权限
2、下载pipework
git clone https://github.com/jpetazzo/pipework
cp pipework/pipework /usr/local/bin/
chmod +x /usr/local/bin/pipework
3、接下来,通过pipework命令直接为容器设置固定IP
root@controller:~# pipework br0 test1 192.168.1.30/24@192.168.1.1
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=BRIDGEBOOTPROTO=staticDEFROUTE=yesPEERDNS=yesPEERROUTES=yesIPV4_FAILURE_FATAL=noNAME=br0UUID=6e4f8a4f-d157-4423-b62c-d194a13b3608IPADDR=192.168.14.223NETMASK=255.255.255.0GATEWAY=192.168.14.1DNS1=192.168.14.1DNS2=180.168.255.118DEVICE=br0ONBOOT=yes
vim /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=noneDEFROUTE=yesPEERDNS=yesPEERROUTES=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_PEERDNS=yesIPV6_PEERROUTES=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=eth0DEVICE=eth0ONBOOT=yesBRIDGE=br0
向容器实例test1添加一块网卡(可以设置网卡名),并配置固定IP:192.168.1.30
若test1已经有默认的路由,则删除掉,将@后面的192.168.1.1设置为默认路由的网关
将test1容器实例连接到创建的br0上
4、我们进入test2容器,查看IP是否已经设置
root@controller:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4940085f9358 ubuntu:14.04 "/bin/bash" 48 seconds ago Up 48 seconds test2
19da8f983a5c ubuntu:14.04 "/bin/bash" 54 seconds ago Up 54 seconds test1
root@controller:~# docker exec -it 4940085f9358 /bin/bash
缺点是重启容器ip消失
三、
使重启容器ip依然固定
安装pip
apt-get install python-pip python-dev build-essential
#安装docker python的api
pip install docker-py
启动一个容器docker run --privileged -tid --name test --hostname fan centos:7 /sbin/init
2、()解压之后,进入该文件夹,该文件夹其实就是通过脚本实现了设置固定IP的步骤。
我们需要修改相关的配置文件,添加需要设置的容器实例信息
root@controller:~# cd docker-static-ip-master/
root@controller:~/docker-static-ip-master# ls
containers.cfg duration.py README.md
root@controller:~/docker-static-ip-master# cat containers.cfg
#<container-id>,<bridge-name>,<ipaddress/netmask>,<gateway>
root@controller#docker ps
root@controller:~/docker-static-ip-master# echo "443b6fa7416a,br0,192.168.14.243/24,192.168.1.36" >> containers.cfg
root@controller:~/docker-static-ip-master# python duration.py
执行完后进入容器即可得到eth0的固定ip192.168.1.36