珠峰10天彻底搞定-Webpack4.0

但是如果每次访问远程服务都需要调用docker -H命令会显得繁琐

可以配置环境变量 利用export命令

[root@bogon docker]# export DOCKER_HOST="tcp://192.168.174.134:2375"

此时利用docker info命令可以看到它默认连接上了远程服务端

Registry: https://index.docker.io/v1/
Labels:
 name=docker-server_1
Experimental: false

当然如果想默认连接本机可以利用export命令即Docker-HOST的内容置空,即空字符串

二、Dockerfile指令

  1、FROM <image> 表示来自哪个镜像

  2、MAINTAINER <name> 用于指定镜像的作者信息,包含镜像的所有者和联系信息

  3、RUN命令:在容器构建过程中运行:如安装nginx

     1) RUN <commad> (shell模式) 如:RUN echo hello    

       2) RUN ["executable","paam1","param2"] (exec模式) 如:RUN["/bin/bash","-c","echo hello"]

  4、EXPOSE <port> [<port>..]  指定运行该镜像的容器使用的端口号

扫描二维码关注公众号,回复: 5101947 查看本文章

  5、在容器运行时运行的,用于执行什么指令,如运行nginx,不过此命令会被docker run 启动命令覆盖

     1) CMD  ["executable","paam1","param2"] (exec模式)

     2) CMD command param1 param2(shell 模式)

  6 、ENTRPOINT :与CMD命令相似,只是=此命令不会被docker run 启动命令覆盖

    1) ENTRYPOINT   ["executable","paam1","param2"] (exec模式)

    2) ENTRYPOINT  command param1 param2(shell 模式)

  7、ADD 将宿主机文件复制到创建容器

    ADD <src>..<dest> 

    ADD ["src"..""<>dest](适用于文件路径中有空格的情况)

    COPY <src> .. <dest>

    COPY ["src"..""<>dest](适用于文件路径中有空格的情况)

     区别:

    ADD 包含类似tar的解压功能

    如果单纯复制文件,Docker推荐使用COPY

   8、VOLUME ["/data"] :用于为创建的容器创建数据卷,用于数据持久化

   9、WORKDIR /path/to/workdir :在容器内部设置工作目录,那么如cmd命令都会在指定的目录下进行

   10、ENV <key><value>

     ENV <key>=<value>..

   11、USER daemon 指定用户

     如 USER nginx

三、容器的互联

  参考:https://blog.csdn.net/q13554515812/article/details/84325647

       http://wiki.jikexueyuan.com/project/docker-technology-and-combat/con_port_mapping.html

  1) 容器之间的互联访问

  如果在同一个局域网下,容器之间是通过虚拟网桥连接的,所以相互之间可以互联通信,但是每次重新启动一次容器,其ip地址会发生变化

  为了防止此变化可以通过link命令进行连接

复制代码

[root@bogon ~]# docker run -it --name cct1 centos
[root@bogon ~]# docker run it --name cct2 --link=cct1:webtest centos  #ctr+P+q
[root@131b9fc5eea4 etc]# ping cct1
PING webtest (172.17.0.2) 56(84) bytes of data.
64 bytes from webtest (172.17.0.2): icmp_seq=1 ttl=64 time=0.157 ms
64 bytes from webtest (172.17.0.2): icmp_seq=2 ttl=64 time=0.135 ms

复制代码

  2) 拒绝所有容器间互联(处于安全考虑)

  Docker守护进程的启动选项

  --icc=false

  此针对于centos7系统配置

复制代码

[root@bogon docker]# pwd
/etc/docker
[root@bogon docker]# ll
总用量 20
drwxr-xr-x. 5 root root    72 12月 15 23:23 certs.d
-rw-r--r--. 1 root root   120 1月   2 21:15 daemon.json
-rw-------. 1 root root   244 12月 15 23:24 key.json
-rw-r--r--. 1 root root 10837 12月  7 23:42 seccomp.json
[root@bogon docker]# vim daemon.json

复制代码

{
  "registry-mirrors": ["https://1mz9i0xi.mirror.aliyuncs.com"],
  "labels": ["name=docker-server_1"],
  "icc":false
}

复制代码

[root@bogon docker]# systemctl restart docker
[root@bogon docker]# docker restart cct1 cct2
cct1
cct2
[root@bogon docker]# docker attach cct2
[root@131b9fc5eea4 /]# ping cct1
PING webtest (172.17.0.2) 56(84) bytes of data.  #程序进程被卡住
^C

复制代码

  3) 允许特定容器间的连接 

  Docker守护进程的启动选项

  --icc=false   #设置拒绝所有访问

  --iptable=true  #配置iptables 此与上命令置于daemon.json

  --link      #利用link命令单独连接

  如:{ ... "icc": false, "iptables": true, ... }

四、Docker容器与外部网络的连接

  ip_forward

  iptables (centos7为firewalld)

  允许端口映射访问

  限制IP访问容器

  1、--ip-forward=true

  sysctl net.ipv4.conf.all.forwarding

  1) 查看ipv4的值

[root@bogon docker]# sysctl net.ipv4.conf.all.forwarding
net.ipv4.conf.all.forwarding = 1     #该值为1

  2) 启动一个容器,其镜像是基于拥有nginx服务的镜像

复制代码

[root@bogon ~]# docker run -it -p 80 --name cct5 cento
[root@de032d9b3734 /]#nginx
[root@de032d9b3734 /]# [root@bogon ~]#
[root@bogon ~]# docker port cct5
80/tcp -> 0.0.0.0:32768
[root@bogon ~]# curl 127.0.0.1:32768 #此时可以看到nginx首界面

复制代码

  3) 在另外一台宿主机上启动docker,并尝试连接cct5的容器

[root@bogon ~]# curl 192.168.174.128:32768 #此时能正常访问

  说明当我们建立端口映射时,iptables会加入一条规则允许外部容器的访问

  4) 可以通过iptables添加规则来阻止或指定特定容器的连接

    4.1) 先查询指定所要阻止的容器所在的ip,如这里是192.168.174.128

    4.2) 重新启动一个容器:此容器与阻止访问的容器不再同一个宿主机上

复制代码

[root@bogon ~]# docker run -it -p 80 --name cct6 cento
[root@de032d9b3734 /]#nginx
[root@de032d9b3734 /]# [root@bogon ~]#
[root@bogon ~]# iptables -L -n
Chain DOCKER (1 references)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            172.17.0.3           tcp dpt:80    #此时iptables添加的容器映射

复制代码

  4.3) 添加规则

[root@bogon ~]# iptables -I DOCKER -s 192.168.174.128 -d 172.17.0.3 -p TCP --dport 80 -j DROP

  4.4) 此时通过另台宿主机(192.168.174.128)容器访问172.17.0.3的容器,进程会卡主连接不上,说明阻止成功

五、Docker容器数据卷

  1、什么是数据卷

  数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:

  • 数据卷可以在容器之间共享和重用
  • 对数据卷的修改会立马生效
  • 对数据卷的更新,不会影响镜像
  • 卷会一直存在,直到没有容器使用 *数据卷的使用,类似于 Linux 下对目录或文件进行 mount

猜你喜欢

转载自blog.csdn.net/wei496693/article/details/86674306
今日推荐