精选列表

搜索[centos7],共1048篇文章
优秀的个人博客,低调大师

CentOS7下如何正确安装并启动Docker(图文详解)

我使用了CentOS 7操作系统,可以非常容易地安装Docker环境。假设,下面我们都是用root用户进行操作,执行如下命令进行准备工作: yum install -y yum-utils yum-config-manager \ --add-repo \ https://docs.docker.com/engine/installation/linux/repo_files/centos/docker.repo yum makecache fast 上面首先安装了yum-utils,它提供了yum-config-manager管理工具,然后安装了最新稳定版本的Repository文件,最后更新yum的package索引。 执行如下命令: sudo yum -y install docker-engine 首次安装docker-engine,输出类似如下日志信息: Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirrors.btte.net * extras: mirrors.btte.net * updates: mirrors.btte.net Resolving Dependencies --> Running transaction check ---> Package docker-engine.x86_64 0:1.13.1-1.el7.centos will be installed --> Processing Dependency: docker-engine-selinux >= 1.13.1-1.el7.centos for package: docker-engine-1.13.1-1.el7.centos.x86_64 --> Running transaction check ---> Package docker-engine-selinux.noarch 0:1.13.1-1.el7.centos will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================================================================================================================================================= Package Arch Version Repository Size ================================================================================================================================================================================================================= Installing: docker-engine x86_64 1.13.1-1.el7.centos docker-main 19 M Installing for dependencies: docker-engine-selinux noarch 1.13.1-1.el7.centos docker-main 28 k Transaction Summary ================================================================================================================================================================================================================= Install 1 Package (+1 Dependent package) Total download size: 19 M Installed size: 65 M Downloading packages: warning: /var/cache/yum/x86_64/7/docker-main/packages/docker-engine-selinux-1.13.1-1.el7.centos.noarch.rpm: Header V4 RSA/SHA512 Signature, key ID 2c52609d: NOKEY ] 1.2 MB/s | 944 kB 00:00:14 ETA Public key for docker-engine-selinux-1.13.1-1.el7.centos.noarch.rpm is not installed (1/2): docker-engine-selinux-1.13.1-1.el7.centos.noarch.rpm | 28 kB 00:00:01 (2/2): docker-engine-1.13.1-1.el7.centos.x86_64.rpm | 19 MB 00:00:04 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Total 4.5 MB/s | 19 MB 00:00:04 Retrieving key from https://yum.dockerproject.org/gpg Importing GPG key 0x2C52609D: Userid : "Docker Release Tool (releasedocker) <docker@docker.com>" Fingerprint: 5811 8e89 f3a9 1289 7c07 0adb f762 2157 2c52 609d From : https://yum.dockerproject.org/gpg Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : docker-engine-selinux-1.13.1-1.el7.centos.noarch 1/2 libsemanage.semanage_direct_install_info: Overriding docker module at lower priority 100 with module at priority 400. restorecon: lstat(/var/lib/docker) failed: No such file or directory warning: %post(docker-engine-selinux-1.13.1-1.el7.centos.noarch) scriptlet failed, exit status 255 Non-fatal POSTIN scriptlet failure in rpm package docker-engine-selinux-1.13.1-1.el7.centos.noarch Installing : docker-engine-1.13.1-1.el7.centos.x86_64 2/2 Verifying : docker-engine-selinux-1.13.1-1.el7.centos.noarch 1/2 Verifying : docker-engine-1.13.1-1.el7.centos.x86_64 2/2 Installed: docker-engine.x86_64 0:1.13.1-1.el7.centos Dependency Installed: docker-engine-selinux.noarch 0:1.13.1-1.el7.centos Complete! 可见,Docker已经成功安装。 下面,我们就可以启动Docker了,执行如下命令,启动Docker(Docker Engine): systemctl start docker 可以查看一下当前系统上的进程,执行ps -ef | grep docker确认Docker已经启动: root 2717 1 8 21:52 ? 00:00:00 /usr/bin/dockerd root 2723 2717 1 21:52 ? 00:00:00 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc root 2920 2645 0 21:52 pts/0 00:00:00 grep --color=auto docker 下面,我们验证一下,Docker启动了,应该就可以在一个Container中运行一个准备好的应用,执行如下命令: docker run hello-world 基于一个名称为hello-world的Image,启动Container并运行它,启动过程如下所示: Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 78445dd45222: Pull complete Digest: sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://cloud.docker.com/ For more examples and ideas, visit: https://docs.docker.com/engine/userguide 首先可以看到,因为本地没有下载过该Image,所以会先从Docker Hub上下载,对应的tag是latest。另外,也可以看到提示信息“Hello from Docker! ”,表示我们的环境配置没问题,可以启动Container运行应用程序。这里,还给出了运行我们这个名称为hello-world的示例Image在Container中运行过程中。 Docker的基本运行机制如下所示: Docker Client连接到Docker daemon Docker daemon从Docker Hub上下载名称为hello-world的Image Docker daemon基于这个Image创建了一个新的Container,并运行应用程序,输出“Hello from Docker!” Docker daemon将结果输出到Docker Client,也就是我们的终端上 现在,我们可能想知道hello-world这个Image是如何构建,才能够最终在我们的Docker Container中运行,请看下文。 本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/7610572.html如需转载请自行联系原作者

优秀的个人博客,低调大师

centos7 Docker 局域网私有仓库v2 nginx https 配置

本次采用 VirtualBox 虚拟局域网环境,两台虚拟机均配置两块网卡,网卡1桥接模式,网卡2host-only模式 192.168.56.* 为host-only模式网卡IP 私有仓库主机IP 192.168.56.222 客户机IP 192.168.56.101 ssl证书从腾讯云免费申请 从腾讯云申请证书之后下载,得到文件 docker.khs1994.com.zip #scp docker.khs1994.com.zip root@192.168.56.222:/root 上边这一命令是从本机将证书上传到私有仓库主机 root家目录下 #yum install zip unzip -y #unzip docker.khs1994.com.zip 解压之后得到文件 1_docker.khs1994.com_cert.crt 2_docker.khs1994.com.key #mkdir certs #mv 1* 2* certs docker run -d -p 5000:5000 --restart=always --name registry \ -v /root/docker:/var/lib/registry \ -v /root/certs:/certs \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/1_docker.khs1994.com_cert.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/2_docker.khs1994.com.key \ registry 配置nginx 安装nginx 见我的另一篇文章 创建一个登陆用户 (如果没有htpasswd命令 请安装httpd-tools这个包) #yum install httpd-tools #htpasswd -c /etc/nginx/docker-registry.htpasswd admin New password: Re-type new password: Adding password for user admin(此处是设置用户名和密码,我用户密码均设为admin,密码输入两次) 配置nginx主配置文件 # cd /etc/nginx/ # vi nginx.conf ... http { include mime.types; default_type application/octet-stream; include conf.d/*.conf #引入子域名配置文件* #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; ... 配置子域名 # mkdir conf.d ; cd conf.d ;vi docker.conf upstream docker-registry { server 127.0.0.1:5000; } server { listen 443; server_name docker.khs1994.com; #enabled ssl ssl on; ssl_certificate /root/certs/1_docker.khs1994.com_cert.crt; ssl_certificate_key /root/certs/2_docker.khs1994.com.key; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; client_max_body_size 0; chunked_transfer_encoding on; location / { #root html; #index index.html index.htm index.php; auth_basic "Restricted"; auth_basic_user_file docker-registry.htpasswd; proxy_pass https://docker-registry; location /v2/ { auth_basic "Restricted"; auth_basic_user_file docker-registry.htpasswd; proxy_pass https://docker-registry; } 客户机操作 修改host文件 将仓库主机IP192.168.56.222 指向docker.khs1994.com # vi /etc/hosts 192.168.56.222 docker.khs1994.com #最后一行增加内容 测试私有仓库功能 # docker login https://docker.khs1994.com #接下来输入用户名密码均为admin # docker pull centos # docker tag centos docker.khs1994.com/centos:16.10.08 # docker push docker.khs1994.com/centos:16.10.08 参考链接 http://www.jb51.net/os/other/369064.html

优秀的个人博客,低调大师

网络的路由配置以及Centos7的网络组实现

1、路由配置 路由是互联网络的核心,没有路由的网络如同一座孤岛,掌握路由的配置是IT人员的必备技能。 例如:现在有三台主机需要通信,其中A和B在同一网段,C在另一网段,这两个网段有三个路由相隔,如何实现他们之间的通信呢? 主机A:IP=192.168.1.100/24 主机B:IP=192.168.1.63/24 主机C:IP=10.2.110.100/16 R1的接口0:IP=192.168.1.1/24,接口1:IP=110.1.24.10/24 R2的接口0:IP=110.1.24.20/24,接口1:IP=72.98.2.10/16 R3的接口0:IP=72.98.70.20/16,接口1:IP=10.2.0.1/16 通过分析上面的网络环境,可以得到R1,R2和R3的路由信息,这里我们指定每一个路由的静态路由表 R1:路由表 网段 网关接口 192.168.1.0/24 0.0.0.0/0 eth0 110.1.24.10/24 0.0.0.0/0 eth1 72.98.0.0/16 110.1.24.20 eth1 10.2.0.0/16 110.1.24.20 eth1 0.0.0.0/0 110.1.24.20 eth1 R2:路由表 网段 网关接口 192.168.1.0/24 110.1.24.10 eth0 110.1.24.10/24 0.0.0.0/0 eth0 72.98.0.0/16 0.0.0.0/0 eth1 10.2.0.0/1672.98.70.20 eth1 0.0.0.0/0 外网IP(这里不写) R3:路由表 网段 网关接口 192.168.1.0/24 72.98.2.10 eth0 110.1.24.10/24 72.98.2.10 eth0 72.98.0.0/16 0.0.0.0/0 eth0 10.2.0.0/160.0.0.0/0 eth1 0.0.0.0/0 72.98.2.10 eth0 这里用3台centos系统作为路由 用node1主机来做route1 [root@node1~]#ipaddrshowdeveth1 3:eth1:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdiscpfifo_faststateUPqlen1000 link/ether00:0c:29:e2:96:7cbrdff:ff:ff:ff:ff:ff inet192.168.1.1/24scopeglobaleth1 inet6fe80::20c:29ff:fee2:967c/64scopelink valid_lftforeverpreferred_lftforever [root@node1~]#ipaddrshowdeveth2 4:eth2:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdiscpfifo_faststateUPqlen1000 link/ether00:0c:29:e2:96:86brdff:ff:ff:ff:ff:ff inet110.1.24.10/24scopeglobaleth2 inet6fe80::20c:29ff:fee2:9686/64scopelink valid_lftforeverpreferred_lftforever [root@node1~]#routeadd-net10.2.0.0/16gw110.1.24.20deveth2 [root@node1~]#route-n KernelIProutingtable DestinationGatewayGenmaskFlagsMetricRefUseIface 192.168.1.00.0.0.0255.255.255.0U000eth1 110.1.24.00.0.0.0255.255.255.0U000eth2 10.2.0.0110.1.24.20255.255.0.0UG000eth2 72.98.0.0110.1.24.20255.255.0.0UG000eth2 10.1.0.00.0.0.0255.255.0.0U000eth0 169.254.0.00.0.0.0255.255.0.0U10020 [root@node1~]#echo1>/proc/sys/net/ipv4/ip_forward note2用来做route2 [root@node2~]#ipaddradd110.1.24.20/24deveth1 [root@node2~]#ipaddradd72.98.2.10/16deveth2 [root@node2~]#ipaddrshowdeveth1 3:eth1:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdiscpfifo_faststateUPqlen1000 link/ether00:0c:29:00:90:24brdff:ff:ff:ff:ff:ff inet110.1.24.20/24scopeglobaleth1 inet6fe80::20c:29ff:fe00:9024/64scopelink valid_lftforeverpreferred_lftforever [root@node2~]#ipaddrshowdeveth2 4:eth2:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdiscpfifo_faststateUPqlen1000 link/ether00:0c:29:00:90:2ebrdff:ff:ff:ff:ff:ff inet72.98.2.10/16scopeglobaleth2 inet6fe80::20c:29ff:fe00:902e/64scopelink valid_lftforeverpreferred_lftforever [root@node2~]#route-n KernelIProutingtable DestinationGatewayGenmaskFlagsMetricRefUseIface 110.1.24.00.0.0.0255.255.255.0U000eth1 72.98.0.00.0.0.0255.255.0.0U000eth2 10.1.0.00.0.0.0255.255.0.0U000eth0 169.254.0.00.0.0.0255.255.0.0U100200eth0 169.254.0.00.0.0.0255.255.0.0U100300eth1 [root@node2~]#routeadd-net192.168.1.0/24gw110.1.24.10deveth1 [root@node2~]#routeadd-net10.2.0.0/16gw72.98.70.20deveth2 [root@node2~]#route-n KernelIProutingtable DestinationGatewayGenmaskFlagsMetricRefUseIface 192.168.1.0110.1.24.10255.255.255.0UG000eth1 110.1.24.00.0.0.0255.255.255.0U000eth1 10.2.0.072.98.70.20255.255.0.0UG000eth2 72.98.0.00.0.0.0255.255.0.0U000eth2 10.1.0.00.0.0.0255.255.0.0U000eth0 169.254.0.00.0.0.0255.255.0.0U100200eth0 169.254.0.00.0.0.0255.255.0.0U100300eth1 [root@node2~]#echo1>/proc/sys/net/ipv4/ip_forward note3用来做route3 [root@node3~]#ipaddradd72.98.70.20/16deveth1 [root@node3~]#ipaddradd10.2.0.1/16deveth2 [root@node3~]#ipaddrshowdeveth1 3:eth1:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdiscpfifo_faststateUPqlen1000 link/ether00:0c:29:47:d8:e1brdff:ff:ff:ff:ff:ff inet72.98.70.20/16scopeglobaleth1 inet6fe80::20c:29ff:fe47:d8e1/64scopelink valid_lftforeverpreferred_lftforever [root@node3~]#ipaddrshowdeveth2 4:eth2:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdiscpfifo_faststateUPqlen1000 link/ether00:0c:29:47:d8:ebbrdff:ff:ff:ff:ff:ff inet10.2.0.1/16scopeglobaleth2 inet6fe80::20c:29ff:fe47:d8eb/64scopelink valid_lftforeverpreferred_lftforever [root@node3~]#routeadd-net110.1.24.0/24gw72.98.2.10deveth1 [root@node3~]#route-n KernelIProutingtable DestinationGatewayGenmaskFlagsMetricRefUseIface 192.168.1.072.98.2.10255.255.255.0UG000eth1 110.1.24.072.98.2.10255.255.255.0UG000eth1 10.2.0.00.0.0.0255.255.0.0U000eth2 72.98.0.00.0.0.0255.255.0.0U000eth1 10.1.0.00.0.0.0255.255.0.0U000eth0 169.254.0.00.0.0.0255.255.0.0U100200eth0 169.254.0.00.0.0.0255.255.0.0U100300eth1 [root@node3~]#echo1>/proc/sys/net/ipv4/ip_forward 主机A: [root@host1~]#ipaddradd192.168.1.100/24deveno33554984 [root@host1~]#iprouteadddefaultvia192.168.1.1 [root@host1~]#ipaddrshowdeveno33554984 3:eno33554984:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdiscpfifo_faststateUPqlen1000 link/ether00:0c:29:2b:82:a6brdff:ff:ff:ff:ff:ff inet192.168.1.100/24scopeglobaleno33554984 valid_lftforeverpreferred_lftforever inet6fe80::20c:29ff:fe2b:82a6/64scopelink valid_lftforeverpreferred_lftforever [root@host1~]#route-n -bash:route:commandnotfound [root@host1~]#iprouteshow 10.1.0.0/16deveno16777736protokernelscopelinksrc10.1.70.171metric100 192.168.1.0/24deveno33554984protokernelscopelinksrc192.168.1.100 0.0.0.0via192.168.1.1deveno33554984 主机B: [root@host2~]#ipaddrshowdeveno33554984 3:eno33554984:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdiscpfifo_faststateUPqlen1000 link/ether00:0c:29:aa:22:47brdff:ff:ff:ff:ff:ff inet192.168.1.63/24scopeglobaleno33554984 valid_lftforeverpreferred_lftforever inet6fe80::20c:29ff:feaa:2247/64scopelink valid_lftforeverpreferred_lftforever [root@host2~]#route-n KernelIProutingtable DestinationGatewayGenmaskFlagsMetricRefUseIface 10.1.0.00.0.0.0255.255.0.0U10000eno16777736 192.168.1.00.0.0.0255.255.255.0U000eno33554984 0.0.0.0192.168.1.1255.255.255.255UGH000eno33554984 主机C: root@debian:~#ipaddrshowdeveth1 3:eth1:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdiscpfifo_faststateUPgroupdefaultqlen1000 link/ether00:0c:29:f1:04:08brdff:ff:ff:ff:ff:ff inet10.2.110.100/16scopeglobaleth1 valid_lftforeverpreferred_lftforever root@debian:~#route-n KernelIProutingtable DestinationGatewayGenmaskFlagsMetricRefUseIface 10.1.0.00.0.0.0255.255.0.0U000eth0 10.2.0.00.0.0.0255.255.0.0U000eth1 0.0.0.010.2.0.1255.255.255.255UGH000eth1 root@debian:~# 至此所有配置已经结束,关闭所有主机的网关和selinux 测试: 在主机C上: root@debian:~#ping-Ieth1192.168.1.1 PING192.168.1.1(192.168.1.1)from10.2.110.100eth1:56(84)bytesofdata. 64bytesfrom192.168.1.1:icmp_seq=1ttl=62time=0.691ms 64bytesfrom192.168.1.1:icmp_seq=2ttl=62time=1.17ms ^C ---192.168.1.1pingstatistics--- 2packetstransmitted,2received,0%packetloss,time1000ms rttmin/avg/max/mdev=0.691/0.931/1.171/0.240ms root@debian:~#ping-Ieth1192.168.1.63 PING192.168.1.63(192.168.1.63)from10.2.110.100eth1:56(84)bytesofdata. 64bytesfrom192.168.1.63:icmp_seq=1ttl=61time=1.22ms 64bytesfrom192.168.1.63:icmp_seq=2ttl=61time=0.927ms ^C ---192.168.1.63pingstatistics--- 2packetstransmitted,2received,0%packetloss,time1001ms rttmin/avg/max/mdev=0.927/1.074/1.221/0.147ms root@debian:~#ping-Ieth1192.168.1.100 PING192.168.1.100(192.168.1.100)from10.2.110.100eth1:56(84)bytesofdata. 64bytesfrom192.168.1.100:icmp_seq=1ttl=61time=1.21ms 64bytesfrom192.168.1.100:icmp_seq=2ttl=61time=1.78ms ^C ---192.168.1.100pingstatistics--- 2packetstransmitted,2received,0%packetloss,time1001ms rttmin/avg/max/mdev=1.214/1.497/1.780/0.283ms root@debian:~# 在主机A上: [root@host1~]#ping-Ieno3355498410.2.110.100 PING10.2.110.100(10.2.110.100)from192.168.1.100eno33554984:56(84)bytesofdata. 64bytesfrom10.2.110.100:icmp_seq=1ttl=61time=0.985ms 64bytesfrom10.2.110.100:icmp_seq=2ttl=61time=1.09ms 64bytesfrom10.2.110.100:icmp_seq=3ttl=61time=1.89ms 64bytesfrom10.2.110.100:icmp_seq=4ttl=61time=2.00ms ^C ---10.2.110.100pingstatistics--- 4packetstransmitted,4received,0%packetloss,time3005ms rttmin/avg/max/mdev=0.985/1.493/2.008/0.459ms [root@host1~]# 在主机B上: [root@host2~]#ping-Ieno3355498410.2.110.100 PING10.2.110.100(10.2.110.100)from192.168.1.63eno33554984:56(84)bytesofdata. 64bytesfrom10.2.110.100:icmp_seq=1ttl=61time=1.15ms 64bytesfrom10.2.110.100:icmp_seq=2ttl=61time=1.93ms 64bytesfrom10.2.110.100:icmp_seq=3ttl=61time=0.979ms ^C ---10.2.110.100pingstatistics--- 3packetstransmitted,3received,0%packetloss,time2003ms rttmin/avg/max/mdev=0.979/1.355/1.930/0.412ms [root@host2~]#ping-Ieno3355498472.98.70.20 PING72.98.70.20(72.98.70.20)from192.168.1.63eno33554984:56(84)bytesofdata. 64bytesfrom72.98.70.20:icmp_seq=1ttl=62time=0.751ms 64bytesfrom72.98.70.20:icmp_seq=2ttl=62time=0.807ms 64bytesfrom72.98.70.20:icmp_seq=3ttl=62time=1.33ms ^C ---72.98.70.20pingstatistics--- 3packetstransmitted,3received,0%packetloss,time2000ms rttmin/avg/max/mdev=0.751/0.964/1.335/0.264ms [root@host2~]#ping-Ieno3355498472.98.70.10###不知道为啥ping不通 PING72.98.70.10(72.98.70.10)from192.168.1.63eno33554984:56(84)bytesofdata. From110.1.24.20icmp_seq=1DestinationHostUnreachable From110.1.24.20icmp_seq=2DestinationHostUnreachable From110.1.24.20icmp_seq=3DestinationHostUnreachable ^C ---72.98.70.10pingstatistics--- 5packetstransmitted,0received,+3errors,100%packetloss,time4002ms pipe4 [root@host2~]#ping-Ieno33554984110.1.24.20 PING110.1.24.20(110.1.24.20)from192.168.1.63eno33554984:56(84)bytesofdata. 64bytesfrom110.1.24.20:icmp_seq=1ttl=63time=0.556ms 64bytesfrom110.1.24.20:icmp_seq=2ttl=63time=2.15ms 64bytesfrom110.1.24.20:icmp_seq=3ttl=63time=0.972ms ^C ---110.1.24.20pingstatistics--- 3packetstransmitted,3received,0%packetloss,time2002ms rttmin/avg/max/mdev=0.556/1.228/2.157/0.678ms [root@host2~]#ping-Ieno33554984110.1.24.10 PING110.1.24.10(110.1.24.10)from192.168.1.63eno33554984:56(84)bytesofdata. 64bytesfrom110.1.24.10:icmp_seq=1ttl=64time=0.282ms 64bytesfrom110.1.24.10:icmp_seq=2ttl=64time=0.598ms 64bytesfrom110.1.24.10:icmp_seq=3ttl=64time=0.367ms ^C ---110.1.24.10pingstatistics--- 3packetstransmitted,3received,0%packetloss,time2000ms rttmin/avg/max/mdev=0.282/0.415/0.598/0.135ms [root@host2~]# 2.centos7的网络组实现 网络组类似于centos6的bond,都是多个网卡使用一个IP,是增强网络健壮性的一个手段 网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量 网络组不同于旧版中bonding技术,提供更好的性能和扩展性 网络组由内核驱动和teamd守护进程实现.包名是teamd 启动网络组接口不会自动启动网络组中的port接口启动网络组接口中的port接口不会自动启动网络组接口禁用网络组接口会自动禁用网络组中的port接口没有port接口的网络组接口可以启动静态IP连接启用DHCP连接时,没有port接口的网络组会等待port接口的加入 具体的runner方式可以查看man 5 teamd.conf帮助 创建网络组接口: [root@linux~]#nmcliconaddtypeteamcon-nametestifnameteam0config'{"runner":{"name":"activebackup"}}' Connection'test'(5a3bfb26-993f-45ad-add6-246ff419e7bd)successfullyadded. 此时在网络配置目录下生成了一个文件 [root@linux~]#ls/etc/sysconfig/network-scripts/ifcfg-test /etc/sysconfig/network-scripts/ifcfg-test [root@linux~]#nmclidevshowteam0 GENERAL.DEVICE:team0 GENERAL.TYPE:team GENERAL.HWADDR:82:D0:69:2C:48:6E GENERAL.MTU:1500 GENERAL.STATE:70(connecting(gettingIPconfiguration)) GENERAL.CONNECTION:test GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/3 [root@linux~]#nmcliconshow NAMEUUIDTYPEDEVICE eno33554984fb67dbad-ec81-39b4-42b1-ebf975c3ff13802-3-etherneteno33554984 eno16777736d329fbf7-4423-4a10-b097-20b266c26768802-3-etherneteno16777736 eno50332208d2665055-8e83-58f1-e9e3-49a5fb133641802-3-etherneteno50332208 test5a3bfb26-993f-45ad-add6-246ff419e7bdteamteam0 给team0设置静态IP和开机自启动 [root@linux~]#nmcliconmodtestipv4.methodmanualipv4.addresses"10.1.70.24/16"connection.autoconnectyes [root@linux~]#cat/etc/sysconfig/network-scripts/ifcfg-test DEVICE=team0 TEAM_CONFIG="{\"runner\":{\"name\":\"activebackup\"}}" DEVICETYPE=Team BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no NAME=test UUID=5a3bfb26-993f-45ad-add6-246ff419e7bd ONBOOT=yes IPADDR=10.1.70.24 PREFIX=16 IPV6_PEERDNS=yes IPV6_PEERROUTES=yes [root@linux~]# 创建两个port接口 [root@linux~]#nmcliconaddtypeteam-slavecon-nametest-1ifnameeno33554984masterteam0 Connection'test-1'(234c3e91-d90d-421c-ae88-133deddfce94)successfullyadded. [root@linux~]#nmcliconaddtypeteam-slavecon-nametest-2ifnameeno50332208masterteam0 Connection'test-2'(116ef596-d983-456c-a6ae-a74a4f8c03dc)successfullyadded. [root@linux~]# [root@linux~]#cat/etc/sysconfig/network-scripts/ifcfg-test-1 NAME=test-1 UUID=234c3e91-d90d-421c-ae88-133deddfce94 DEVICE=eno33554984 ONBOOT=yes TEAM_MASTER=team0 DEVICETYPE=TeamPort [root@linux~]#cat/etc/sysconfig/network-scripts/ifcfg-test-2 NAME=test-2 UUID=116ef596-d983-456c-a6ae-a74a4f8c03dc DEVICE=eno50332208 ONBOOT=yes TEAM_MASTER=team0 DEVICETYPE=TeamPort 查看网络组状态: [root@linux~]#teamdctlteam0stat setup: runner:activebackup runner: activeport: 发现port端口均没有开启 开启port端口 [root@linux~]#nmcliconuptest-1 Connectionsuccessfullyactivated(D-Busactivepath:/org/freedesktop/NetworkManager/ActiveConnection/5) [root@linux~]#nmcliconuptest-2 Connectionsuccessfullyactivated(D-Busactivepath:/org/freedesktop/NetworkManager/ActiveConnection/7) [root@linux~]#teamdctlteam0stat setup: runner:activebackup ports: eno33554984 linkwatches: linksummary:up instance[link_watch_0]: name:ethtool link:up downcount:0 eno50332208 linkwatches: linksummary:up instance[link_watch_0]: name:ethtool link:up downcount:0 runner: activeport:eno33554984 可以看到端口开启成功 [root@linux~]#ping-Iteam010.1.70.172 PING10.1.70.172(10.1.70.172)from10.1.70.24team0:56(84)bytesofdata. 64bytesfrom10.1.70.172:icmp_seq=1ttl=64time=0.500ms 64bytesfrom10.1.70.172:icmp_seq=2ttl=64time=0.804ms ^C ---10.1.70.172pingstatistics--- 2packetstransmitted,2received,0%packetloss,time1001ms rttmin/avg/max/mdev=0.500/0.652/0.804/0.152ms [root@linux~]# 配置成功,可以看到当前活动的是eno33554984,测试禁用后能否成功 [root@linux~]#nmclidevicedisconnecteno33554984 Device'eno33554984'successfullydisconnected. [root@linux~]#ping-Iteam010.1.70.172 PING10.1.70.172(10.1.70.172)from10.1.70.24team0:56(84)bytesofdata. 测试不成功,通过查找资料了解到当使用activebackup的runner时,必须加上一个参数 [root@linux~]#nmcliconmodifytestteam.config'{"runner":{"name":"activebackup","hwaddr_policy":"by_active"}}' [root@linux~]#cat/etc/sysconfig/network-scripts/ifcfg-test DEVICE=team0 TEAM_CONFIG="{\"runner\":{\"name\":\"activebackup\",\"hwaddr_policy\":\"by_active\"}}" DEVICETYPE=Team BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no NAME=test UUID=5a3bfb26-993f-45ad-add6-246ff419e7bd ONBOOT=yes IPADDR=10.1.70.24 PREFIX=16 IPV6_PEERDNS=yes IPV6_PEERROUTES=yes 详情参考:http://183530300.blog.51cto.com/894387/1851388

优秀的个人博客,低调大师

Centos7一些常用命令的不常用用法

1. root下进入其他用户主目录 cd ~USERNAME 2. touch的另外的一种作用 常用的是touch创建一个不存在的文件 而touch一个存在的文件时候,touch会修改文件的三个时间(使用stat可以查看),其中access表示最后一个访问时间,modify表示最后一次修改文件的时间,change表示最后修改文件属性的时间 3. file查看文件类型 镜像文件(iso)的文件类型为iso9660 4./etc/passwd中各字段对应解释 1 用户名:2密码:3uid:4gid:5备注:6home目录:7登录shell 该文件的内容是通过useradd命令生成,每使用useradd一次,在/etc/passwd追加一行 需要注意的是rhcl6版本中0-500表示系统账户,而rhcl7版本依赖0-1000表示系统账户 useradd: -u UID #指定uid,不使用该选项,则默认为普通账户即uid>=1000,且不与现存uid冲突 -g 已存在GID/组名 #指定所属用户组,不选用该选项,同时默认在/etc/group文件中追加一行信息,其中组名默认与用户名一致。 -G 指定附加组 # -M 强制不建立home目录 -s 指定登录shell #/sbin/nologin为不可登录shell 相关命令还有userdel(删除用户)、usermod(修改用户)、groupadd(增加用户组)、groupdel(删除用户组) userdel -r USERNAME #删除用户的同时删除home目录下所有信息 usermod -aG GNAME1...GNAMEN USERNAME #追加附加组 /etc/passwd中的密码不再直接显示,用x代替。密码保存在/etc/shadow(无任何可读写执行权限)中,修改密码使用passwd命令(交互式)实现。 非交互式修改密码:echo "NEWPASSWD"|passwd --stdin USERNAME 5. ls -l 命令显示的信息详释 第一行中total表示当前目录下所有内容总共所占大小,默认单位为kb 余下行中的最后一个字段为为文件名,第6,7,8字段表示文件(目录)最近访问(修改)时间 第5个字段表示文件所占空间,默认单位为byte,可使用ls -lh以kb显示 第3,4个字段分别描述文件所属的用户名及属主组 可使用chown 用户名:组名 文件名/chown -R 用户名:组名 目录名 修改其属主及属主组 第2个字段表示该文件的硬链接数 第1个字段共10个字母。 第一个字母表示文件类型 -:普通文件 d:目录文件 c:字节文件 b:块文件 p:管道文件 s:socket文件 等等 后9个字母,每三个为一组。第一组为当前用户关于此文件的操作权限,第二组为属主组内其他用户的操作权限,第三组为其他属主组内用户对此文件的操作权限 非目录文件: r(4)表示可读,w(2)表示可写,x(1)表示可执行 目录:r表示可以查看目录下的内容 w表示可以向目录里写内容 x表示可进入这个目录 (只有wx同时存在才能真正在该目录内操作) 创建一个文件或目录默认的权限通过如下获取: 文件:0666-umask(若umask的存在某位为奇数,计算之后必须在对应奇数位加1) 目录:0777-umask 还有三种比较特殊的权限: 分别是suid(4)、sgid(2)、sbit(1),这三种权限分别显示在三组字母的第三位。若分别为小写的s,s,t,则表示拥有x权限。对应为S,S,T,表示无对应的x权限。 拥有suid权限时,其他用户执行这条命令,将会获取该命令的拥有人权限,可以访问一些自身并没有访问权限的文件。 我们修改目录的属主组时,希望该目录下所有文件继承该属主组 从上图可以看出,并没有达到效果,我们增加sgid权限,可以达到如期效果 用户对拥有sbit权限的目录具有wx权限时,用户在该目录下创建的文件及目录,只有自身与root才可以删除。 6. 登录shell与非登录shell中一些知识 登录shell往往是通过用户名及密码登录系统时所用shell。 非登录shell则往往不需要用户名及密码 su - USERNAME属于登录shell。而su USERNAME与非登录shell 非登录shell状态通过exit退出,而登录shell状态主要使用logout退出(exit也可以) 登录shell与非登录shell最主要的区别是读取的配置文件不同。这里涉及四个配置文件1:/etc/bashrc,2:/etc/profile,3:~/.bashrc,4:~/.bash_profile。 其中1,2为全局层面,3,4是局部层面;通常我们在1,3里定义别名alias,在2,4定义变量。 非登录shell不会读取2,4中的内容。通常编写的shell脚本出现定义的环境变量不存在,往往需要手动让其生效(source或者.)。同时对1,2,3,4修改,必须通过source(.)让其生效。 source(.) xxx.sh、bash xxx.sh 及 (chmod u+x xxx.sh; ./xxx.sh)执行脚本的主要不同。 后两者主要通过开启一个子进程去执行脚本,执行结果返回给父进程。 而source(.)是在当前进程直接运行脚本。下图给出了一个简单的对比情况,source之后,当前shell进程直接结束。 还有一些关于变量的命令: set:显示及设置私有变量以及用户变量 env:显示及设置用户变量变量 export:将本地变量上升到一个环境变量。不export,则定义的变量不会被其他非登录shell继承。而即使export,登录到其他shell,也不会继承该变量。同时定义的本地变量重启失效,所以建议自选择地加入上述四个配置文件中。

优秀的个人博客,低调大师

记一次CentOS7内核kernel的删除重装

人生在于折腾,学习Linux更要多多折腾。在一次折腾中吸取教训,更易于记忆。 今天我们来折腾Linux的内核:删除系统内核后,通过光盘进行kernel的重安装。 友情提示:请在虚拟机环境进行,折腾前务必做好系统快照。慎重! 环境 本次系统环境是如下图: 删除 我们先到/boot目录下,强制删除kernel文件: 重启PC,此时系统报错找不到内核文件,无法登录系统。 恢复 由于系统已无法启动,我们需要CentOS光盘进入救援模式,进行恢复操作,具体步骤: 1. 光盘启动系统 关闭虚拟机,在虚拟机设置里,设置ISO映像文件。 设置开机进入BIOS,以方便我们修改first boot 设置光盘启动,(方向键将光标移动熬CD-ROM Drive,用“-”“+”键实现选项移动,完成修改后,按F10保存,并开机) 2. 进入救援模式 此时,我们开机已经能启动ISO的界面了,选择Troubleshooting 选择进入救援模式: 选择继续: 按Enter键进入shell命令行: 3. 救援模式命令行重装kernel 这里我们需要注意的是: 此时我们进入的是光盘加载到内存的系统,此时的文件系统,是光盘映像加载的。 而我们需要恢复的是安装在硬盘里的CentOS系统,因此,我们要先命令df查看当前磁盘分区空间: 这时,我们可以看到光盘路径是 /run/install/repo 需要恢复的CentOS路径是 /mnt/sysp_w_picpath 我们需要的操作就是从光盘里调出rpm包,进行安装:(注意:需要指定安装路径 --root=/mnt/sysp_w_picpath) sh-4.2#rpm-ivh/run/install/repo/Packages/kernel-3.10.0-327.el7.x86_64.rpm--root=/mnt/sysp_w_picpath/ 读条完成,当命令行提示符出现后,表示我们已经安装完成,就可以重启PC了:(需要BIOS修改取消光盘,恢复硬盘启动) 看到了熟悉的界面,瞬间成就感+1。 总结 通过本例,为我们在内核遭到破坏时候,提供了重装恢复的方法,值得注意的是,当我们进入挂载模式时候,要考虑当前文件系统和需恢复的系统的区别,rpm安装kernel时,要进行安装路径的指定(--root选项。)

优秀的个人博客,低调大师

centos7 安装redmin3.3.0+postgresql数据库

一、前言 Redmine是用Ruby开发的基于web的项目管理软件,是用ROR框架开发的一套跨平台项目管理系统,据说是源于Basecamp的ror版而来,支持多种数据库,有不少自己独特的功能,例如提供wiki、新闻台等,还可以集成其他版本管理系统和BUG跟踪系统,例如Perforce、SVN、CVS、TD等等。这种 Web 形式的项目管理系统通过“项目(Project)”的形式把成员、任务(问题)、文档、讨论以及各种形式的资源组织在一起,大家参与更新任务、文档等内容来推动项目的进度,同时系统利用时间线索和各种动态的报表形式来自动给成员汇报项目进度。 二、安装依赖和postgresql数据库 1、首先,我们需要安装以下依赖关系 [root@bogon~]#yum-yinstallzipunziplibyaml-develzlib-develcurl-developenssl-develhttpd-develapr-develapr-util-develgccruby-develgcc-c++makepostgresql-develImageMagick-develsqlite-develperl-LDAPmod_perlperl-Digest-SHA 2、然后安装epel源和postgresql数据库 [root@bogon~]#yum-yinstallepel-release [root@bogon~]#yum-yinstallpostgresql* 3、初始化数据库 [root@bogon~]#postgresql-setupinitdb 4、启动设置postgresql为开机自启动 [root@bogon~]#systemctlrestartpostgresql [root@bogon~]#systemctlenablepostgresql 5、登进数据库查看状态(可略) [root@bogon~]#su-postgres -bash-4.2$psql postgres=#\du(查看角色) postgres=#\l(列出所有数据库) postgres=#\q(退出) 6、创建postgresql用户及数据库实例 [root@bogon~]#su-postgres -bash-4.2$createuserredmine创建用户名 -bash-4.2$createdb-e-Oredmineredmine绑定用户名及数据库实例 7、给数据库新用户设置密码 [root@bogon~]#su-postgres -bash-4.2$psql postgres=#\passwordredmine给用户redmine创建密码 Enternewpassword:输入密码 Enteritagain:再次输入密码 postgres=# postgres-#\q退出 -bash-4.2$exit [root@bogon~]# 8、编辑/var/lib/pgsql/data/pg_hba.conf文件,将# IPv4 local connections:下面的 hostallall127.0.0.1/32identident改为md5 9、重启数据库,让新的验证方法生效 [root@bogon~]#systemctlrestartpostgresql 10、新用户登录数据库(可略) [root@bogon~]#psql-Uredmine-dredmine-h127.0.0.1 Passwordforuserredmine: psql(9.2.15) Type"help"forhelp. redmine=> 11、禁用selinux [root@bogon~]#setenforce0这是临时关掉,系统重启后会自动开启。 setenforce:SELinuxisdisabled 永久关闭,编辑/etc/selinux/config文件,将SELINUX设置为disabled即可。 三、安装PHP和PHP相关插件,以及rvm和ruby安装 1、php相关依赖安装 [root@bogon~]#yum-yinstallphpphp-mysqlphp-gdphp-imapphp-ldapphp-mbstringphp-odbcphp-pearphp-xmlphp-xmlrpcphp-pecl-apcphp-soap 2、rvm安装 [root@bogon~]#\curl-Lhttps://get.rvm.io|bash 3、将rvm的命令加入到系统的环境变量中去 [root@bogon~]#source/etc/profile.d/rvm.sh 4、安装rubygems [root@bogon~]#yuminstall-yrubygems 5、移除ruby的官方源,使用淘宝的rubygems源(官网源被墙掉了) [root@bogon~]#gemsources-a加入淘宝源 [root@bogon~]#gemsources-remove移除官网源 [root@bogon~]#gemsources-l查看rubygems源 6、查看rvm版本和使用rvm安装ruby [root@bogon~]#rvmlistknown [root@bogon~]#rvminstall1.9.3安装rvm和ruby [root@bogon~]#ruby-v查看安装后的ruby的版本 四、下载并安装redmine 1、下载解压 [root@bogon~]#wget下载 [root@bogon~]#unzipredmine-3.3.0.zip解压 [root@bogon~]#ln-svredmine-3.3.0redmine链接 2、在redmine的程序中,配置数据库相关的信息 [root@bogon~]#cdredmine/config/ [root@bogonconfig]#cpdatabase.yml.exampledatabase.yml 编辑database.yml文件,修改如下: 3、安装rails相关库的支持 [root@bogonconfig]#geminstallbundler Fetching:bundler-1.12.5.gem(100%) Successfullyinstalledbundler-1.12.5 Parsingdocumentationforbundler-1.12.5 Installingridocumentationforbundler-1.12.5 Doneinstallingdocumentationforbundlerafter7seconds 1geminstalled [root@bogonconfig]# 4、编辑redmine文件夹中的文件Gemfile文件 [root@bogonredmine]#vimGemfile source'将源改为淘宝源 [root@bogonredmine]#bundleinstallbundle安装,可能会报错。 [root@bogonredmine]#gemupdate需要先更新gem 5、创建一个session安装密钥 [root@bogonredmine]#rakegenerate_secret_token 6、创建初始化所有redmine用到的table表 [root@bogonredmine]#RAILS_ENV=productionrakedb:migrate 7、装入默认的配置信息,输入zh(选择中文) [root@bogonredmine]#RAILS_ENV=productionrakeredmine:load_default_data 8、启动redmine [root@bogonredmine]#railsserverwebrick-eproduction 9、后台运行 [root@bogonredmine]#railsserverwebrick-eproduction-d

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。