Docker使用 | 青训营
Docker使用 | 青训营
什么是Docker ---- Docker类似一种虚拟机
通过架构图我们可以看到docker是在操作系统(OS)上面的一层,他不会像虚拟机一样模拟整个OS,所以在可以保证虚拟化的功能的前提下,他比虚拟机更加轻量。同时能保证在任意的环境都能运行,即与OS隔离
基本概念
docker种存在几个比较重要的概念
此处不讲解具体内部细节
只讲怎么简单方便的理解和使用
- 容器(Container)
- 镜像(Image)
- 数据卷(Volume)
容器
容器就可以看作一个个小的虚拟机,上面模拟这一个系统,运行着程序,对外提供服务
镜像
容器的一个备份,方便让别人使用
数据卷
容器和宿主主机的共享文件夹
下载安装
Windows
Docker: Accelerated, Containerized Application Development
去官网,然后下载Docker Desktop安装即可
Linux
Install Docker Engine | Docker Documentation
按照这个文档来按照
以Ubuntu举例子
Ubuntu
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
验证
sudo docker run hello-world
用docker部署go
一个简单的go项目
// main.go
package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
r.GET("/ping", func(ctx *gin.Context) {
ctx.JSON(http.StatusOK, gin.H{
"message": "pong",
})
})
r.Run()
}
// go.mod
module docker-example
go 1.20
这样我们的一个简单的http应用就做好了,通过GET请求,请求http://localhost:8080/ping
就会返回一个json
测试一下
运行
go run .
在浏览器打开http://localhost:8080/ping
成功
然后关闭
但是如果我需要这个服务一直运行,而不是关闭bash就停止,那么就需要用docker了
Dockerfile
通过编写Dockerfile我们可以构建自己的镜像,然后运行(搞个虚拟机一直运行我们的go程序)
我们在go.mod的同级目录下创建一个Dockerfile
├── Dockerfile
├── go.mod
└── main.go
然后我们在Dockerfile中写入一下内容
FROM golang:1.20
ENV GO111MODULE=on \
GOPROXY="https://goproxy.cn,direct" \
GO_MODE=release
WORKDIR /app
ADD . /app
RUN go build .
ENTRYPOINT ["./docker-example"]
我们来一行行解释
FROM golang:1.20
我们需要编译运行go程序,所以我们需要基于golang这个docker image来构建我们的程序
ENV GO111MODULE=on \
GOPROXY="https://goproxy.cn,direct" \
GO_MODE=release
我们需要设定一些环境变量让go顺利编译,同时因为是生产环境,所以GO_MODE=release
WORKDIR /app
WORKDIR
表示在Container中我们程序的工作目录
ADD . /app
将.
目录下的所有文件添加到Container中的/app
目录下
RUN go build .
RUN
就是在WORKDIR
目录下执行命令,即在/app
目录下执行go build .
构建镜像
sudo docker build -t docker-example .
-t
表示构建的镜像的标签(tag)也就是名字
.
表示Dockerfile的位置
运行镜像
sudo docker run -d -p 9999:8080 docker-example
-d
表示后台运行 即退出bash以后也不会停止运行
-p
指定端口将container内部的8080端口放到宿主机的9999端口
这个时候我们再去访问http://localhost:9999/ping
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfhaggc
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01