docker学习笔记(二)

目录

启动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 < -EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# 重新加载配置
sysctl -p

卸载Docker

如果你想要卸载Docker引擎,可以执行下面的命令

yum remove docker-ce \
docker-ce-cli \
containerd.io \
docker-compose-plugin
主机上的镜像、容器、卷或自定义配置文件不会自动删除。要删除所有镜像、容器和卷,执行下面的命令
rm -rf /var/lib/docker
rm -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文件的步骤如下:

  1. 打开终端并进入包含.json文件的目录。

  2. 使用文本编辑器打开.json文件。例如,使用nano编辑器:

nano file.json
  1. 进行必要的更改。

  2. 按下 Ctrl + O 以保存文件。

  3. 按下 Ctrl + X 退出编辑器。

现在,您的更改已经保存在.json文件中。

如果我是使用vi操作进来的,我该如何保存并退出呢?

如果您正在使用vi编辑器进行编辑,可以按下Esc键退出编辑模式,并按下:wq命令保存并退出文件。具体步骤如下:

  1. 按下i键进入编辑模式,开始编辑文件。
  2. 编辑完毕后,按下Esc键退出编辑模式。
  3. 输入:wq命令保存并退出文件。注意,冒号是必须的。
  4. 按下回车键,文件将被保存并退出编辑器。

如果您只是想退出编辑器而不保存更改,可以按下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给链接上了


 

可算是把这三位爷都弄进去了

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当谈到Docker学习笔记时,我可以为你提供一些基本的指导和主题,以帮助你开始学习Docker。以下是一些可能涵盖的主题: 1. Docker简介:了解Docker的基本概念、优势以及它如何与虚拟化技术不同。 2. Docker安装:学习如何在不同的操作系统上安装Docker,并熟悉Docker引擎的组成部分。 3. Docker镜像:了解Docker镜像的概念,以及如何通过构建、拉取和推送镜像来管理和共享容器环境。 4. Docker容器:学习如何创建、启动、停止和删除容器,并了解容器和主机之间的交互方式。 5. Docker网络:探索Docker网络模式,包括桥接网络、主机网络和覆盖网络,并理解容器之间以及容器与主机之间的通信方式。 6. Docker存储:了解Docker存储技术,包括数据卷和绑定挂载,并学习如何在容器中持久化数据。 7. Docker Compose:介绍Docker Compose工具,它可以用于定义和运行多个容器的应用程序。 8. Docker Swarm:探索Docker Swarm,它是Docker官方的容器编排和集群管理工具,于在多个主机上部署和管理容器应用。 9. Docker和持续集成/持续部署(CI/CD):了解如何将Docker与CI/CD工具(如Jenkins、GitLab CI等)集成,以简化应用程序的构建和部署过程。 这只是一些可能的主题,你可以根据自己的需求和兴趣来选择学习内容。希望这些指导可以帮助你开始学习Docker!如果你有任何特定的问题,我很乐意回答。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值