[docker-idea-一键部署]
上一篇已经把docker安装好了,这一篇进阶,使用一下吧。
docker的使用有两种方式,一种是ca证书认证的,一种是没有认证的,没有认证的十分的不安全,黑客可以知道你的端口,进行攻击,获取你的镜像,搞你的服务。这种方式比较简单,就不说了,直接晋级ca认证的吧。
- ca认证的docker一键部署。
1.1 ca认证就是服务端要生成相应的证书,客户端要想操作就必须拿着证书才行,黑客在牛批也不会知道你的证书在哪里。也拿服务没办法了吧。 - 生成ca证书。
2.1 连上服务器,在指定文件夹下操作,尽量跟着来,争取一遍成功。
2.2 首先生成存放ca证书的文件夹
2.3 需要输入密码,自由指定,两次输入保持一致并记住,下边的步骤将会用到,暂且给“666666”。mkdir -p /usr/local/ca cd /usr/local/ca
2.4 根据提示分别输入国家,省份,城市,组织,等一系列信息(可以随便输,无所谓的其实),暂且都给“66”。openssl genrsa -aes256 -out ca-key.pem
2.5 生成server-key.pem,输入命令回车即可。openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
2.6 把下面的$Host换成你自己服务器外网的IP或者域名:比如:openssl genrsa -out server-key.pem
openssl req -subj “/CN=192.168.1.0” -sha256…
或:
openssl req -subj “/CN=www.baidu.com” -sha256…(有域名的写域名,该域名DNS解析后指向你的服务器)
2.7 配置白名单,也就是接下来要允许哪些ip可以连接到服务器的docker,因为已经是ssl连接,所以我推荐配置0.0.0.0,也就是所有Ip都可以连接(但只有拥有证书的才可以连接成功),这样配置好之后公司其他人也可以使用.如果你不想这样,那你可以配置Ip,用逗号分隔开.下面的$Host依旧是你服务器外网的IP或者域名,请自行替换.(这里如果你使用的是服务器Ip的话,请将前面的DNS换成IP,否则配下来连接还是不会成功,如果你使用的是服务器域名,那么就用DNS就可以了)比如:openssl req -subj "/CN=$HOST" -sha256 -new -key server-key.pem -out server.csr
echo subjectAltName = DNS:www.baidu.con,IP:0.0.0.0 >> extfile.cnf
或:
echo subjectAltName = IP:191.3.15.44,IP:0.0.0.0 >> extfile.cnf
2.8 执行命令,将Docker守护程序密钥的扩展使用属性设置为仅用于服务器身份验证echo subjectAltName = DNS:$HOST,IP:0.0.0.0 >> extfile.cnf
2.9 执行命令,然后输入前面设置过的密码“666666”,用以生成ca-key。echo extendedKeyUsage = serverAuth >> extfile.cnf
openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem \- CAcreateserial -out server-cert.pem -extfile extfile.cnf
- 生成客户端所需的key.pem,到时候把生成好的几个公钥私钥拷出去给客户端使用。
3.1 执行命令openssl genrsa -out key.pem 4096
3.2 继续执行命令openssl req -subj '/CN=client' -new -key key.pem -out client.csr
3.3 生成cert.pem,需要输入前面设置的密码"666666"echo extendedKeyUsage = clientAuth >> extfile.cnf
3.4 删除两个无用文件。openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem \-CAcreateserial -out cert.pem -extfile extfile.cnf
3.5 修改权限rm -v client.csr server.csr
3.6 将证书放到 /etc/docker/下chmod -v 0400 ca-key.pem key.pem server-key.pem chmod -v 0444 ca.pem server-cert.pem cert.pem
3.7 修改docker配置 (这一步很关键,如果修改后启动报错提示如下,Job for docker.service failed because the control process exited with error code. See “systemctl status docker.service” and “journalctl -xe” for details.cp server-*.pem /etc/docker/ cp ca.pem /etc/docker/
);
3.8 使用命令 systemctl status docker.servicevi /lib/systemd/system/docker.service 将ExecStart=/usr/bin/dockerd 替换为: ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock
● docker.service - Docker Application Container Engine
Loaded: loaded (/etc/systemd/system/docker.service; disabled; vendor preset: disabled)
Active: failed (Result: start-limit) since Fri 2019-08-16 15:21:53 CST; 7s ago
Docs: https://docs.docker.com
Process: 14532 ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem -H https://0.0.0.0:2376 -H unix://var/run/docker.sock (code=exited, status=1/FAILURE)
Main PID: 14532 (code=exited, status=1/FAILURE)
则修改/etc/systemd/system/docker.service配置文件,内容同上。
3.9 再次启动systemctl daemon-reload systemctl restart docker
- 开放2376端口
4.1 重启docker/sbin/iptables -I INPUT -p tcp --dport 2376 -j ACCEPT iptables-save
4.2 所有证书都已经生成了,ca文件夹下这个样子。将文件下载到本地的一个文件夹,备用。service docker restart
4.3 至此,开始配合IDE使用了,打开ide安装docker插件。并重启IDe
点击运行吧
看到项目已经启动了。
访问接口:
查看日志
docker logs -f -t --since=“2018-10-10” --tail=10 镜像名称(项目名称)例如:
docker logs -f -t --since=“2018-10-10” --tail=10 source-v2
–since : 此参数指定了输出日志开始日期,即只输出指定日期之后的日志。
-f : 查看实时日志
-t : 查看日志产生的日期
-tail=10 : 查看最后的10条日志。
edu_web_1 : 容器名称
打完收工::::