美文网首页程序员
docker link 练习

docker link 练习

作者: TEYmL | 来源:发表于2020-12-30 10:35 被阅读0次

docker link 练习

部署两个容器,一个web服务,一个数据库服务,实现web容器从数据库容器拿数据

环境

  • Ubuntu 18.04 虚拟机
  • docker 20.10.1
  • go1.10.4 linux/amd64

前提准备

准备redis v7版本

下载redis v7版本

链接,可以直接git clone

https://github.com/go-redis/redis/tree/v7

将下载的文件夹里的所有内容放在go相关路径下

路径,如提示没有当前文件夹则手动创建

root@k8smaster:/usr/lib/go-1.10/src/github.com/go-redis/redis/v7

步骤

制作web服务docker image

创建go 可执行程序

创建一个文件夹,新建一个main.go文件,代码如下

package main

import (
        "fmt"
        "log"
        "net/http"

        "github.com/go-redis/redis/v7"
)

var dbClient *redis.Client
var key = "pv"

func init() {
        dbClient = redis.NewClient(&redis.Options{
                Addr:     "db:6379",
        })
}

func main() {
        http.HandleFunc("/", handler)
        log.Fatal(http.ListenAndServe("0.0.0.0:8080", nil))
}

func handler(w http.ResponseWriter, r *http.Request) {
        log.Printf("Ping from %s", r.RemoteAddr)
        pageView, err := dbClient.Incr(key).Result()
        if err != nil {
                panic(err)
        }
        fmt.Fprintf(w, "Hello, you're visitor #%v.\n", pageView)
}

将main.go编译成可执行程序

可执行程序名为mainredis

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o mainredis

创建docker image

创建Dockerfile

在当前路径(main.go所在路径)创建Dockerfile文件,内容如下

FROM ubuntu:18.04

COPY mainredis /

CMD ["/mainredis"]

创建docker image

root@k8smaster:~/pageview2# docker build -t pvredis2:v1.0.0 .
Sending build context to Docker daemon  8.668MB
Step 1/3 : FROM ubuntu:18.04
 ---> 2c047404e52d
Step 2/3 : COPY mainredis /
 ---> 629537449ef0
Step 3/3 : CMD ["/mainredis"]
 ---> Running in 171bf813843c
Removing intermediate container 171bf813843c
 ---> 8043e513fbf0
Successfully built 8043e513fbf0
Successfully tagged pvredis2:v1.0.0

运行container

运行redis container

将container命名为db

docker run --name db -d redis

运行web 容器

查看刚刚build的image

root@k8smaster:~# docker images
REPOSITORY                                                        TAG           IMAGE ID       CREATED         SIZE
pvredis2                                                          v1.0.0        8043e513fbf0   17 hours ago    71.9MB

启动容器

以id启动,将容器内部8080端口映射到外部宿主机84端口,并在此容器run时指定连接db容器

root@k8smaster:~/pageview2# docker run -p 84:8080 --link db -d 804

检查

随着curl 本地84端口,web服务会将访问次数计次

root@k8smaster:~/pageview2# curl 0.0.0.0:84
Hello, you're visitor #1.
root@k8smaster:~/pageview2# curl 0.0.0.0:84
Hello, you're visitor #2.

而由于后台有数据库服务,将web容器重启之后,访问次数不会置零,会保持重启前的次数

相关文章

网友评论

    本文标题:docker link 练习

    本文链接:https://www.haomeiwen.com/subject/amncoktx.html