网站封装,泰州公司注册,wordpress文章点击数插件,wordpress代码高亮插件docker-01 创建一个自己的镜像并运行容器
前言
我们都知道使用Docker的镜像可以快速创建和部署应用#xff0c;大大的节约了部署的时间。并且Docker 的镜像提供了除内核外完整的运行时环境#xff0c;确保代码的环境一致性#xff0c;从而不会在出现这段代码在我机器上没问…docker-01 创建一个自己的镜像并运行容器
前言
我们都知道使用Docker的镜像可以快速创建和部署应用大大的节约了部署的时间。并且Docker 的镜像提供了除内核外完整的运行时环境确保代码的环境一致性从而不会在出现这段代码在我机器上没问题这类问题。
但是如果我们想创建一个镜像来运行自己的应用该怎么做呢我们在这里进行一个简单的尝试。
1、准备工作
首先我们要准备一个Linux环境这里我使用的是Ubuntu 20.04。其次我们需要安装好Docker。可以通过docker info命令查看当前操作系统中是否安装了docker。通过vscode连接到Linux环境并安装好Go语言。
2、编写测试应用
我们创建一个文件夹docker-test用来编写测试应用。
首先进行初始化在当前的docker-test目录下执行go mod init docker-test命令创建go.mod文件。
然后创建一个main.go文件内容如下
package mainimport (fmttime
)func main() {for {fmt.Println(Hello, world!)time.Sleep(10 * time.Second)}
}这个文件只会每隔10秒输出一次Hello, world!。
为了在容器中可以编译运行Go语言程序我们需要下载一个Go 官方提供的预装 Go 编译器的 Docker 镜像。
执行docker pull golang:latest命令下载golang镜像。
使用docker images查看当前系统中已经下载的镜像。 出现golang:latest镜像说明已经成功下载了golang:latest镜像。
3、构建镜像并运行容器
3.1 构建镜像
现在我们已经准备好了测试应用可以开始构建镜像了。 我们需要在当前docker-test目录下创建一个Dockerfile文件用于构建镜像内容如下
# 使用官方 Go 镜像作为基础镜像
FROM golang:latest# 设置工作目录
WORKDIR /app#将当前目录下的所有文件复制到镜像的工作目录中
COPY . .# 构建 Go 应用
RUN go build -o main main.go# 运行可执行文件# 运行 go 程序CMD在启动容器时才执行此行。RUN构建镜像时就执行此行
CMD [./main]这个Dockerfile文件中我们使用golang:latest作为基础镜像设置工作目录为/app将当前目录下的所有文件复制到镜像的工作目录中构建Go应用并运行可执行文件。
执行docker build -t docker-test:latest . 命令构建镜像。
其中docker-test 是镜像的名称。latest 是镜像的标签tag。如果不指定 -t 选项则 Docker 会为镜像分配一个默认的无标签状态。
标签帮助我们管理不同版本的镜像。例如可以有 docker-test:1.0, docker-test:2.0 等版本。latest表示最新版本。
最后的. 表示构建上下文路径构建镜像时默认会在上下文路径中查找名为 Dockerfile 的文件并依据这个文件来构建镜像。如果你想依据其他文件来构建镜像或者Dockerfile在其他路径下你可以用 -f 选项来指定 Dockerfile 的路径。
执行完成之后再次运行docker images命令可以看到我们新构建的镜像 docker-testlastest。 3.2 运行容器
现在我们已经构建好了镜像可以运行容器了。
执行docker run -d -it --name docker-test docker-test:latest命令运行容器。
其中
-d: 后台运行容器-it: 交互式运行容器进入容器后可以输入命令–name: 为容器指定一个名称docker-test:latest: 运行的镜像名称
执行完成之后运行docker ps命令可以看到我们新运行的容器,容器的名称为docker-test。
3.3 进入容器查看效果
容器运行成功后我们可以通过docker logs docker-test命令查看容器的日志。
可以看到容器已经打印出多次Hello, world!。
也可以通过docker attache查看实时打印的消息。
执行docker exec -it docker-test /bin/bash命令进入容器。
发现容器已经进入容器的/app目录即我们在 Dockerfile中设置的工作目录。 执行ls -l命令可以看到 docker-test 目录下的所有文件已经成功复制到镜像的工作目录中。 4、总结
本文介绍了如何创建自己的镜像并运行容器通过这个例子我们可以更加熟悉Dockerfile的编写以及Docker镜像的相关操作。 文章参考了docker从安装到部署项目一篇文章教会你。想要学习更多docker知识的小伙伴可以移步大佬的文章。