目录
启动Docker
编辑
建立 Docker 用户
编辑
测试 Docker 是否正常工作
卸载Docker
Docker镜像加速器配置
配置镜像
检查加速器是否生效
如何在Linux中的.json文件下保存并退出
如果我是使用vi操作进来的,我该如何保存并退出呢?
如何在Linux系统下删除deamon.json文件
检查加速器是否生效
云服务商
Docker远程访问
开启访问
Docker远程访问是为了干什么?
安全认证
配置Docker支持TLS
客户端访问
启动Docker
# 启动Docker命令systemctl start docker# 查看启动结果systemctl status docker
建立 Docker 用户
# 创建一个docker用户useradd mydocker# 将用户加入到docker组usermod -aG docker mydocker# 给用户设置密码passwd mydocker# 查看是否正确修改组成功id mydocker# 看到类似的输出 uid=1001(mydocker) gid=1001(mydocker) 组=1001(mydocker),993(docker)
测试 Docker 是否正常工作
# 切换到mydocker用户su mydocker# 执行测试命令docker run hello-world
若能正常输出以上信息,则说明安装成功并且说明docker能够正常运行。
默认配置下,如果在 CentOS 使用 Docker CE 看到下面的这些警告信息:
WARNING: bridge-nf-call-iptables is disabled WARNING: bridge-nf-call-ip6tables is disabled
请添加内核配置参数以启用这些功能,需要使用root用户
# 切换回管理员sudo -s# 启动功能命令tee -a /etc/sysctl.conf < -EOFnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1EOF# 重新加载配置sysctl -p
卸载Docker
如果你想要卸载Docker引擎,可以执行下面的命令
yum remove docker-ce \docker-ce-cli \containerd.io \docker-compose-plugin
主机上的镜像、容器、卷或自定义配置文件不会自动删除。要删除所有镜像、容器和卷,执行下面的命令
rm -rf /var/lib/dockerrm -rf /var/lib/containerd
您必须手动删除任何已编辑的配置文件。
Docker镜像加速器配置
国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。国内很多云服务商都提供 了国内加速器服务,例如: 网易云加速器 https: hub–mirror.c.163.com 百度云加速器 https: mirror.baidubce.com DAOCloud https: w .daocloud.io/mirror 阿里云加速器(需登录账号获取)
配置镜像
在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件
)
#如果文件不存在 新建文件touch daemon.json# 编辑文件 vi daemon.json 添加{}下面的内容{"registry-mirrors": ["https: hub-mirror.c.163.com","https: mirror.baidubce.com","http: f1361db2.m.daocloud.io","https: registry.docker-cn.com"]}
下面错了,一定要带大括号!一定要带大括号!一定要带大括号!
注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。 重启服务
# 重新加载配置systemctl daemon-reload# 重启docker服务systemctl restart docker# 查看docker状态systemctl status docker
检查加速器是否生效
执行 docker info ,如果从结果中看到了如下内容,说明配置成功。
如何在Linux中的.json文件下保存并退出
在Linux中保存并退出.json文件的步骤如下:
打开终端并进入包含.json文件的目录。
使用文本编辑器打开.json文件。例如,使用nano编辑器:
nano file.json
进行必要的更改。
按下
Ctrl + O
以保存文件。按下
Ctrl + X
退出编辑器。
现在,您的更改已经保存在.json文件中。
如果我是使用vi操作进来的,我该如何保存并退出呢?
如果您正在使用vi
编辑器进行编辑,可以按下Esc键退出编辑模式,并按下:wq
命令保存并退出文件。具体步骤如下:
- 按下i键进入编辑模式,开始编辑文件。
- 编辑完毕后,按下Esc键退出编辑模式。
- 输入
:wq
命令保存并退出文件。注意,冒号是必须的。 - 按下回车键,文件将被保存并退出编辑器。
如果您只是想退出编辑器而不保存更改,可以按下Esc键进入命令模式,并按下:q!
命令强制退出不保存更改。
如何在Linux系统下删除deamon.json文件
您可以使用rm
命令删除deamon.json
文件。打开终端并输入以下命令:
sudo rm /etc/docker/daemon.json
请注意,使用sudo
命令需要管理员权限,以便在系统中执行此操作。
# 重新加载配置systemctl daemon-reload# 重启docker服务systemctl restart docker# 查看docker状态systemctl status docker
检查加速器是否生效
执行 docker info ,如果从结果中看到了如下内容,说明配置成功。
云服务商
某些云服务商提供了仅供内部访问的镜像服务,当您的 Docker 运行在云平台时可以选择它们。 Azure 中国镜像 https: dockerhub.azk8s.cn 腾讯云 https: mirror.ccs.tencentyun.com
Docker远程访问
开启访问
参考链接: https://docs.docker.com/config/daemon/remote-access/ 使用下面命令编辑 docker 服务启动文件
systemctl edit docker.service
添加或修改以下行,替换为您自己的值, ip 地址修改成功你自己服务器的 ip 地址(我当前监听的是我自己的虚拟机IP)
[Service]ExecStart=ExecStart=/usr/bin/dockerd -H fd: -H tcp: 192.168.220.128:2375 containerd=/run/containerd/containerd.sock
然后保存文件,执行下面命令重新加载 systemctl 配置。
Docker远程访问是为了干什么?
Docker远程访问是为了让用户可以从本地或其他机器远程连接到运行Docker的服务器,以便管理和操作Docker容器和镜像。通过远程访问,用户可以通过网络访问Docker API,从而执行各种操作,如启动、停止、重启容器,上传或下载镜像等。这样可以方便地在多个机器之间共享容器和镜像,同时也提高了Docker的灵活性和可移植性。
然后保存文件,执行下面命令重新加载 systemctl 配置。
systemctl daemon-reload
重启Docker容器
systemctl restart docker
通过查看 netstat 的输出以确认 dockerd 正在侦听配置的端口,以检查更改是否已生效。
netstat -lntp | grep dockerd
开放防火墙端口
# 开放端口firewall-cmd --add-port=2375/tcp --permanent# 重新加载防火墙firewall-cmd --reload
安全认证
由于开放了端口没有做任何安全保护,会引起安全漏洞,被人入侵、挖矿、 CPU 飙升这些情况都有发生。 为解决这个问题:我们只要使用安全传输层协议(TLS)进行传输并使用 CA 认证即可。 参考链接: https://docs.docker.com/engine/security/protect-access/ 制作证书和秘钥
mkdir /home/docker-ca && cd /home/docker-ca
创建CA证书私钥,期间需要输入两次用户名和密码,生成文件为ca–key.pem
openssl genrsa -aes256 -out ca-key.pem 4096
密码根据自己情况输入就行,比如我输入都是 root 。 根据私钥创建 CA 证书,期间需要输入上一步设置的私钥密码,生成文件为 ca.pem
openssl req -new -x509 -days 365 -key ca-key.pem \-sha256 -subj "/CN=*" -out ca.pem
创建服务端私钥,生成文件为server–key.pem
openssl genrsa -out server-key.pem 4096
创建服务端证书签名请求文件,用于CA证书给服务端证书签名,生成文件server.csr
openssl req -subj "/CN=*" -sha256 -new \-key server-key.pem -out server.csr
创建CA证书签名好的服务端证书,期间需要输入CA证书私钥密码,生成文件为server–cert.pem
openssl x509 -req -days 365 -sha256 -in server.csr \-CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem
创建客户端私钥,生成文件为key.pem
openssl genrsa -out key.pem 4096
创建客户端证书签名请求文件,用于CA证书给客户证书签名,生成文件client.csr
openssl req -subj "/CN=client" -new -key key.pem -out client.csr
为了让秘钥适合客户端认证,创建一个扩展配置文件extfile–client.cnf
echo extendedKeyUsage = clientAuth > extfile-client.cnf
创建CA证书签名好的客户端证书,期间需要输入CA证书私钥密码,生成文件为cert.pem
openssl x509 -req -days 365 -sha256 -in client.csr \-CA ca.pem -CAkey ca-key.pem -CAcreateserial \-out cert.pem -extfile extfile-client.cnf
删除创建过程中多余的文件
rm -rf ca.srl server.csr client.csr extfile-client.cnf
最终生成文件如下,有了它们我们就可以进行基于TLS的安全访问了
ca.pem CA 证书 ca-key.pem CA 证书私钥 server-cert.pem 服务端证书 server-key.pem 服务端证书私钥 cert.pem 客户端证书 key.pem 客户端证书私钥
配置Docker支持TLS
编辑docker服务启动文件
systemctl edit docker.service
在原来的基础上往后添加启动参数
[Service]ExecStart=ExecStart=/usr/bin/dockerd -H fd:// -H tcp://192.168.83.130:2375 --containerd=/run/containerd/containerd.sock --tlsverify --tlscacert=/home/docker-ca/ca.pem --tlscert=/home/docker-ca/server-cert.pem --tlskey=/home/docker-ca/server-key.pem
然后保存文件,执行下面命令重新加载systemctl配置。
systemctl daemon-reload
重启Docker容器
systemctl restart docker
客户端访问
下载证书到本地磁盘,主要下载下面三个文件 ca.pem CA证书 cert.pem 客户端证书 key.pem 客户端证书私钥 比如我下载到我的本地电脑的D:\Workspace\docker–ca这个位置。
记住这个位置,后面打包部署的时候需要指定改目录的,具体使用我们在打包部署的时候会用到。
scp root@192.168.83.130:/home/docker-ca/ca.pem root@192.168.83.130:/home/docker-ca/cert.pem root@192.168.83.130:/home/docker-ca/key.pem D:\Workspace\docker-ca
哎呦,我滴个乖乖,真是快没有把我累死
就离谱,之前删除vmware的时候没有删干净,可倒好,我打开控制面板,网络连接,虚拟机的适配器都没有了,太离谱!
之后下那个ccleaner,找来找去,看了一篇大佬的博客才把问题解决
解决本机网络适配器中没有虚拟网卡VMnet1、VMnet8_如何在物理机中看到虚拟网络1和虚拟网络8_BK_小小关的博客-CSDN博客
终于是把xftp给链接上了
可算是把这三位爷都弄进去了