问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Docker入门教程:创建镜像并运行容器

创作时间:
作者:
@小白创作中心

Docker入门教程:创建镜像并运行容器

引用
CSDN
1.
https://m.blog.csdn.net/weixin_60214397/article/details/142147327

本文将详细介绍如何使用Docker创建自己的镜像并运行容器。通过一个简单的"Hello, world!"程序,我们将演示从准备工作、编写测试应用、构建镜像到运行容器的完整流程。

前言

使用Docker的镜像可以快速创建和部署应用,大大节约了部署的时间。Docker的镜像提供了除内核外完整的运行时环境,确保代码的环境一致性,从而避免了"这段代码在我机器上没问题"这类问题的出现。那么,如何创建一个镜像来运行自己的应用呢?让我们通过一个简单的尝试来了解这个过程。

1、准备工作

  • 首先需要准备一个Linux环境,这里使用的是Ubuntu 20.04。
  • 其次,需要安装好Docker。可以通过以下命令查看当前操作系统中是否安装了Docker:
    docker info
    
  • 通过VSCode连接到Linux环境,并安装好Go语言。

2、编写测试应用

创建一个文件夹docker-test,用来编写测试应用。

首先进行初始化,在当前的docker-test目录下执行以下命令,创建go.mod文件:

go mod init docker-test

然后,创建一个main.go文件,内容如下:

package main

import (
    "fmt"
    "time"
)

func main() {
    for {
        fmt.Println("Hello, world!")
        time.Sleep(10 * time.Second)
    }
}

这个文件只会每隔10秒输出一次"Hello, world!"。

为了在容器中可以编译运行Go语言程序,需要下载一个Go官方提供的预装Go编译器的Docker镜像。执行以下命令下载golang镜像:

docker pull golang:latest

使用以下命令查看当前系统中已经下载的镜像:

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-test:lastest:

docker images

3.2 运行容器

现在,已经构建好了镜像,可以运行容器了。执行以下命令运行容器:

docker run -d -it --name docker-test docker-test:latest

其中:

  • -d:后台运行容器
  • -it:交互式运行容器,进入容器后可以输入命令
  • --name:为容器指定一个名称
  • docker-test:latest:运行的镜像名称

执行完成之后,运行以下命令,可以看到新运行的容器,容器的名称为docker-test:

docker ps

3.3 进入容器,查看效果

容器运行成功后,可以通过以下命令查看容器的日志:

docker logs docker-test

可以看到,容器已经打印出多次"Hello, world!"。

也可以通过以下命令查看实时打印的消息:

docker attach

执行以下命令进入容器:

docker exec -it docker-test /bin/bash

发现容器已经进入容器的/app目录,即在Dockerfile中设置的工作目录。

执行以下命令,可以看到docker-test目录下的所有文件已经成功复制到镜像的工作目录中:

ls -l

4、总结

本文介绍了如何创建自己的镜像并运行容器,通过这个例子,可以更加熟悉Dockerfile的编写,以及Docker镜像的相关操作。

文章参考了《docker从安装到部署项目,一篇文章教会你》。想要学习更多docker知识的小伙伴可以移步大佬的文章。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号