docker安装篇,第二篇 在Ubuntu18.04上开启RESTful API接口,HTTP与HTTPS接口访问

本教程参考以下docker官方文档,如在使用本教程过程中存在问题,可翻阅原文官方文档:

https://docs.docker.com/install/linux/linux-postinstall/#next-steps

https://docs.docker.com/engine/api/v1.37/#

https://docs.docker.com/engine/security/https/

本教程安装环境为:

系统:Ubuntu18.04 x86-64

docker版本:

Version: 18.06.0-ce

API version: 1.38

Go version: go1.10.3


第一章 基础配置设置

第一步:创建配置文件存储目录

sudo mkdir -p /etc/systemd/system/docker.service.d

第二步:创建配置文件,并增加配置信息

sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf

HTTP与HTTPS最大的不同在于HTTPS需要进行证书加载,其体现在于以下配置文件中:

HTTP配置文件

[Service]
ExecStart=
#HTTP使用以下命令
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375

HTTPS配置文件

sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf

[Service]
ExecStart=
#HTTP使用以下命令
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375

第三步:刷新配置使其生效

sudo systemctl daemon-reload
sudo systemctl restart docker.service
sudo netstat -lntp | grep dockerd

注:如果这里启动了防火墙,还需进行设置防火墙放开2375端口的访问


第四步:测试客户机或管理系统进行测试接口是否正常

打开浏览器访问:http://宿主机IP:2375/info 确认是否和docker部署机docker info返回值一致

测试其他接口是否正常:http://宿主机IP:2375/networks 对应命令参考:docker network ls

备注:更多命令请参考官方文档https://docs.docker.com/engine/api/v1.37/


第二章 HTTPS自创建证书并使用


第一步:创建私钥

$ openssl genrsa -aes256 -out ca-key.pem 4096


Generating RSA private key, 4096 bit long modulus
....................................................................++
........++
e is 65537 (0x10001)
Enter pass phrase for ca-key.pem:(输入自己要设置的密码,并记住该密码,下面要用)
Verifying - Enter pass phrase for ca-key.pem:(确认设置的密码)

第二步:基于上一步的私钥进行创建公钥

$ openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem


Enter pass phrase for ca-key.pem:(输入上一步设置的密码)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN(输入国家的名字)
State or Province Name (full name) [Some-State]:shandong(输入省份的名字)
Locality Name (eg, city) []:jinan(输入城市的名字)
Organization Name (eg, company) [Internet Widgits Pty Ltd]:cnHuaShao(输入机构、公司的名字,不输入直接回车)
Organizational Unit Name (eg, section) []:cnHuaShao(输入单位、部门名字,不输入直接回车)
Common Name (e.g. server FQDN or YOUR name) []:zhangyc(输入主机名,这里输入的是$HOST,需要保证其HOSTS文件中已经配置了该名称)
Email Address []:lz2392504@gmail.com(输入邮箱地址)

第三步:创建服务器密钥和证书签名请求(CSR)。

$ openssl genrsa -out server-key.pem 4096

Generating RSA private key, 4096 bit long modulus
.....................................................................++
.................................................................................................++
e is 65537 (0x10001)


$ openssl req -subj "/CN=zhangyc" -sha256 -new -key server-key.pem -out server.csr

第四步:基于上面创建的CA证书进行签署公钥。

$ echo subjectAltName = DNS:zhangyc,IP:192.168.10.10,IP:127.0.0.1 >> extfile.cnf

第五步:将Docker的使用属性设置为仅用于服务器身份验证:

$ 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

Signature ok
subject=/CN=zhangyc(输入host名)
Getting CA Private Key
Enter pass phrase for ca-key.pem:(输入第一步时设置的密码)

未完待续

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏菩提树下的杨过

IIS7.5中神秘的ApplicationPoolIdentity

IIS7.5中(仅win7,win2008 SP2,win2008 R2支持),应用程序池的运行帐号,除了指定为LocalService,LocalSystem...

21810
来自专栏技术之路

关闭Outlook时最小化 dll

用Outlook时最让我感觉不爽的就是不小心点了关闭按钮就会把Outlook关闭。 我们用软件的时候都希望软件有一个关闭时最小化功能,更希望Outlook也有这...

1985
来自专栏电光石火

tengine+tomcat+php安装

在安装tengine之前,确认centos环境中有无gcc、pcre、openssl,如果没有按以下命令进行安装

2317
来自专栏FreeBuf

linux下利用一次性口令实现安全管理

作者 黑狐 [译自vpsboard] Linux服务器一直就是以稳定、高效、安全而著称。安全是比较重要的一个环节,这关系到商业机密,更关系到企业的存亡。本文...

2487
来自专栏我的小碗汤

浅谈json web token及应用

Json Web Token (JWT),是一个非常轻巧的规范,这个规范允许在网络应用环境间客户端和服务器间较安全的传递信息。该token被设计为紧凑且安全的,...

1153
来自专栏极客生活

Mac下iTerm2 免密码登录

iTerm2 本身并没有提供这个功能,不过可以借助第三方工具sshpass来实现。

973
来自专栏电光石火

tengine+tomcat+php安装

在安装tengine之前,确认centos环境中有无gcc、pcre、openssl,如果没有按以下命令进行安装 #yum install gcc #yu...

21810
来自专栏闻道于事

前后端分离之JWT用户认证(转)

在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP协定是不储存状态的(stateless),这意味着当我们透过帐号密码验证一个使用者时,当下一个requ...

2061
来自专栏维C果糖

详述 iTerm2 配色及免密登录 SSH 的方法

博主说:iTerm2 是一个 Mac 版的类似于 Xshell 的终端工具,虽然很多同学说其功能并没有 Xshell 那么强大,但它仍然能够满足我们的大部分需...

7636
来自专栏瞎说开发那些事

linux下利用一次性口令实现 安全管理

2076

扫码关注云+社区

领取腾讯云代金券