0%

proxychains4介绍

proxychains4是一款linux代理设置软件,在需要代理的命令前加proxychains4就可了。

Linux安装

对应的图文百度经验教程

centos7 安装使用proxychains4

1
2
3
4
5
6
7
8
yum -y install gcc automake autoconf libtool make #安装make编译工具
git clone https://github.com/rofl0r/proxychains-ng.git #下载,需要先安装git
cd proxychains-ng
./configure #配置
sudo make && sudo make install #编译安装
sudo cp ./src/proxychains.conf /etc/proxychains.conf #提取配置文件
cd .. && rm -rf proxychains-ng #删除安装文件
sudo vim /etc/proxychains.conf #编辑配置文件(修改最后一行为 socks5 127.0.0.1 1080)这个对应你的代理地址

测试

1
2
proxychains4 wget www.google.com #如果没提示错误,然后当前目录会多一个index.html
rm index.html #清除测试垃圾

使用

1
2
3
4
proxychains4 <命令>
#eg
proxychains4 bash #该终端的命令自动代理 ,退出exit
proxychains4 firefox #火狐浏览器代理模式

安装

Get Docker CE for Ubuntu

1
2
3
4
#查看可安装版本
apt-cache madison docker-ce
#安装指定版本(降级)
sudo apt install docker-ce=17.09.1~ce-0~ubuntu
  1. docker-ce | 17.12.0~ce-0~ubuntu 安装gitlab出现 Failed to find a load balance… 错误

    解决降级版本17.09.1解决

挂载卷Volume与Bind

Volume 数据卷

会把container的一个目录映射到一个数据卷,一个目录只能映射一个数据卷,不需要新建目录

graph LR
A[containner目录] --> |映射| B[数据卷]
Bind 绑定本地目录

container的一个目录会加载本地目录,因此需要在本地提前新建该目录,不然启动会找不到目录

graph LR
A[本地目录] --> |指向| B[containner目录]
方案选型与测试

方案有

启动顺序

[[vishnubob]/**wait-for-it

entrypoint vs cmd

entrypoint 必须执行服务话

cmd 命令型,可执行

总结:

  1. 如果用wait-for支持alpine,使用sh,wait-for-it使用bash
  2. dockercompose会覆盖dockerfile里面的cmd命令
  3. 通过挂载形式把脚本放进去执行,或者通过dockerfile 构建时构建进去
  4. 在容器内进行测试时,发现不能跟/actuator/health,会连接超时,
  5. 直接执行时,如果服务没启动也会超时,但是可以跟可以跟参数-t设置为0不超时,会一直等待
1
2
3
4
#不能加/actuator/health,请求超时,不能用wait-for-it.sh  ,不支持alpine ,经测试感觉怪,还使用 depends_on
command: ["./wait-for.sh", "config-server:14030", "--", "java","-jar","app.jar"]
depends_on:
- config-server

镜像升级

portainer升级命令

docker service update --image portainer/portainer:latest portainer_portainer

然后重启portainer服务

docker service upadte 命令参数详解
  • --force 强制更新重启服务,无论是否配置或镜像改变都更新

  • --image <image:tag> 制定更新的镜像

  • --with-registry-auth 私有仓库需要携带该参数,否则提示

    1
    2
    3
    image 192.168.1.230:14005/manage/test/ygl/app:latest could not be accessed on a registry to record
    its digest. Each node will access 192.168.1.230:14005/manage/test/ygl/app:latest independently,
    possibly leading to different nodes running different
1
2
# 登陆仓库
docker login 192.168.1.230:14005 -u admin -p password

节点升级

docker node update --role manager node

该命令只会更改角色,部分权限并没有立即更新,因此执行服务操作时有可能提示该错误Error response from daemon: rpc error: code = DeadlineExceeded desc = context deadline exceeded

立即生效更新节点为manger 执行docker node promote node

服务发现

服务发现组件记录了(大规模)分布式系统中所有服务的信息,人们或者其它服务可以据此找到这些服务。 DNS 就是一个简单的例子。当然,复杂系统的服务发现组件要提供更多的功能,例如,服务元数据存储、健康监控、多种查询和实时更新等。

环境

ID Hostname(role) IP 端口(不包括必须的)
ywtryezli3s9hvhnmzgndi118 xuanps(manager) 10.14.0.1:2377 TCP14000-14020
n8jomnk98nrog10tsspp3u38u localhost.localdomain(worker) 10.14.0.4 TCP14000-14020
kpbotld5edj55azexhbjfixai xuan-ubuntu(worker) 192.168.123.2

镜像:marshalw/hello-service

创建服务docker service create -p 3000:3000 --name hello-service marshalw/hello-service:0.1.0

然后再三台主机都能访问下面任何一个地址

1
2
3
4
curl http://10.14.0.4:14000/hello/name
curl http://10.14.0.1:14000/hello/name
curl http://192.168.123.2:14000/hello/name
curl http://112.74.51.136:14000/hello/name

介绍

系统服务/lib/systemd/system

用户服务(需要登陆后才能执行)/usr/lib/systemd/system

Systemd服务文件以.service结尾

######注:ubuntu是在/etc/systemd/system/

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#查看所有启动的服务
systemctl list-units --type=service
#重启
systemctl restart nginx.service
#查看状态
systemctl status nginx.service
#启动
systemctl start nginx.service
#开机启动
systemctl enable nginx.service
#关闭开机启动
systemctl disable nginx.service
#重新扫描变动
systemctl daemon-reload
#查看所有的服务
systemctl list-unit-files

配置文件解释

普通服务文件命名规则serverName.service

带参数服务文件命名规则serverName@.service,使用时systemctl start serverName@%i其中%i为动态参数,一般为配置文件名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[Unit] #服务说明
#描述
Description=Shadowsocks-Libev Custom Client Service for %I
Documentation=man:ss-local(1)
#描述服务类别
After=network.target

[Service] #服务运行参数设置
#运行形式forking 后台形式、simple 普通模式?
Type=simple
#全局变量配置文件
#EnvironmentFile=/etc/sysconfig/shadowsocks-libev
# "$CONFFILE"配置在全局变量配置文件shadowsocks-libev,见附件
#ExecStart=/usr/bin/ss-local -c "$CONFFILE" $DAEMON_ARGS

CapabilityBoundingSet=CAP_NET_BIND_SERVICE
#服务的具体运行命令
ExecStart=/usr/bin/ss-local -c /etc/shadowsocks-libev/%i.json
#ExecReload=为重启命令
#ExecStop=为停止命令
User=nobody
Group=nobody
LimitNOFILE=32768

[Install]
WantedBy=multi-user.target

实战

残酷,革命尚未成功

vim /usr/lib/systemd/system/dropbox.service添加一个用户登陆后启动的服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[Unit]
Description=Dropbox as a system service user

[Service]
Type=forking
ExecStart=/usr/bin/dropbox start
ExecStop=/usr/bin/dropbox stop
User=nobody
Group=nobody
# 'LANG' might be unnecessary, since systemd already sets the
# locale for all services according to "/etc/locale.conf".
# Run `systemctl show-environment` to make sure.
#Environment=LANG=en_US.utf-8

[Install]
WantedBy=multi-user.target

附件

shadowsocks-libev

1
2
3
4
5
6
START=yes
CONFFILE="/etc/shadowsocks-libev/config.json"
DAEMON_ARGS="-u"
USER=nobody
GROUP=nobody
MAXFD=32768

环境准备

软件环境
  • Hyper-v虚拟机
  • boot2docker镜像:17.11.0-ce
网络环境
网络名 状态 设备名 网络信息(ip/掩码) route
以太网 外网 Realtek PCIe 192.168.210.85
255.255.252.0
以太网2 无外网 TAPV9(ovpn) 10.10.0.126
255.255.255.252
10.10.0.0
192.168.12.0
以太网3 无外网 TAPV9 #2(ovpn) 10.14.0.3
255.255.255.0
10.14.0.0
192.168.123.0
vEthernet(默认网关) 无外网 Hyper-v(虚拟机) 172.21.117.33
255.255.255.240
vEthernet(xuan-docker) 无外网 Hyper-v #2(虚拟机) 169.254.55.239
255.255.0.0
eth0(v-h) 192.168.211.31
192.168.211.255

测试

场景一

xuan-docker(内部网络) 桥接 以太网2

现象:以太网2无法连接
场景二

xuan-docker(内部网络) 桥接 以太网

现象:以太网无法连网
场景三

外部网络到以太网

现象:IP自动分配,但是网段非正常,设置不来
场景四

外部网络到以太网3

######现象:ip无法分配,获取不到ip,设置不来静态ip

参考

Hyper-V 2012 R2 网络配置

  • ubuntu16.04(bash on window)

如果没有安装wsl(bash on ubuntu)参考win10 安装ubuntu子系统bash on ubuntu

Ubuntu最新子系统已集成ssh客户端和服务端,只需要简单配置

如果没有安装参考Ubuntu17.04 开启远程连接ssh服务端

  1. 备份sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
  2. 修改配置文件sudo vim /etc/ssh/sshd_config
1
2
3
4
Port 2200 # 端口改为2200,22端口已被占用
ListenAddress 0.0.0.0 # 取消注释
#StrictModes yes # 注释
PasswordAuthentication yes # 允许密码登录
  1. 启动ssh服务sudo service ssh start

  2. 检查服务ps -e |grep ssh 如果有sshd代表启动成功

  3. 测试是否可以连接ssh -p 2200 xuan@127.0.0.1用户名一般为wsl子系统@服务前面的名字,密码为系统登陆密码

  4. 如果需要远程连接需要开放防火墙端口2200

    参考:win10 远程访问tomcat,开放8080端口

路由

routeroute PRINT

Destination(ip/网段) Gateway(网关) Genmask(子网掩码) Iface(网卡)
192.168.123.110 10.8.0.2 255.255.255.255(ip) tun0
192.168.123.0 10.8.0.1 255.255.255.0(网段) tun0
解释

第一条:访问192.168.123.110将从tun0网卡的10.8.0.2的网关转发出去

第二条:访问192.168.(1~255)内所有的ip将从网卡tun0网卡的10.8.0.1的网关转发出去

服务配置

1
2
3
4
5
6
#推送路由192.168.123.110(ip)到所有客户端
push "route 192.168.123.110 255.255.255.255"
#推送路由192.168.123.0(网段)到所有客户端(除了在ccd客户端配置了这是他的路由的客户端)
push "route 192.168.123.0 255.255.255.0"
#设置服务器的路由:访问192.110.10.1时从10.8.0.1(网关)访问,10.8.0.1不设置可以从route命令查看网关是
route 192.110.10.1 255.255.255.255 10.8.0.1

####客户端配置

服务端需要添加配置client-config-dir ccd指定客户端配置目录为ccd

配置文件名为直接客户端的名字没有.conf和任何后缀

1
2
3
4
5
#指定客户端ip为10.8.0.7
ifconfig-push 10.8.0.7 255.255.255.0
#标记这是我的子网,让我的子网也可以访问openvpn,另一个作用就是push路由时,不会推送该路由到该客户端
iroute 192.168.123.0 255.255.255.0
route 192.168.123.0 255.255.255.0

我的设置如下

10.8.0.1 服务器

10.8.0.8 家

10.8.0.5 工作

server.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
port 1194
proto tcp
dev tun
sndbuf 0
rcvbuf 0
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-auth ta.key 0
topology subnet
server 10.8.0.0 255.255.255.0
#ifconfig-pool-persist ipp.txt
#push "redirect-gateway def1 bypass-dhcp"
#push "dhcp-option DNS 100.100.2.138"
#push "dhcp-option DNS 100.100.2.136"
push "route 10.8.0.0 255.255.255.0"
push "route 192.168.123.0 255.255.255.0"
route 192.168.123.0 255.255.255.0 10.8.0.8
client-config-dir ccd
client-to-client
keepalive 10 120
cipher AES-256-CBC
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3
crl-verify crl.pem

client

1
2
3
ifconfig-push 10.8.0.8 255.255.255.0
iroute 192.168.123.0 255.255.255.0
route 192.168.123.0 255.255.255.0

openvpn service安装与配置

1.下载脚本wget https://git.io/vpn -O openvpn-install.sh
1
2
3
4
#添加执行权限
chmod +x openvpn-install.sh
#总结
wget https://git.io/vpn -O openvpn-install.sh && bash openvpn-install.sh
2.运行脚本./openvpn-install.sh,设置如下
  1. 监听地址设置为空 IP address:
  2. Protocol:[2]TCP
  3. Port:1194
  4. 不选DNS:
  5. client name: client_k2
  6. External IP : 112.74.51.136
3. 配置服务端vim /etc/openvpn/server.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
#指定ip,所以记录ip没效果屏蔽
;ifconfig-pool-persist ipp.txt
;push "redirect-gateway def1 bypass-dhcp"
#推送服务器路由
push "route 10.14.0.0 255.255.255.0"
#推送k2客户端子网路由到所有客户端除了ccd里面申明了该路由的客户端
push "route 192.168.123.0 255.255.255.0"
#添加服务器路由,访问客户端K2的192.168.123.0子网通过网关10.14.0.2(k2客户端ip)
route 192.168.123.0 255.255.255.0 10.14.0.2
#添加客户端配置目录,启用之后,每个客户端必须指定ip,否正有可能访问不了其他客户端的子网
client-config-dir ccd
#客户端访问客户端
client-to-client
4. 配置客户端路由mkdir /etc/openvpn/ccdvim /etc/openvpn/ccd/client_k2
1
2
3
4
5
#设置该客户端的vpn的ip是10.14.0.2,子网掩码必须是255.255.255.0,如果启用ccd,必须配置
ifconfig-push 10.14.0.2 255.255.255.0
#申明192.168.123.0是自己的子网,并且让子网也可以访问vpn服务器,申明之后不会推送该路由到该客户端
iroute 192.168.123.0 255.255.255.0
route 192.168.123.0 255.255.255.0
5.添加客户端./openvpn-install.sh
  1. Select an option[1-4]:1 (add a new user)
  2. client name: client_worker
1
2
3
4
5
6
7
#编辑配置文件
vim /etc/openvpn/server.conf
#重启生效
systemctl restart openvpn@server.service
systemctl enable openvpn@server.service
#注释掉客户端的
#setenv opt block-outside-dns
6.下载ovpn文件,并修改配置,注释调#setenv opt block-outside-dns
7.常用命令
1
2
3
4
5
6
#重启生效
systemctl restart openvpn@server.service
#使能服务
systemctl enable openvpn@server.service
#ssh下载文件
scp root@112.74.51.136:/root/client_xuan_ubuntu.ovpn ./

openvpn client 安装与配置

1.安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
yum update #更新
yum install vim #安装vim
yum install epel-release #添加epel源
yum clean all # 可选
yum update # 可选
yum makecache # 可选
yum install openvpn iptables-services #安装openvpn
scp root@112.74.51.136:~/client_vm.ovpn /etc/openvpn/client/ #下载客户端配置
#注释掉客户端的vim /etc/openvpn/client/client_vm.ovpn
#setenv opt block-outside-dns
#-----------------------废弃------------------------------------------------
openvpn --daemon --cd /etc/openvpn/client --config client_vm.ovpn --log-append /etc/openvpn/openvpn.log #启动
tail -100f /etc/openvpn/openvpn.log #查看日志
ps -ef | grep openvpn #查看openvpn进程
kill <pid> #杀死进程
#---------------------废弃结束------------------------------------------------------
#openvpn-client启动服务,反斜杠转义字符,实际名称是openvpn-client@.service
vim /lib/systemd/system/openvpn-client\@.service
#修改
ExecStart=/usr/sbin/openvpn --suppress-timestamps --nobind --config %i.conf
#为
ExecStart=/usr/sbin/openvpn --daemon --config %i.ovpn --log-append /etc/openvpn/openvpn.log
#防止已经启动,@符号后面等效与%i,所以这里为客户端配置的名字
systemctl restart openvpn-client@client_vm
#开机启动
systemctl enable openvpn-client@client_vm

openvpn 服务端的局域网远程访问

准备工作,安装iptables

It is possible to go back to a more classic iptables setup. First, stop and mask the firewalld service:

1
2
systemctl stop firewalld
systemctl mask firewalld

Then, install the iptables-services package:

1
yum install iptables-services

Enable the service at boot-time:

1
systemctl enable iptables

Managing the service

1
systemctl [stop|start|restart] iptables

Saving your firewall rules can be done as follows:

1
service iptables save

添加路由

1
2
iptables -t nat -A POSTROUTING -s 10.14.208.0/24 -j SNAT --to-source  192.168.1.230
service iptables save

vim /etc/openvpn/server.conf 添加

1
push "route 192.168.1.0 255.255.255.0"

腾讯云openvpn服务器所在内网供openvpn客户端访问

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 10.34.0.0为openvpn网段
sudo iptables -t nat -A POSTROUTING -s 10.34.0.0/24 -o eth0 -j MASQUERADE
#查看规则
sudo iptables -nL -t nat
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match src-type LOCAL
MASQUERADE all -- 172.17.0.0/16 0.0.0.0/0
MASQUERADE all -- 172.18.0.0/16 0.0.0.0/0
MASQUERADE tcp -- 172.18.0.11 172.18.0.11 tcp dpt:3306
MASQUERADE all -- 10.34.0.0 0.0.0.0/0
#这句是新加的
MASQUERADE all -- 10.34.0.0/24 0.0.0.0/0
#还需要检查是否开启ipv4转发
vim /etc/sysctl.conf
>net.ipv4.ip_forward = 1
sysctl -p

子网访问总结

服务端子网(服务端是网关)

服务端子网(服务端不是网关)

客户端子网(客户端是网关)

客户端子网(客户端不是网关)

不是网关统一需要在客户端或服务端设置转发

1
2
3
4
5
6
# 10.34.0.0为openvpn网段
sudo iptables -t nat -A POSTROUTING -s 10.34.0.0/24 -o eth0 -j MASQUERADE
#还需要检查是否开启ipv4转发
vim /etc/sysctl.conf
>net.ipv4.ip_forward = 1
sysctl -p

注意事项

iptables不需要启动,也可以做路由转发

openvpn tun模式下客户端与内网机器通信

iptables规则的查看和清除

iptables 添加,删除,查看,修改

How can i use iptables on centos 7?

使用openvpn实现访问远程网络

参考

官网

脚本github官网Nyr/openvpn-install

openvpn的一个一键安装脚本“openvpn-install”让openvpn重放光彩,又可用openvpn翻墙了

How to Configure OpenVPN Server on CentOS 7.3

使用 OpenVPN 互联多地机房及Dokcer跨主机/机房通讯

扩大OpenVPN使用范围,包含服务器或客户端子网中的其他计算机

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
docker ps [-a] #查看运行容器状态,-a 查看所有容器
docker stop <容器id> #停止运行容器
docker rm <容器id> [-f] #删除容器,-f 删除运行的
docker rmi <镜像id> #删除镜像
docker exec -it <容器id> </bin/bash或者sh> 进入容器(bash或者sh)
# -p端口映射 -v挂载 -d后台,--name容器名字,--rm和-d不能通用,--rm启动停止后删除
docker run -p 80:80 -v /data:/data --name mynginx -d nginx:latest
# 运行容器并进去,一次性
docker run -it --rm ubuntu:18.04 /bin/bash
exit #退出容器
#添加标签
docker node update --label-add <KEY>=<VALUE> <NODE ID|NAME>
#查看节点详细信息
docker node inspect <NODE ID|NAME>
#查看网络
ifconfig
#推镜像到仓库
docker push exxk/gitlab_cloud:tagname
#拉取镜像
docker pull exxk/gitlab_cloud:tagname
#远程连接
sudo docker -H tcp://ip:port <docker名令>
#eg查看远程的又什么镜像
sudo docker -H tcp://10.14.0.4:2375 images

docker安装

1
2
3
4
5
6
7
8
9
10
11
12
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#或者阿里镜像
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum makecache fast
sudo yum install docker-ce
systemctl start docker.service
# 开机启动
systemctl enable docker
sudo docker run hello-world
sudo docker version
yum list docker-ce --showduplicates | sort -r

daemon设置

修改/etc/docker/daemon.json文件

1
2
3
4
5
vim /etc/docker/daemon.json
#改完后重新加载配置
sudo systemctl daemon-reload
#重启docker
sudo systemctl restart docker
docker加速阿里云加速地址
1
2
3
4
5
6
7
#等效于添加daemon.json文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://*****.mirror.aliyuncs.com"],
"hosts":["unix:///var/run/docker.sock"]
}
EOF
远程访问docker
方法1

在daemo.json添加"hosts":["tcp://0.0.0.0:2375","unix:///var/run/docker.sock"]

hosts 分tcp,uninx,fd三种模式,第一中时tcp指定网络连接方式,0.0.0.0:2375是指所有网络都可以连接,不安全,因此一般会加上stl证书形式,这里我用的局域网,所有没有加证书,指定局域网设置主机所属ip例如网卡2的ip为10.14.0.2,因此设置为10.14.0.2,只有10.14.0这个局域网可以访问,第二种uninx时指本地可以自由连接docker,第三种,理解不是很清楚,不发表见解

方法2(方法1能采用尽量用1)

直接修改服务的启动文件,添加-H参数指定

1
2
3
4
5
6
#解决portainner添加节点失败centos7.2 修改 /lib/systemd/system/docker.service
#ExecStart=/usr/bin/dockerd
#修改为
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
systemctl daemon-reload
systemctl restart docker.service
参考:docker 远程连接

docker-compose安装

法一(当前采用)
1
2
3
4
#pip安装方式
pip install docker-compose
#pip卸载方式
pip uninstall docker-compose
法二

安装docker-compose(以容器类型安装)

法三
1
2
3
4
5
6
7
sudo -i
#安装脚本,替换为最新的版本 ,这一步会失败,执行sudo -i
curl -L https://github.com/docker/compose/releases/download/1.15.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
#添加执行权限
chmod +x /usr/local/bin/docker-compose
#测试(失败,需要执行./docker-compose --version 没全局)
docker-compose --version

基本常用命令

1
2
3
4
5
docker-compose up -d
docker-compose down
docker-compose stop
docker-compose rm
docker-compose logs

docker-machine

linux

1
2
3
curl -L https://github.com/docker/machine/releases/download/v0.12.2/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine &&
chmod +x /tmp/docker-machine &&
sudo cp /tmp/docker-machine /usr/local/bin/docker-machine

windos git bash

1
2
3
if [[ ! -d "$HOME/bin" ]]; then mkdir -p "$HOME/bin"; fi && \
curl -L https://github.com/docker/machine/releases/download/v0.12.2/docker-machine-Windows-x86_64.exe > "$HOME/bin/docker-machine.exe" && \
chmod +x "$HOME/bin/docker-machine.exe"

问题以及解决方法

  1. docker info 出现如下警告

    奇葩现象,在mongo里面添加了用户之后,springboot连接数据库就连接不是,但是外面能连接上,然后docker info会出现下面的错误,然后执行下面 的解决方案就可以连接上了

    可能(阿里云概率)会导致一个stack服务无法通过宿主机内网ip访问第二个stack服务

    1
    2
    WARNING: bridge-nf-call-iptables is disabled
    WARNING: bridge-nf-call-ip6tables is disabled

    解决:

    方式一

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 方式一
    echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
    echo 1 > /proc/sys/net/bridge/bridge-nf-call-ip6tables

    # 方式二
    vi /etc/sysctl.conf
    # 添加以下内容
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    #最后执行
    sysctl -p
  2. 问题:构建镜像不能用-减号命名镜像的名字,使用docker-statck 部署找不到镜像

  3. 问题: 执行sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

    1
    2
    3
    4
    5
    [root@lfadmin ~]# sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    已加载插件:fastestmirror, langpacks
    adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
    grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
    Could not fetch/save url https://download.docker.com/linux/centos/docker-ce.repo to file /etc/yum.repos.d/docker-ce.repo: [Errno 12] Timeout on https://download.docker.com/linux/centos/docker-ce.repo: (28, 'Resolving timed out after 30541 milliseconds')

    解决:

    vim /etc/yum.repos.d/docker-ce.repo

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    [docker-ce-stable]
    name=Docker CE Stable - $basearch
    baseurl=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/$basearch/stable
    enabled=1
    gpgcheck=1
    gpgkey=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/gpg

    [docker-ce-stable-debuginfo]
    name=Docker CE Stable - Debuginfo $basearch
    baseurl=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/debug-$basearch/stable
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/gpg

    [docker-ce-stable-source]
    name=Docker CE Stable - Sources
    baseurl=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/source/stable
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/gpg

    [docker-ce-edge]
    name=Docker CE Edge - $basearch
    baseurl=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/$basearch/edge
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/gpg

    [docker-ce-edge-debuginfo]
    name=Docker CE Edge - Debuginfo $basearch
    baseurl=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/debug-$basearch/edge
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/gpg

    [docker-ce-edge-source]
    name=Docker CE Edge - Sources
    baseurl=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/source/edge
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/gpg

    [docker-ce-test]
    name=Docker CE Test - $basearch
    baseurl=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/$basearch/test
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/gpg

    [docker-ce-test-debuginfo]
    name=Docker CE Test - Debuginfo $basearch
    baseurl=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/debug-$basearch/test
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/gpg

    [docker-ce-test-source]
    name=Docker CE Test - Sources
    baseurl=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/source/test
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/gpg

    [docker-ce-nightly]
    name=Docker CE Nightly - $basearch
    baseurl=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/$basearch/nightly
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/gpg

    [docker-ce-nightly-debuginfo]
    name=Docker CE Nightly - Debuginfo $basearch
    baseurl=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/debug-$basearch/nightly
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/gpg

    [docker-ce-nightly-source]
    name=Docker CE Nightly - Sources
    baseurl=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/source/nightly
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/gpg
  4. 问题:sudo yum install docker-ce提示如下

    1
    Delta RPMs disabled because /usr/bin/applydeltarpm not installed.

    解决:

    1
    2
    yum provides '*/applydeltarpm'
    yum install deltarpm
  5. 问题docker structure needs cleaning

    解决:docker system prune -a

  6. 问题设置daemo.json中hosts远程tcp连接时,不能启动

    解决:vim /lib/systemd/system/docker.service

    1
    2
    3
    ExecStart=/usr/bin/dockerd -H fd://
    #修改为
    ExecStart=/usr/bin/dockerd

    然后重载配置systemctl daemon-reload

    重启docker服务systemctl restart docker.service

    原因:冲突和hosts

Docker-machine

安装 Docker Toolbox

官网:docker/machine

1
2
3
4
5
6
7
8
9
10
11
#创建manager docker主机
docker-machine create -d hyperv manager
#查看主机
docker-machine ls
#删除主机
docker-machine rm -f manager
#进入docker主机
docker-machine ssh manager
#退出主机
exit
docker swarm join --token SWMTKN-1-2483wscrxzqlzn1ulk8o3izurjqdzcrg38uihaontlll788mq5-d55xj8yaycb2392q5kv02v4kq 192.168.100.214:2377

注意

如果使用power-shell,记得用管理员权限