GVKun编程网logo

Docker Weave 应用部署(docker部署web应用)

7

在本文中,您将会了解到关于DockerWeave应用部署的新资讯,同时我们还将为您解释docker部署web应用的相关在本文中,我们将带你探索DockerWeave应用部署的奥秘,分析docker部署

在本文中,您将会了解到关于Docker Weave 应用部署的新资讯,同时我们还将为您解释docker部署web应用的相关在本文中,我们将带你探索Docker Weave 应用部署的奥秘,分析docker部署web应用的特点,并给出一些关于docker (部署常见应用):docker 部署 redis、Docker 04 应用部署与迁移备份 Dockerfile 与 Docker 私有仓库、Docker Macvlan 应用部署、Docker Overlay 应用部署的实用技巧。

本文目录一览:

Docker Weave 应用部署(docker部署web应用)

Docker Weave 应用部署(docker部署web应用)

Docker Weave 应用条件

  • 官方文档:https://www.weave.works/docs/net/latest/install/installing-weave

使用前提:

1. 确保 Linux 内核版本 3.8+,Docker1.10+。

2. 节点之间如果有防火墙时,必须彼此放行 TCP 6783 和 UDP 6783/6784 端口,这是 Weave 控制和数据端口。

3. 主机名不能相同


内核版本升级方案:https://www.cnblogs.com/xiangsikai/p/9899844.html


Docker Weave 网络连接部署

1、下载安装 weave

  • Weave
  • 百度云下载:https://pan.baidu.com/s/11C7DAd3vPWvHchmxIWEkTg
  • 密码:0azq
# 1、加入可执行权限
chmod +x weave 

# 2、下载到本地,存入指定命令文件目录下
mv weave /usr/bin/

2、创建网络环境

# 节点1:启动并与其他主机建立连接,启动weave并下载镜像
weave-01:~# weave launch

# 节点2:进行连接 IP连接对端服务器
weave-02:~# weave launch <ip address> 
命令:weave status

        Version: 2.0.4 (failed to check latest version - see logs; next check at 2018/11/02 14:12:39)

        Service: router
       Protocol: weave 1..2
           Name: 52:e7:9f:3c:61:a0(weave01)
     Encryption: disabled
  PeerDiscovery: enabled
        Targets: 1
# 建立连接
    Connections: 1 (1 established)
# 2 表示有两个节点
          Peers: 2 (with 2 established connections)
 TrustedSubnets: none

        Service: ipam
         Status: idle
          Range: 10.32.0.0/12
  DefaultSubnet: 10.32.0.0/12

        Service: dns
         Domain: weave.local.
       Upstream: 192.168.1.1, 8.8.8.8
            TTL: 1
        Entries: 0

        Service: proxy
        Address: unix:///var/run/weave/weave.sock

        Service: plugin (legacy)
     DriverName: weave
查看 weave 状态
命令:weave status connections

<- 192.168.1.78:53935    established fastdp 0e:75:65:8b:5c:4d(weave02) mtu=1376
查看状态详情
查看网络创建

注:fastdp 是它的运作模式,主要是用 VXLAN 封装的。如果内核版本不够它会使用自己的 sleeve 模式。

3、测试网络通信

# 节点1节点2:运行容器 测试ping
docker run -it --net=weave busybox

Docker Weave 使用 Weave 网络代理

1、节点 1 节点 2:使用 Weave 网络创建容器

# 1、使用weave代理
weave env

# 2、执行输出
export DOCKER_HOST=unix:///var/run/weave/weave.sock

2、直接运行测试容器

# 运行容器测试 ping 通
docker run -it busybox

3、查看连接情况

# 查看当前分配的容器
weave ps

# 查看weave相互之间节点建立的关系
weave status peers

 

docker (部署常见应用):docker 部署 redis

docker (部署常见应用):docker 部署 redis

上节回顾:docker (部署常见应用):docker 部署 mysql

docker 部署 redis:4.0

# 下载镜像
docker pull redis:4.0

# 查看下载镜像
docker images|grep redis

# 启动镜像

  docker run --name my-redis -p 16379:6379 -v /usr/local/workspace/redis/data:/data -d redis:4.0 redis-server --appendonly yes

命令说明:

--name my-redis                                 启动后容器名为 my-redis

-p 16379:3306                                  将容器的 3306 端口映射到主机的 16379 端口

-v  /usr/local/workspace/redis/data:/data                      将主机    /usr/local/workspace/redis/data  目录挂载到容器的 /data

redis-server --appendonly yes                        在容器执行 redis-server 启动命令,并打开 redis 持久化配置

 

查看容器启动情况

[root@k8s-master docker]# docker ps|grep redis
f9eb2360ed36        redis:4.0           "docker-entrypoint.s??   5 minutes ago       Up 5 minutes        0.0.0.0:16379->6379/tcp              my-redis

 

进入 redis 容器

# 进入redis容器
docker exec -it f9eb2360ed36 bash

# 找到redis执行脚本
root@f9eb2360ed36:/usr/local/bin# cd /usr/local/bin/

root@f9eb2360ed36:/usr/local/bin# ls -l
total 24528
-rwxrwxr-x 1 root root      374 Jun 11 06:46 docker-entrypoint.sh
-rwxr-xr-x 1 root staff 1286720 May 24  2017 gosu
-rwxr-xr-x 1 root staff 2628640 Jun 11 06:48 redis-benchmark
-rwxr-xr-x 1 root staff 6121232 Jun 11 06:48 redis-check-aof
-rwxr-xr-x 1 root staff 6121232 Jun 11 06:48 redis-check-rdb
-rwxr-xr-x 1 root staff 2820088 Jun 11 06:48 redis-cli
lrwxrwxrwx 1 root staff      12 Jun 11 06:48 redis-sentinel -> redis-server
-rwxr-xr-x 1 root staff 6121232 Jun 11 06:48 redis-server

# 执行redis-cli命令连接到redis中
root@f9eb2360ed36:/usr/local/bin# ./redis-cli 

# 展示redis信息 
127.0.0.1:6379> info
# Server
redis_version:4.0.14
redis_git_sha1:00000000
redis_git_dirty:0

 

 

感谢支持。感谢观看

 

Docker 04 应用部署与迁移备份 Dockerfile 与 Docker 私有仓库

Docker 04 应用部署与迁移备份 Dockerfile 与 Docker 私有仓库

MySQL 部署   

    拉取 mysql 镜像    docker pull centos/mysql-57-centos7

    创建 MySQL 容器    docker run -di --name=mysql01 -p 33306:3306 -e MYSQL_ROOT_PASSWORD=320512 centos/mysql-57-centos7

    -p 代表端口映射,格式为 宿主机映射端口:容器运行端口
    -e 代表添加环境变量 MYSQL_ROOT_PASSWORD 是 root 用户的登录密码

Tomcat 部署

    拉取镜像 docker pull tomcat:7-jre7

    创建容器 创建容器 -p 表示地址映射

    docker run ‐di ‐‐name=mytomcat ‐p 9000:8080

    ‐v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7‐jre7

Nginx 部署

    拉取镜像    docker pull nginx

    创建容器    docker run ‐di ‐‐name=mynginx ‐p 80:80 nginx

Redis 部署

    拉取镜像    docker pull redis

    创建容器    docker run ‐di ‐‐name=myredis ‐p 6379:6379 redis

 

 

迁移与备份

    容器保存为镜像

    我们可以通过以下命令将容器保存为镜像

    docker commit 容器名称 镜像名称

镜像备份

    我们可以通过以下命令将镜像保存为 tar 文件

    docker save -o tar 文件名称 镜像名称

恢复镜像

    docker load -i tar 文件名称

Dockerfile

    Dockerfile 是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。

    1、对于开发人员:可以为开发团队提供一个完全一致的开发环境;

    2、对于测试人员:可以直接拿开发时所构建的镜像或者通过 Dockerfile 文件构建一个新的镜像开始工作了;

    3、对于运维人员:在部署时,可以实现应用的无缝移植。

常用命令

命令 作用
FROM image_name:tag 定义了使用哪个基础镜像启动构建流程
MAINTAINER user_name 声明镜像的创建者
ENV key value 设置环境变量 (可以写多条)
RUN command 是 Dockerfile 的核心部分 (可以写多条)
ADD source_dir/file dest_dir/file 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
COPY source_dir/file dest_dir/file 和 ADD 相似,但是如果有压缩文件并不能解压
WORKDIR path_dir 设置工作目录

使用脚本创建镜像

步骤:
(1)创建目录

    mkdir –p /usr/local/dockerjdk8

(2)下载 jdk-8u171-linux-x64.tar.gz 并上传到服务器(虚拟机)中的 /usr/local/dockerjdk8 目录

(3)创建文件 Dockerfile vi Dockerfile

#依赖镜像名称和 ID
FROM centos:7
#指定镜像创建者信息
MAINTAINER ITCAST
#切换工作目录
WORKDIR /usr
RUN mkdir /usr/local/java
#ADD 是相对路径 jar, 把 java 添加到容器中
ADD jdk‐8u171‐linux‐x64.tar.gz /usr/local/java/
#配置 java 环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH
$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH

(4)执行命令构建镜像(注意后边的空格和点,不能省略)

docker build ‐t=''jdk1.8'' .

参看镜像是否建立完成

docker images

 

Docker 私有仓库

私有仓库搭建与配置

(1)拉取私有仓库镜像(此步省略)

    docker pull registry

(2)启动私有仓库容器

    docker run ‐di ‐‐name=registry ‐p 5000:5000 registry

  (3)    打开浏览器输入地址 http://ip:5000/v2/_catalog,看到 {"repositories":[]} 表示私有仓库搭建成功并且内容为空。

  (4)    修改 daemon.json    vi /etc/docker/daemon.json

            添加以下内容,保存退出,这是为了让 docker 信任私有仓库地址 {"insecure-registries":["ip:5000"]}

重启 docker 服务

    systemctl restart docker

 

镜像上传到私有仓库

    标记此镜像为私有仓库的镜像    docker tag jdk1.8 ip:5000/jdk1.8    

再次启动私服容器

    docker start registry

上传标记的镜像

    docker push ip:5000/jdk1.8

Docker Macvlan 应用部署

Docker Macvlan 应用部署

Docker Macvlan 应用部署

MacVLAN有两种桥接模式

  • Bridge模式:不创建子接口的情况下直接去桥接物理接口。直接桥接到与宿主级的同网段。
  • VLAN Bridge模式:创建子接口去桥接物理接口。可划分多个VLAN。

Macvlan Bridge模式 容器专属网络

1、节点1节点2操作:创建macvlan网络

docker network create -d macvlan --subnet=172.100.1.0/24 --gateway=172.100.1.1 -o parent=ens33 macvlan_net
docker network create 创建网络
-d 指定网络驱动程序为macvlan
--subnet 指定一个子网段
--gateway 指定网关
-o parent=ens33 指定宿主接口
macvlan_net 自定义网络名称
命令解析
命令:docker network ls
NETWORK ID          NAME                           DRIVER              SCOPE
0a48ab454840        macvlan_net                    macvlan             local
查看网络

注:如果需要访问外网,需要将网络设置为与宿主级相同网络下。

注:本地不可访问,因为桥接的本地网络。

注:单个网卡只能绑定一次如重复添加会报如下错误。

# ens33网卡已被绑定,不多次绑定。
Error response from daemon: network dm-0a48ab454840 is already using parent interface ens33

# 删除绑定网卡网络集
docker network rm ID号
报错

2、测试通信

macvlan-01# docker run -it --net macvlan_net --ip=172.100.1.10 busybox
macvlan-02# docker run -it --net macvlan_net --ip=172.100.1.11 busybox ping 172.100.1.10
docker run -it --net macvlan_net --ip=172.100.1.11 busybox ping 172.100.1.10
PING 172.100.1.10 (172.100.1.10): 56 data bytes
64 bytes from 172.100.1.10: seq=0 ttl=64 time=0.949 ms
64 bytes from 172.100.1.10: seq=1 ttl=64 time=0.316 ms
64 bytes from 172.100.1.10: seq=2 ttl=64 time=0.317 ms
64 bytes from 172.100.1.10: seq=3 ttl=64 time=0.310 ms

Macvlan VLAN Bridge模式 容器专属网络

1、节点1节点2操作:创建一个VLAN,VLAN ID 50

# ip link add link 宿主网卡 name 宿主网卡名字.子网卡名称id type vlan id 50
ip link add link ens33 name ens33.50 type vlan id 50
# 重启docker激活网卡
systemctl restart docker

2、节点1节点2操作:创建Macvlan网络

docker network create -d macvlan --subnet=172.99.0.0/24 --gateway=172.99.0.1 -o parent=ens33.50 macvlan_net99
docker network create 创建网络
-d 指定网络驱动程序为macvlan
--subnet 指定一个子网段
--gateway 指定网关
-o parent=ens33 指定宿主接口
macvlan_net99 自定义网络名称
命令解析
命令:docker network ls
NETWORK ID          NAME                           DRIVER              SCOPE
f3b3b084f580        macvlan_net99                  macvlan   
查看网络

3、测试互通

macvlan-01# docker run -it --net macvlan_net99 --ip=172.99.0.10 busybox
macvlan-02# docker run -it --net macvlan_net99 --ip=172.99.0.11 busybox ping 172.99.010

注:像这样创建多个子网卡,来实现划分多个VLAN环境。

 

Docker Overlay 应用部署

Docker Overlay 应用部署

Docker Overlay 部署条件

要想使用 Docker 原生 Overlay 网络,需要满足以下任意条件:

1、Docker 运行在 Swarm 模式

2、使用键值存储的 Docker 主机集群

本次部署使用键值存储的 Docker 主机集群,需要满足以下条件:

1. 集群中主机连接到键值存储,Docker 支持 Consul、Etcd 和 Zookeeper;

2. 集群中主机运行一个 Docker 守护进程;

3. 集群中主机必须具有唯一的主机名,因为键值存储使用主机名来标识集群成员;

4. 集群中 Linux 主机内核版本 3.12+,支持 VXLAN 数据包处理,否则可能无法通信。

5. Docker 通过 overlay 网络驱动程序支持多主机容器网络通信。


内核版本升级方案:https://www.cnblogs.com/xiangsikai/p/9899844.html


Docker Overlay 应用部署

  • 节点 1 / 键值存储:192.168.1.77
  • 节点 2:192.168.1.78

节点 1 节点 2 操作

# 修改两个测试端主机名,并退出终端生效
hostname overlay-01
hostname overlay-02

 一、部署 Consul 并运行服务

1.1 节点 1 操作:下载 Consul 二进制包并启动

  • 百度云:https://pan.baidu.com/s/1MsVJtYUDJ8LzBqVxwmdc8A
  • 密码:g5jd
  • 命令行下载:wget https://releases.hashicorp.com/consul/0.9.2/consul_0.9.2_linux_amd64.zip
# 1、解压Consul压缩包
unzip consul_0.9.2_linux_amd64.zip

# 2、将consul移动到/bin/目录下并添加执行权限
mv consul /usr/bin/consul && chmod +x /usr/bin/consul

# 3、启动consul并指定本机IP
nohup consul agent -server -bootstrap -ui -data-dir /var/lib/consul -client=192.168.1.77 -bind=192.168.1.77 &>/var/log/consul.log &

1.2 节点 1 操作:查看日志启动情况

tail /var/log/consul.log -f
2018/10/29 15:17:39 [INFO] agent: Started HTTP server on 192.168.1.77:8500

2018/10/29 15:17:45 [WARN] raft: Heartbeat timeout from "" reached, starting election

2018/10/29 15:17:45 [INFO] raft: Node at 192.168.1.77:8300 [Candidate] entering Candidate state in term 2

2018/10/29 15:17:45 [INFO] raft: Election won. Tally: 1

2018/10/29 15:17:45 [INFO] raft: Node at 192.168.1.77:8300 [Leader] entering Leader state

2018/10/29 15:17:45 [INFO] consul: cluster leadership acquired

2018/10/29 15:17:45 [INFO] consul: New leader elected: localhost.localdomain

2018/10/29 15:17:45 [INFO] consul: member ''localhost.localdomain'' joined, marking health alive

2018/10/29 15:17:45 [INFO] agent: Synced node info

==> Newer Consul version available: 1.3.0 (currently running: 0.9.2)
日志

二、部署 Docker 配置文件

2.1 节点 1 操作:配置 Docker 守护进程连接 Consul

# 添加 ExecStart 如果已有则注释添加下面案例

vim /lib/systemd/system/docker.service

[Service]
ExecStart=/usr/bin/dockerd-current -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store consul://192.168.1.77:8500 --cluster-advertise 192.168.1.77:2375
# 为docker监听
tcp://0.0.0.0:2375
注解

2.2 节点 1 操作:重启 docker 服务

# 1.修改配置文件重新加载
systemctl daemon-reload

# 2.重启docker服务
systemctl restart docker

2.3 节点 2 操作:修改配置文件

vim /lib/systemd/system/docker.service

[Service]
ExecStart=/usr/bin/dockerd-current -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store consul://192.168.1.77:8500 --cluster-advertise 192.168.1.78:2375
# 通告信息需要改为本机IP
--cluster-advertise 192.168.1.78:2375
注解

 2.4 节点 2 操作:重启 docker 服务

# 1.修改配置文件重新加载
systemctl daemon-reload

# 2.重启docker服务
systemctl restart docker

三、创建 Overlay 网络

3.1 节点 1 操作:创建 overlay 网络

# 创建网络 -d 指定网络驱动程序为 overlay multi_host
docker network create -d overlay multi_host

注:再任意节点创建后会通过 overlay 同步到已连接的节点下创建网络。

命令:docker network ls
4abe591cdf50 multi_host overlay global
查看本地网络
命令:docker network inspect ID/KEY

[

{

"Name": "multi_host",

"Id": "4abe591cdf504c1f15f563e4c8516c22b7d037268e6975e9491a417d2da83e8a",

"Created": "2018-11-01T10:42:00.117452769+08:00",

"Scope": "global",

# 驱动为overlay

"Driver": "overlay",

"EnableIPv6": false,

"IPAM": {

"Driver": "default",

"Options": {},

# 网段信息

"Config": [

{

"Subnet": "10.0.0.0/24",

"Gateway": "10.0.0.1"

}

]

},

"Internal": false,

"Attachable": false,

"Containers": {},

"Options": {},

"Labels": {}

}

]
查看网络属性信息

四、测试通信

4.1 节点 1 与 2 操作:运行测试容器

# 指定连接网络类型 --net=multi_host
docker run -it --net=multi_host busybox

注:如果报错则可在配置文件中 ExecStart 添加加如下参数

--default-runtime=docker-runc
建议添加 多个参数

--add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \

--default-runtime=docker-runc \

--exec-opt native.cgroupdriver=systemd \

--userland-proxy-path=/usr/libexec/docker/docker-proxy-current \

--init-path=/usr/libexec/docker/docker-init-current \

--seccomp-profile=/etc/docker/seccomp.json \

如下

ExecStart=/usr/bin/dockerd-current -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store consul://192.168.1.77:8500 --cluster-advertise 192.168.1.78:2375 --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-runc --exec-opt native.cgroupdriver=systemd --userland-proxy-path=/usr/libexec/docker/docker-proxy-current --init-path=/usr/libexec/docker/docker-init-current --seccomp-profile=/etc/docker/seccomp.json

 
其他参数

4.2 节点 1 与 2 操作:测试通信

overlay-01

/ # ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:0A:00:00:03
inet addr:10.0.0.3 Bcast:0.0.0.0 Mask:255.255.255.0
inet6 addr: fe80::42:aff:fe00:3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1450 Metric:1
RX packets:11 errors:0 dropped:0 overruns:0 frame:0
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:906 (906.0 B) TX bytes:586 (586.0 B)

overlay-02

/ # ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:0A:00:00:02
inet addr:10.0.0.2 Bcast:0.0.0.0 Mask:255.255.255.0
inet6 addr: fe80::42:aff:fe00:2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1450 Metric:1
RX packets:14 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1136 (1.1 KiB) TX bytes:656 (656.0 B)

 测试是否通信 overlay-02 ping overlay-01

/ # ping 10.0.0.3
PING 10.0.0.3 (10.0.0.3): 56 data bytes
64 bytes from 10.0.0.3: seq=0 ttl=64 time=0.960 ms
64 bytes from 10.0.0.3: seq=1 ttl=64 time=0.355 m

注:通信成功。

今天关于Docker Weave 应用部署docker部署web应用的讲解已经结束,谢谢您的阅读,如果想了解更多关于docker (部署常见应用):docker 部署 redis、Docker 04 应用部署与迁移备份 Dockerfile 与 Docker 私有仓库、Docker Macvlan 应用部署、Docker Overlay 应用部署的相关知识,请在本站搜索。

本文标签: