Docker网络和数据卷示例

docker 网络映射
1,随机映射,随机映射端口不会有冲突 -P

[root@zabbix-3 ~]# docker run -d -P --name mynginx1 nginx
ff5442b84da4b346e5470e3fc74c401ae14f7c3b3b72ad2d85ce04195f26976f
[root@zabbix-3 ~]# docker ps -l
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                           NAMES
ff5442b84da4        nginx               "nginx -g 'daemon off"   7 seconds ago       Up 5 seconds        0.0.0.0:32769->80/tcp, 0.0.0.0:32768->443/tcp   mynginx1
[root@zabbix-3 ~]#
2.-p指定端口映射

[root@zabbix-3 ~]# docker run -d -p 91:80 --name mynginx2 nginx
219c145ad549d11c50d611838063fa387ae174b436f8cc6d1edae997baa7a571
[root@zabbix-3 ~]# docker ps -l
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                         NAMES
219c145ad549        nginx               "nginx -g 'daemon off"   10 seconds ago      Up 9 seconds        443/tcp, 0.0.0.0:91->80/tcp   mynginx2
[root@zabbix-3 ~]#
3.docker数据存储,可参考:http://dockone.io/article/128
数据卷,可绕过ufs将数据写在物理主机上

[root@zabbix-3 ~]# docker run -it --name volume-test1 -h centos -v /data centos
[root@centos /]# ls /data/
[root@centos /]# ls /
anaconda-post.log  data  etc   lib    lost+found  mnt  proc  run   srv  tmp  var
bin                dev   home  lib64  media       opt  root  sbin  sys  usr
[root@centos /]#

[root@zabbix-3 ~]# docker run --name mark1 -v /data -ti centos /bin/bash
[root@fca3f6850e6a /]# ls -ld /data/
drwxr-xr-x. 2 root root 6 Jun 28 09:45 /data/
[root@fca3f6850e6a /]# df -Th
Filesystem                                                                                         Type   Size  Used Avail Use% Mounted on
/dev/mapper/docker-253:0-68314296-da4f78f8af9a7c3e89ac958fcb9801e6ccc778fd3eda6ed1da4cb9503938a03d xfs     10G  241M  9.8G   3% /
tmpfs                                                                                              tmpfs  1.9G     0  1.9G   0% /dev
tmpfs                                                                                              tmpfs  1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root                                                                            xfs     18G  3.0G   15G  17% /data
shm                                                                                                tmpfs   64M     0   64M   0% /dev/shm
[root@fca3f6850e6a /]#
3.1查看卷位置

[root@zabbix-3 fce6e616518fb37c581a1a5b93247757ffae2dec861fc95bc3b3aae2ca53f523]# docker inspect mark1|awk '/"Source"/{print $2}'
"/var/lib/docker/volumes/fce6e616518fb37c581a1a5b93247757ffae2dec861fc95bc3b3aae2ca53f523/_data",
[root@zabbix-3 fce6e616518fb37c581a1a5b93247757ffae2dec861fc95bc3b3aae2ca53f523]#
如下:

"Mounts": [
    {
        "Name": "fce6e616518fb37c581a1a5b93247757ffae2dec861fc95bc3b3aae2ca53f523",
        "Source": "/var/lib/docker/volumes/fce6e616518fb37c581a1a5b93247757ffae2dec861fc95bc3b3aae2ca53f523/_data",
        "Destination": "/data",
        "Driver": "local",
        "Mode": "",
        "RW": true,
        "Propagation": ""
    }
],
/var/lib/docker/volumes/fce6e616518fb37c581a1a5b93247757ffae2dec861fc95bc3b3aae2ca53f523/_data文件其实上映射在容器内的data文件
在os上创建文件,在容器中则可以发现,他们几乎是相同的

[root@zabbix-3 _data]# cat /var/lib/docker/volumes/fce6e616518fb37c581a1a5b93247757ffae2dec861fc95bc3b3aae2ca53f523/_data/mark
helo word!
[root@zabbix-3 _data]#
查看

[root@zabbix-3 ~]# ./in.sh mark1
[root@fca3f6850e6a /]# ls /data/
mark
[root@fca3f6850e6a /]# cat /data/mark
helo word!
[root@fca3f6850e6a /]#
3.2指定目录挂载到容器中:
在opt中touch一个文件,而后挂载到容器中叫做ott

[root@zabbix-3 ~]# touch /opt/`date +%F-%T`.txt
[root@zabbix-3 ~]#
挂载到容器中,/opt和/ott之间用冒号间隔

[root@zabbix-3 _data]# docker run -it --name mark2 -h nginx -v /opt:/ott centos
[root@nginx /]# ll /ott/
total 0
-rw-r--r--. 1 root root 0 Jun 28 13:36 2016-06-28-09:36:45.txt
[root@nginx /]#
当我们容器的日志也可以这样存放到本机上,而这种映射在docke file上使用不了
如果我们挂载只读则可以添加ro

docker run -it --name mark2 -h nginx -v /opt:/ott:ro centos
4.挂载文件

[root@zabbix-3 ~]# docker run -it --name mark3 -h nginx -v /root/in.sh:/etc/in.sh centos
[root@nginx /]# ll /etc/in.sh
-rwxr-xr-x. 1 root root 134 Jun 27 17:59 /etc/in.sh
[root@nginx /]#
5.docker 数据卷容器
创建一个新的容器,新容器来自于mark1容器,容器共享

[root@zabbix-3 ~]# docker run -it --name mark4 --volumes-from mark1 centos
[root@6cf741b2ef70 /]# ls /data/
mark
[root@6cf741b2ef70 /]#

时间: 2024-09-25 17:19:19

Docker网络和数据卷示例的相关文章

docker -v挂载数据卷网络异常的问题

docker 删除容器并重新运行容器时报如下异常: docker: Error response from daemon: failed to create endpoint tomcat001 on network bridge: COMMAND_FAILED: '/sbin/iptables -w2 -t nat -A DOCKER -p tcp -d 0/0 --dport 8090 -j DNAT --to-destination 172.17.0.3:8080 ! -i docker0

实例解析Docker数据卷+数据卷容器+flocker数据共享+DockerHub操作

Docker内部数据管理和Docker之间的数据共享为数据卷和数据卷容器,实例解析1.将本地的文件作为容器的数据卷,2.数据卷flocker插件实现容器集群(或者Docker Swarm)的数据共享3.数据卷容器作为其他容器的数据卷.降低磁盘开销.4.数据的备份,恢复和迁移.5.Docker hub的常用操作. 1.0.数据卷(Data volumes) Data volumes是一个或者多个容器特别指定的目录,它区别于联合文件系统的(Union File System,或称UnionFS,通过

Docker 数据卷及数据容器详细介绍及示例_docker

Docker 数据卷及数据容器 这两天开始学习docker,发现docker确实很强大,让网站部署和维护的效率大大提高.遂准备将手头维护的几个小站,全部docker化.整理的过程中感觉到,docker可以以功能或者进程为单位进行部署和维护,不用再花时间在繁琐的配置上面,但是docker和宿主之间的数据共享以及docker间的数据共享仍然是让人头疼和操心的地方. 几个基本概念: docker: 一种容器管理技术,这里也指既有的开发工具链. container: 容器 image: 镜像 volum

Docker 数据卷权限实例详解_docker

Docker 数据卷权限 在CentOS7中运行NodeJs的容器,发现挂载的本地目录在容器中没有执行权限,经过各种验证和Google搜索,找到了问题的原因,这里做一下记录.原因是CentOS7中的安全模块selinux把权限禁掉了,至少有以下三种方式解决挂载的目录没有权限的问题: 1,在运行容器的时候,给容器加特权: 示例:docker run -i -t --privileged=true -v /home/docs:/src waterchestnut/nodejs:0.12.0 2,临时

Docker 数据卷,数据卷容器详细介绍_docker

Docker 数据卷,数据卷容器详细介绍 引子 有些时候,我们的服务运行时必不可少的会产生一些日志,或是我们需要把容器内的数据进行备份,甚至多个容器之间进行数据共享,这必然涉及容器的数据管理操作. 容器中管理数据主要有两种方式: 数据卷 数据卷容器 数据卷是一个可供容器使用的特殊目录,它绕过文件系统,可以提供很多有用的特性: - 数据卷可以在容器之间共享和重用 - 对数据卷的修改会立马生效 - 对数据卷的更新,不会影响镜像 - 卷会一直存在,直到没有容器使用 #(类似linux下的挂载(moun

Docker数据管理-数据卷 data volumes和数据卷容器data volumes containers的使用详解

使用docker过程中,我们需要查看容器中产生的数据,以及容器与容器之间.容器与主机之前进行数据共享.备份等操作,这里就需要到容器的数据管理. 数据的管理目前提供如下两种方式: #数据卷 data volumes #数据卷容器 data volumes containers 一,数据卷 数据卷,说白了就是一个特殊目录,类似linux下对目录或文件进行mount挂载操作,只不过他绕过了文件系统.具有如下特点: (1) 数据卷可以在容器之间进行共享和重用 (2)对数据卷的更改会立即生效 (3)对数据

Docker网络和服务发现

本文讲的是Docker网络和服务发现[编者的话] 本文是<Docker网络和服务发现>一书的全文,作者是Michael Hausenblas.本文介绍了Docker世界中的网络和服务发现的工作原理,并提供了一系列解决方案. 前言 当你开始使用Docker构建应用的时候,对于Docker的能力和它带来的机会,你会感到很兴奋.它可以同时在开发环境和生产环境中运行,只需要将一切打包进一个Docker镜像中,然后通过Docker Hub分发镜像,这是很直接了当的.你会发现以下过程很令人满意:你可以快速

利用OpenVSwitch构建多主机Docker网络

本文讲的是利用OpenVSwitch构建多主机Docker网络,[编者的话]当你在一台主机上成功运行Docker容器后,信心满满地打算将其扩展到多台主机时,却发现前面的尝试只相当于写了个Hello World的入门程序,多主机的网络设置成了下一道门槛.在你尝试各种方案时不妨先看看本文,或许就会豁然开朗,发现原来也不复杂.嗯,是的,本文用到了OpenVSwitch. 运行Docker已经不是什么新鲜事,网上有很多入门教程来帮助你在一台主机上运行容器.这台主机可以是Linux服务器,也可以是Mac(

Docker数据管理之数据备份和恢复配置

Docker数据管理 容器中管理数据主要有两种方式:数据卷和数据卷容器 将本地的目录或者文件挂载到容器内的数据卷中 数据卷是可提供容器使用的特殊目录,他绕过文件系统,可提供多种特性 数据卷可一在容器直接共享和重复使用 数据卷的修改会立刻生效 数据更新不会影响到镜像 卷一直存在,不管容器有没有使用 1,挂载目录 数据卷类似于linux中的mount挂载操作 在使用docker run命令的时候使用-v标记可以在容器内创建一个数据卷,多次使用-v表姐可以创建多个 也可以在docker-compose