了解 Docker

2025-06-10

了解 Docker

深入 Docker

什么是 Docker?

Docker 是一个开放平台,供开发人员和系统管理员在笔记本电脑、虚拟机或云端构建、交付和运行分布式应用程序。Docker 广泛用于以容器化形式运行多个应用程序。例如:一个容器可以充当 Web 服务器来运行应用程序,另一个容器可以处理 Web 应用程序使用的 MySQL 数据库。来源: 维基百科

docker 用在什么地方?

Docker 的应用场景非常广泛,如今的软件包虚拟化运行方式更加高效、快速且安全。那么,为什么不选择 Docker 呢?

让我们举一个简单的例子:假设你的朋友想分享一个项目,这个项目需要最新版本的 Golang、MySQL 数据库和 nginx Web 服务器……现在,要手动运行这个项目,你需要在本地机器上安装相同版本的 Go 系统文件、MySQL 和 Web 服务器。你还需要解决版本配置问题。

为了摆脱这个麻烦,让我们将我们的项目docker化。

首先,编写一个简单的 docker 文件。在你的 root_project 目录中创建一个名为 Dockerfile 的文件名。

FROM amd64/golang:1.10.3
WORKDIR /go/src/app
COPY . .
RUN go get -u github.com/gorilla/mux
RUN go get github.com/pilu/fresh
RUN go get github.com/sirupsen/logrus 
CMD ["fresh"] 

Enter fullscreen mode Exit fullscreen mode

让我们深入研究一下我们创建的脚本

FROM amd64/golang:1.10.3

使用 go 版本 go:1.10.3 拉取 docker 远程仓库

WORKDIR /go/src/app

定义 docker 容器内的工作目录。

COPY . .

将当前工作目录复制到 docker 容器内的 /go/src/app。

RUN go get -u github.com/gorilla/mux
RUN go get github.com/pilu/fresh
RUN go get github.com/sirupsen/logrus

安装不同的软件包取决于您的项目。在这里,我安装了 /gorilla/mux,它实现了请求路由器和调度器,用于将传入的请求匹配到相应的处理程序。/pilu/fresh 是一个命令行工具,它会在您每次保存代码时构建并(重新)启动您的 Web 应用程序。同样,logrus 用于记录状态数据。请记住,这些软件包并非必需,会根据您的需求进行调整。

CMD ["fresh"]

成功构建并运行 Dockerfile 后,CMD 就会运行。如果你想运行某个命令,就这么简单,使用 CMD。这里我使用了 fresh 命令,因为当我们 docker run 或 project 时,它会自动在 docker 内部的命令中运行。

一旦我们的docker文件准备好了,就可以构建你的docker应用程序

docker build -t docker-golang.

构建 docker 应用程序,其中 -t 标志是为构建的存储库或图像指定的名称,就这么简单。

一旦成功构建镜像,就可以运行

docker run -d -p 8090:8090 -v $(pwd):/go/src/app  --env EXAMPLE_ENV_SETUP=test_value_env --name golang-env docker-golang
Enter fullscreen mode Exit fullscreen mode

docker run 命令运行上面创建的镜像,其中:

-d //runs docker image in backgroud (optional)
-p is the port number to run the docker,left:right indicates the port to run outside and inside docker container.
-v //volume created that represents the direcory of file outside and inside docker repository
--env //enviroment value needed while running the project
--name //name of the container which makes easy to remember rather using container id 
--docker-golang //name of image or image id you created while building docker
Enter fullscreen mode Exit fullscreen mode

docker以守护进程模式运行后,用于

docker ps

了解docker内部正在运行的实例。

输出:

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
ed07831e976a        docker-icinga-env   "fresh"             About an hour ago   Up About an hour    0.0.0.0:8090->8090/tcp   golang-env
Enter fullscreen mode Exit fullscreen mode

现在,您在 docker 中有一个正在运行的实例,您可以通过浏览器localhost:8090访问它

现在,在正在运行的容器中运行以下命令:

docker exec -it <runnning container name or id> /bin/bash

这将在容器 golang-env 中创建一个新的 Bash 会话。此命令将带你进入正在运行的命令,你可以在其中查看日志并执行任何你想做的事情,因为你有一个正在运行的实例。就这么简单

鏂囩珷鏉ユ簮锛�https://dev.to/samsha1/walk-through-docker-5bm3
PREV
开源的意外领导力
NEXT
让我们构建并部署一个 FARM Stack 应用程序