记录docker 远程访问(C/S实验)

环境信息

  1. 运行环境是centos 7。我用的是虚拟机进行的模拟实验,ip地址分别是:192.168.1.4(客户端) 192.168.1.5(service端)。
  2. docker 版本信息如下:
    记录docker 远程访问(C/S实验)_第1张图片

服务端配置(service端的 192.168.1.5)

1. 配置文件

       我在centos7 下没有找到/etc/default/docker docker的配置文件。所以查找了一些资料说,也不在这路径下配置,也不好直接修改docker的原配置文件。于是乎,有人在直接手工建立配置文件吧(直接仿造的别人的目录下)。
       配置文件路径如下(你可以从参考的url中参考)(创建):

[root@anonymous docker.service.d]# pwd
/etc/systemd/system/docker.service.d
[root@anonymous docker.service.d]# ll
总用量 4
-rw-r--r--. 1 root root 132 11月 11 21:27 docker.conf
[root@anonymous docker.service.d]#

        编辑docker.conf文件(文件内容如下):

[root@anonymous docker.service.d]# vim docker.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd  -H tcp://0.0.0.0:2375 -H  unix://var/run/docker.sock --label name=docker_server

        强调一下,这里是需要两个"ExecStart="这个的。具体原因我也不知道。但是下面那一行的作用是:docker的启动配置命令。意思是指:

       /usr/bin/dockerd 表示指向该目录下的它。【注意一下:这句话换成:/usr/bin/docker daemon 是在启动的时候失败的。你可以去docker的默认配置文件(/usr/lib/systemd/system/docker.service)中进行查看"ExecStart="的配置】
        -H tcp://0.0.0.0:2375 表示开启端口2375 通过远程进行访问
        unix://var/run/docker.sock 表示docker可以进行本地访问(如果只配上面的话,本机器的docker ps/…各种命令不生效了。) 【我试了一下,在该命令的前面不需要再次配置 -H 了。否则会报错:错误信息是说:启动项中只需要一个-H 就行】
        --label name=docker_server 表示标签名叫做docker_server

        配置完成之后,那么应该将docker的守护进行重启,命令如下:

[root@anonymous docker.service.d]# systemctl daemon-reload
[root@anonymous docker.service.d]# systemctl restart docker

        如果报错了,你得用systemctl status docker 进行排查问题。


2. 查看docker 相关状态信息

        这时我们查看一下docker 守护进程的状态信息(就是上面一句话,挺多信息可观察出的)

[root@anonymous system]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/docker.service.d
           └─docker.conf
   Active: active (running) since 日 2018-11-11 21:27:51 CST; 57min ago
     Docs: https://docs.docker.com
 Main PID: 22842 (dockerd)
    Tasks: 18
   Memory: 45.6M
   CGroup: /system.slice/docker.service
           ├─22842 /usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock --label name=docker_server
           └─22854 docker-containerd --config /var/run/docker/containerd/containerd.toml

        一句话一句话的个人理解如下:
        1. 下面这句话表达的意思是:已经从/usr/lib/systemd/system/docker.service 默认的docker 配置文件加载成功。(vendor preset: disabled不是很懂干嘛用的)

 Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)

        2. 下面这一句话表示的是,自己的整的配置文档已经生效了(已被加载进来)

  Drop-In: /etc/systemd/system/docker.service.d
           └─docker.conf

        3. 下面这部分表示的是docker的主进程的pid是22842 ,开启的命令就是配置自己配置文件中的配置信息(/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock --label name=docker_server)。

 Main PID: 22842 (dockerd)
    Tasks: 18
   Memory: 45.6M
   CGroup: /system.slice/docker.service
           ├─22842 /usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock --label name=docker_server
           └─22854 docker-containerd --config /var/run/docker/containerd/containerd.toml

3. 查看docker info 信息
[root@anonymous system]# docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 16
Server Version: 18.06.1-ce
Storage Driver: overlay2
 Backing Filesystem: xfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 468a545b9edcd5932818eb9de8e72413e616e86e
runc version: 69663f0bd4b60df09991c08812a60108003fa340
init version: fec3683
Security Options:
 seccomp
  Profile: default
Kernel Version: 3.10.0-862.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 1.796GiB
Name: anonymous
ID: UWY5:6FIL:AY7H:DS5O:Y4AN:PLXD:NUUP:VDIV:32ID:22C6:2K3J:E3WS
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
 name=docker_server
Experimental: false
Insecure Registries:
 127.0.0.0/8
Registry Mirrors:
 https://docker.mirrors.ustc.edu.cn/
Live Restore Enabled: false

        看下面一句信息就好:配置的labels生效了。

Labels:
 name=docker_server

        由此,服务端的配置已经完成了。


客户端的配置

1. 先查看能否进行访问(利用curl 命令)【这一步如果显示"curl: (7) Failed connect to 192.168.1.5:2375; 没有到主机的路由" --> 表示被访问的主机(192.168.1.5)防火墙是开着的】。如果返回的结果有是json内容的话,表示是能够访问service端的。
[root@anonymous run]# curl http://192.168.1.5:2375/info
2. 利用docker -H 命令访问Service端(有(Service端的)数据的话,表示连接上了Service端)
[root@anonymous run]# docker -H tcp://192.168.1.5:2375 info
3. 配置环境变量:这样做的意义在于要调用Service端时,不需要配置都加上:-H tcp://192.168.1.5:2375 这段信息。但这样做,也有个好点:在于不能访问本机器的docker了。
[root@anonymous run]# export DOCKER_HOST="tcp://192.168.1.5:2375"
[root@anonymous run]# docker info // 这时已经是访问Service端的信息。

       echo 可查看自己的配置环境。

[root@anonymous run]# echo $DOCKER_HOST
tcp://192.168.1.5:2375

       如果客户端要访问回本机器的docker服务的话。只需要将环境变量进行设置为空,那么便可以了。

[root@anonymous run]# export DOCKER_HOST=""

参考url:
https://www.cnblogs.com/maruidong/p/8027397.html
https://blog.csdn.net/faryang/article/details/75949611
http://www.cnblogs.com/langfanyun/p/9550584.html
http://www.bubuko.com/infodetail-2615766.html

你可能感兴趣的:(docker)