防火墙规则——
INPUT 主要用于主机防火墙,设置规则屏蔽处理进入本机的数据包
示例:禁止10.180.100.141这个机器访问我本机的web服务
iptables -t filter -A INPUT -s 10.180.100.141 -p tcp --dport 80 -j DROP
FORWARD 主要用于网络防火墙,设置规则处理穿过本机的数据包
示例:禁止10.180.100.141的机器穿过防火墙访问后端的机器
iptables -t filter -A FORWARD -s 10.180.100.141 -j DROP
nat防火墙,需要打开内核ip转发(systel -w net.ipv4.ip_forward=1)
POSTROUTING 源地址伪装
示例:通过伪装10.180.100.0网段的机器上网,首先防火墙本机可以访问互联网
iptables -t nat -A POSTROUTING -s 10.180.100.0 -j SNAT --to-source 防火墙外网ip
PERROUTING 目的地址转换
示例:所有防火墙10022端口的请求都转发给后端的10.180.100.141的22端口
iptables -t nat -A PERROUTING -p tcp --dport 10022 -j DNAT --to-destination 10.180.100.141:22
docker 容器管理
docker怎么连上容器?可以映射端口,比如我在容器创建一个apache和mysql,我们就把容器的端口映射到宿主机的80端口和3306端口。
实例
[root@x ~]# docker run -p 222:22 -itd centos(使用宿主机的222端口,映射容器的22端口)
[root@x ~]# ssh 192.168.230.168:222(然后输入密码就可以链接到容器)
自定义镜像与仓库
使用commit创建新镜像文件——
使用镜像启动容器,在该容器基础上修改,另存为另一个镜像
docker run itd centos
docker ps
docker exec CONTAINER ID(在这里进行增删改查,安装卸载软件等等)
docker commit CONTAINER ID name:latest(默认卷边就是latest)
docker images
示例:
[root@x ~]# docker run -itd centos(运行一个容器)
[root@x ~]# docker ps(查看容器)
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4576e60e1b56 centos
[root@x ~]# docker exec -it 4576e60e1b56 bash(进入容器)
[root@4576e60e1b56 /]# yum -y install mysql..........(安装软件,修改配置文件等)
[root@x ~]# docker commit 4576e60e1b56 mycentos(另存为修改后的镜像名字为mycentos)
sha256:10bb17e15bd2b7ce98fc0dd8db1c6c1729da8fe39e0c0faed201fd8eaa4b488d
[root@x ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mycentos latest 10bb17e15bd2 44 seconds ago 197.2 MB
docker.io/nginx latest 7f70b30f2cc6 2 days ago 108.7 MB
使用Dockerfile文件创建新镜像文件
Dockerfile语法格式——
FROM:基础镜像
MAINTAINER:镜像创建者信息
EXPOSE:开放的端口
ENV:环境变量
ADD:复制文件到镜像
RUN:制作镜像时执行的命令,可以有多个
WORKDIR:定义容器默认的工作目录
CMD:启动容器时执行的命令,仅可以有一条cmd
工作流程——
mkdir xx(创建一个文件夹),
vim Dockerfile(创建Dockerfile文件)
docker xx -t imagename Dockerfile
示例:
[root@x ~]# mkdir build(创建一个build,继续创建一个脚本,内容随意并赋予执行权限)
[root@x build]# ls
Dockerfile xx.sh
[root@x build]# cat Dockerfile
FROM mycentos(使用自定义的镜像)
MAINTAINER xxsec 1520029989@qq.com(作者信息)
ENV NAME=xxsec
ENV environment=xxsec
WORKDIR /var/www/html
ADD xx.sh /root/xx.sh
RUN mkdir /dockerfile
RUN echo "xxsec" > dockerfile/file.txt
RUN yum -y install httpd
RUN echo "xxsec" > /var/www/html/index.html
EXPOSE 80
CMD ["httpd", "-DFOREGROUND"]
[root@x build]# ls
Dockerfile xx.sh
[root@x build]# docker build -t xxsec .(.在当前目录执行,)
[root@x ~]# docker images(查看生成的镜像)
REPOSITORY TAG IMAGE ID CREATED SIZE
xxsec <none> 7acc6beb85a2 About a minute ago 197.2 MB
自定义仓库——
registry基本概念
共享镜像的一台服务器(镜像化的一台服务器)
自定义私有仓库
[root@xxsec ~] docker pull docker.io/registry
[root@xxsec ~] vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/.dockerd --insecure-registry=ip:5000
[root@xxsec ~] systemctl daemon-reload
[root@xxsec ~] systemctl restart docker
[root@xxsec ~] docker run -id -p 5000:5000 registry
[root@xxsec ~] docker tar 镜像 镜像容器ip:5000/镜像:latest(打标签)
[root@xxsec ~] docker push 镜像容器ip:5000/镜像:latest(上传)
进入registry容器查看
[root@xxsec ~] cat /etc/docker/registry/config.yml
验证:
使用远程镜像启动容器
[root@xxsec ~] docker run -it 镜像容器ip:5000/镜像名
查看远程仓库上有什么镜像
http://容器镜像ip:5000/v2/_catalog
查看远程镜像的tag
http://容器镜像ip:5000/v2/<name>/tags/list
持久化存储——
存储卷:卷的概念docker容器不保存任何数据,重要的数据使用外部卷存储(存储持久化),容器可以挂在真实机目录或共享存储为卷
共享存储:一台共享存储服务器可以提供给所有的Docker主机使用,共享存储服务器(NAS,SAN,DAS等),如使用NFS创建共享存储服务器,客户端挂载NFS共享,并最终映射到容器中。
存储卷示例;
主机卷的映射,将真实机目录挂在到容器中提供持久性存储
[root@x ~]# docker run -it -v /var/data:/data centos bash
共享存储示例:
服务器端:[root@xxsec ~] yum -y install nfs-utils
[root@xxsec ~] vim /etc/exports
[root@xxsec ~] systemctl start nfs
docker主机(注意是宿主机mount)mount挂载共享,运行容器时,使用-v选项映射磁盘到容器中
docker网络管理
查看默认docker创建的网络模型
[root@xxsec ~] docker network list
[root@xxsec ~] ip a s docker0
[root@xxsec ~] brctl show docker0(启动容器会绑定该网桥)
新建docker网络模型
[root@xxsec ~] docker network create --driver bridge xx01
[root@xxsec ~] docker network list
[root@xxsec ~] ip a s
[root@xxsec ~] docker network inspect xx01
创建虚拟网桥——
[root@xxsec ~] cat /etc/sysconfig/network-scripts/ifcfg-br0
TYPE=Bridge
BOOTPROTO=static
... ...
NAME=eth0
DEVICE=eth0
BRIDGE=br0
NOBOOT=yes
IPADDR=192.168.230.168
[root@xxsec ~] cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=static
... ...
NAME=eth0
DEVICE=eth0
BRIDGE=br0
NOBOOT=yes
IPADDR=192.168.230.168
[root@xxsec ~] brctl show(显示网桥)
docker自定义网桥
[root@xxsec ~] docker network create --subnet=192.168.230.176/24 xx01(创建网桥)
[root@xxsec ~] docker run --network=bridge|host|none
[root@xxsec ~] docker run --network=xx01 -id nginx(启动容器,使用刚创建的网桥)
docker容器管理及网络管理的更多相关文章
-
docker 容器管理常用命令
Docker 容器管理: docker create -it centos //这样可以创建一个容器,但该容器并没有启动: create Create a new container 创建一个容器: ...
-
docker 容器管理上
Docker 容器管理: docker create -it centos //这样可以创建一个容器,但该容器并没有启动: docker start container_id //启动容器后,可以使用 ...
-
Docker-compose 多个Docker容器管理:以MYSQL和Wordpress为例
搬砖的陈大师版权所有,转载请注明:http://www.lenggirl.com/tool/docker-compose.html Docker-compose 多个Docker容器管理:以MYSQL ...
-
Docker系列三:Docker容器管理
Docker容器管理 1. 单一容器管理 1) 容器的启动 $ docker run --name gitlab-redis -d --volume /srv/docker/gitlab/redis: ...
-
docker容器管理-含静态Ip(10)
docker run命令详解 docker run -t #表示分配一个伪终端 -i #表示让容器的标准输入打开,不跟这个参数容器启不来 -d #后台运行 -P #dockerfile中EXPOSE ...
-
Docker学习第二天(Docker容器管理)
简介 emmmm Docker 容器管理 推荐文章:容器技术概述 run里面的子选项 1.使用run命令创建容器 docker container run -it ubuntu /bin/bash / ...
-
[CoreOS 转载] CoreOS实践指南(七):Docker容器管理服务
转载:http://www.csdn.net/article/2015-02-11/2823925 摘要:当Docker还名不见经传的时候,CoreOS创始人Alex就预见了这个项目的价值,并将其做为 ...
-
Docker 容器管理
单一容器管理 容器的标识符 每个容器被创建后都会分配一个CONTAINER_ID作为容器的唯一标识符,后续的启动.停止等操作都通过CONTAINER_ID来完成的. CONTAINER_ID很难记忆, ...
-
003.Docker容器管理
一 docer运行应用 1.1 常见容器运行 root@docker:~# docker #查看docker相关命令 root@docker:~# docker run -d -p 80:80 htt ...
随机推荐
-
iHover – 30+ 纯 CSS 实现的超炫的图片悬停特效
iHover 是一个令人印象深刻的图片悬停效果集合,完全基于 CSS3 实现,无依赖,能够搭配 Bootstrap 3 很好地工作.基于 SCSS 技术构建,便于修改变量.有模块化的代码,无需包含整个 ...
-
【Java每日一题】20161201
20161130问题解析请点击今日问题下方的"[Java每日一题]20161201"查看 package Dec2016; public class Ques1201 { publ ...
-
1002. A+B for Polynomials
1002. A+B for Polynomials (25) This time, you are supposed to find A+B where A and B are two polynom ...
-
第一天的作业,登录接口脚本 login.py
user_list = [] count = 0 user = "liruixin" password = " raw_user = raw_input("us ...
-
Android-判断当前网络是否可用
1.声明权限 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 2. ...
-
java中动态代理
一.在java中怎样实现动态代理 1.我们要有一个接口,还要有一个接口的实现类,而这个实现类呢就是我们要代理的对象 接口: package org.dynamicproxy.test; public ...
-
☀【window.self / window.parent / window.top】
Js中的window.parent ,window.top,window.self 详解 √http://blog.csdn.net/zdwzzu2006/article/details/604763 ...
-
Memcached源码分析——process_command函数解析
以下为个人笔记 /** * process_command 在memcached中是用来处理用户发送的命令的, * 包括get set,add,delete,replace,stats,flush_a ...
-
AES 加密,C#后台,javascript前台,crypt-js
javascript前台代码 <script src="http://apps.bdimg.com/libs/crypto-js/3.1.2/components/core-min.j ...
-
还原数据库“XXX”时失败。System.Data.SqlClient.SqlError: 无法执行 BACKUP LOG,因为当前没有数据库备份。
标题: Microsoft SQL Server Management Studio------------------------------ 还原数据库“GoldBellXZDepot”时失败. ...