docker容器管理及网络管理
防火墙规则——
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 / ...
- 四、docker容器管理
一.docker容器管理 1.1 容器查看-ps命令 显示本地容器列表,但是默认不显示关闭的容器,只显示运行中的容器,除非加上命令选项 -a 用法:docker ps [-a 显示所有容器,默认只显示 ...
- [CoreOS 转载] CoreOS实践指南(七):Docker容器管理服务
转载:http://www.csdn.net/article/2015-02-11/2823925 摘要:当Docker还名不见经传的时候,CoreOS创始人Alex就预见了这个项目的价值,并将其做为 ...
- Docker 容器管理
单一容器管理 容器的标识符 每个容器被创建后都会分配一个CONTAINER_ID作为容器的唯一标识符,后续的启动.停止等操作都通过CONTAINER_ID来完成的. CONTAINER_ID很难记忆, ...
随机推荐
- win10系统怎么关闭自动更新
现在win10已经很普遍了,对于win10 现在还不是很完美,比如自动更新功能,现在的选项中没有关闭自动更新的选项了,这是一个bug,微软要强制更新.我就忍受不了自动更新,会拉取网络,影响我们的上网体 ...
- Py修行路 python基础 (四)运算 copy
字符串的格式化 在字符串中插入 %s ,作为占位符,后边儿再定义插入变量. 算术运算 % 取模 判断奇偶数 / 除法 有小于号 // 取整除 返回整数部分 逻辑运算 and or not ' ...
- Venom的简单使用
工具地址:https://github.com/r00t-3xp10it/venom 打开到venom目录,输入./venom.sh 打开程序 按回车键继续 这里有很多的模块,要用哪个模块就输入它的编 ...
- 什么是DA控制
液压系统中的DA控制: Automotive Drive control & Anti stall control 自动变速控制 & 防熄火控制 (DA控制) 1:自动(变速)驱动控制 ...
- flask系列九之使用falsk建立项目总结
待续.... 源码地址:https://gitee.com/FelixBinCloud/ZhiLiaoDemo/tree/master/ZhiLiao
- List扩展方法汇总(仅备注)
不管在c/s还是b/s的c#语言开发程序中,经常会用到List的扩展方法,尤其在json格式的数据和服务端交互越来越流行,很多时候总是在开发使用到的时候才去搜索有些扩展方法或者linq的用法,在这里, ...
- git配置和使用
1.注册bitbucket用户登录bitbucket站点https://bitbucket.org/注册一个用户,注册后用户名为linjiqin,邮箱为linjiqin@dkhs.com. 2.Cre ...
- 数论Keynote
[同余] 1.整数a,b对模m同余的充分与必要条件是m|(a-b),即a=b+mt,t是整数. 2.性质丁.若a1=b1(mod m),a2=b2(mod m),则(a1+a2)=(b1+b2)(mo ...
- Docker学习笔记_使用Dockerfile创建flask的一个镜像
一.实验环境 1.宿主机OS:Win10 64位 2 .虚拟机OS:Ubuntu18.04 64位 虚拟机名称:Ubuntu18VM1 虚拟机IP:192.168.8.25 3.账号:doc ...
- c语言学习笔记 for循环的结构
其实感觉for循环没有while循环那么直白好理解. for(i=0;i<n;i++) { dosth(); } i=0是i的初始值. i<n是循环进行的条件. i++是每次循环要做的事情 ...