您的位置:首页 > 运维架构 > Docker

Docker常用命令(四)

2019-03-03 22:49 337 查看

29.容器之间的连接:
docker 默认是所有容器之间是互联的
Docker 守护进程的启动选项。—icc=true
停止一个容器重启之后IP会动态变化的,他是一个不可靠的连接,随着容器的启动会动态变化这样是不太好的,所以docker 提供了一个类似别名的东西 ,让我们拿这个别名去访问这个新启动的容器
docker run —link =[CONTAINER_NAME]:[ALIAS][IMAFE][COMMOND]
eg:docker run --name cct3 --link=cct1:webtest -it -d cct

拒绝容器间的访问:
Docker 守护进程的启动选项。—icc=false
允许特定容器间的访问
—icc=false —iptables=true
—link
30.Docker 容器与外部网络的连接
ip_forward=true
linux 系统中的变量。他的值决定了是否转发流量
查看数据转发是否开启
sudo sysctl net.ipv4.conf.all.forwarding
iptables :
iptables是与Linux内核集成额度包过滤防火墙系统,几乎所有的Linux发行版本都会包含iptables的功能:

允许端口映射访问

Sudo iptables -L -n
-L 表示这个操作是现实
Iptables 中的连有3个。filter (input forward output)
使用iptables 限制访问:
sudo iptables -I DOCKER -s 10.211.55.3 -d 172.17.0.7 -p TCP —dport 80 -j DROP
参数解释:
-I:
-s: 请求地址
-d:源地址(被访问的地址)
-p:协议类型
-dport:被访问的端口
-j:限定的操作。 Drop 阻止访问 ACCEPT 同意访问
30.Docker 容器的数据管理:
什么是数据卷:Data Volume
数据卷是经过特殊设计的目录,可以绕过联合文件系统(UFS),为一个或多个容器提供访问
数据卷的设计目的在于数据的永久化,他完全独立与容器额生命周期,因此,Docker不会在容器删除时删除其挂载的数据卷,也不会存在类似于垃圾收集机制,对容器引用的数据卷进行处理
数据卷的特点:
数据卷在容器启动时初始化如果容器使用的镜像在挂载点包含了数据,这些数据会拷贝到新初始化的数据卷中。
数据卷可以在容器之间共享和重用
可以对数据卷里的内容直接进行修改
数据卷的变化不会影响镜像的更新
卷会一直存在,即使挂载数据卷的容器已经被删除了
为容器添加数据卷:
sudo docker run -v ~/container_data:/data -it ubuntu /bin/bash
eg:docker run -it -v ~/datavolume:/data ubuntu /bin/bash
datavolume:宿主机的目录
data:容器内部的目录
为数据卷添加访问权限:
sudo docker run -v ~/datavolume:/data :ro -it ubuntu /bin/bash
:ro 表示只读的文件权限
使用Dockerfile构建包含数据卷的镜像
Dockerfile指令:
VOLUME[“/data”]
Dockerfile中创建的目录是不能直接映射到本地宿主机目录上的,在容器启动时镜像会进行一次完整的初始化,所以每次启动的容器创建的目录是不一样的(容器中的目录)
挂载数据卷容器的方法:
docker run —volumes-from [CONTAINER NAME]
一个容器使用另一个容器创建的目录
docker run —name dvt5 —volumes-from dvt4 ubuntu /bin/bash
这句话的意思就是让dvt5共享dvt4创建的容器卷
31.Docker数据卷的备份和还原
数据备份的方法:
docker run —volumes-from [container name] -v $(pwd) :/backup ubuntu
-v :备份的路径
tar cvf /backup/backup.tar [container data volume]
Eg:
docker run —volumes-from dvt5 -v ~/backup:/backup —name dvt10 ubuntu tar cvf /backup/dvt5.tar /datavolume1
数据的欢迎方法:
将压缩命令改成解压命令就能完成了
32.docker 容器的跨主机的连接:
1)使用网墙进行网络通信
网桥管理工具(设置的配置在机器重启之后就会失效)
优点:
配置简单,不依赖第三方软件
缺点:
与主机在同一网段,需要小心划分IP地址
需要有网段控制权,在生产环境中不易实现
不易管理
兼容性不佳
2)Open vSwitch 跨主机软件(不同的网段进行连接和通信)
gre:通用路由协议封装(点对点的隧道技术)

使用weave工具进行网络(不同的网段)
Mac 上面没有wget 命令 需要自己安装
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
brew install wget
1)安装weave
sudo wget -o /Users/huyong/tools/weave https://raw.githubusercontent.com/zettio/weave/master/weave
这个比较容易建议使用

Docker 补充——————————————————————————————————————

1.docker 安装:
1).yum install -y docker-io
2)./etc/init.d/docker start
2.查找镜像:
docker search java
2.拿到镜像
docker pull imagesname
3.在容器中查看IP一般不能使用ifconfig. 可以使用:
ip add li
4.通过容器的pid进入容器:
nester —target 进程的pid —mount —uts —opc —net —pid
5.获取容器的pid
docker inspect —format “{{.State.Pid}}” redis
6.查看Linux的网桥:
brctl show
7.docker run -it —name volume-test1 -h nginx -v /data centos
启动一个centos 的容器 这个容器的主机名为nginx 数据卷为data
8.将指定目录挂载:
docker run —it —name volume-test2 -h nginx -v /opt:/opt :ro centos
将本地的opt挂载到容器的opt. 前面为本地的宿主机的地址,后面为docker中的地址,目录是只读的
9.挂载个其他容器使用的数据卷,其他容器的状态不会影响这个容器的使用
Docker run -it —name volume-test4 —volumes-from volume-test1 centos
10.镜像的构建(手动构建)
docker commit -m “my nginx” 5be53callalcc huyong/my-nginx:v1
11.使用Dockerfile构建镜像

FROM centos  #他的妈妈是谁 (基础镜像)

MAINTAINER huyong #告诉别人,你创造了他(维护者的信息)
ADD pcre-8.37.tar.gz /usr/local/src #忘他肚子里放点东西 (COPY文件。会自动解压)
ADD nginx-1.9.3.tar.gz /usr/local/src
RUN yum install -y wget gcc gcc-c++ make openssl-devel #你想让他干啥(把命令前面加上RUN)
RUN useradd -s /sbin/nologin -M www

WORKDIR /usr/local/src/nginx-1.9.3 #我是cd,今天化妆了(当前工作目录)
RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-pcre=/usr/local/src/pcre-8.37 && nake && make install
RUN echo “daemon off;”>>/usr/local/nginx/conf/nginx.conf
VOLUME #给我一个存放行李的地方(目录挂载)
ENV PATH /ust/local/nginx/sbin:$PATH
EXPOSE 80 #我要打开的门是啥?(端口)
CMD [“nginx”]
#RUN #奔跑吧,兄弟!(进程要一直运行下去)

构建:
docker build -t nginx-file:v1 /opt/docker-file/nginx
后面的这个是Dockerfile的文件

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: