docker-doc-使用

数据卷

多个docker共享数据卷

1
2
3
4
5
6
7
8
# 创建数据卷
# docker create -v 【容器数据卷目录】 --name 【容器名称】 【依赖的镜像名称】 【可选命令】
docker create -v /data --name v1 nginx

# 创建2容器使用同一个数据卷
# docker run --volumes-from 【数据卷容器的id或名称】 -itd --name 【容器的名称】 【镜像名字】 【可选参数】
docker run --volumes-from v1 -itd --name nginx1 nginx /bin/bash
docker run --volumes-from v1 -itd --name nginx2 nginx /bin/bash

数据备份

  • 方案1
    1. 创建一个挂载数据卷容器的容器
    2. 挂载宿主主机本地目录作为备份数据卷
    3. 将数据卷容器的内容备份到宿主主机本地目录挂载的数据卷中
    4. 完成备份操作后销毁创建的数据卷容器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 进入容器,创建对应的数据
docker exec -it nginx1 /bin/bash

mkdir /data-tmp
cd /data-tmp
mkdir aa bb cc dd

exit

# 创建备份目录
mkdir /backup

# 备份容器/data-tmp目录的数据
docker run --rm -v /backup/:/backup/ nginx tar -zxPf /backup/data.tar.gz /data-tmp

网络管理

bridge模式

Docker的默认模式,它会在docker容器启动时候,自动配置好自己的网络信息,同一宿主机的所有容器都在一个网络下,彼此间可以通信。类似于我们vmware虚拟机的桥接模式。利用宿主机的网卡进行通信,因为涉及到网络转换,所以会造成资源消耗,网络效率低。

host模式

容器使用宿主机的ip地址进行通信,使容器和宿主机共享网络,本身没有ip地址。没有端口映射

container模式

新创建的容器间使用,使用已创建的容器网络,类似一个局域网。容器和容器共享网络

none模式

最纯粹模式,不会做任何网络配置,可以最大限度的定制化,不提供网络服务,容器启动后无网络连接

overlay模式

容器彼此不再同一网络,而且能互相通行。

端口映射

1
2
3
4
5
6
7
8
9
# 随机映射 -P
docker run -d -P nginx

# 指定映射 -p
# -p [宿主机ip]:[端口]:[容器端口]
# 宿主机ip 缺省默认使用 0.0.0.0.
# 端口 缺省默认随机
docker run -d -p 0.0.0.0:808:80 nginx
docker run -d -p 10086:80 -p 10000:80 nginx

创建网络

1
2
3
4
5
# docker network create --driver [网络类型] [网络名称]
docker network create --driver bridge bridge-test

# docker network create --driver [网络类型] --gateway [网关] --subnet [网段] [网络名称]
docker network create --driver bridge --gateway 172.99.0.1 --subnet 172.99.0.0/16 bridge-test

网络使用

1
2
3
4
5
6
7
8
9
10
# docker run --net=[网络名称] -itd --name [容器名称] [镜像名称]
docker run --net=bridge-test -itd --name nginx1 nginx

# 断开网络
# docker network disconnect [网络名称] [容器名称]
docker network disconnect bridge-test nginx1

# 连接网络
# docker network connect [网络名称] [容器名称]
docker network connect bridge-test nginx1

Dockerfile