? 本文主要从以下几个方面简要介绍一下docker以及简单demo使用,并不会深入分析docker的原理等内容。
一、什么是docker
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包其应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,实现了应用程序与基础设施的隔离,使应用程序能够从一个计算环境快速可靠地运行到另一个计算环境,达到快速交付、测试和部署。
二、docker解决什么问题
本质上是解决物理机部署过程中存在的问题:
1 成本高 - 需要购买一台实体机器,没办法共享 2 部署慢 - 发布一个应用需要走漫长的流程 3 资源浪费 - 平时应用实际用不到那么多物理资源 4 硬件限制 - 不同硬件厂商有兼容问题 5 不利于迁移扩展 - 如果想迁移到其他服务器上,需要重头打包配置应用依赖
三、docker基本概念
四、docker常用命令
docker images 显示所有镜像信息 docker ps 显示所有正在运行的容器信息 docker ps -a 显示所有容器信息 docker run 镜像名称 docker运行一个容器 docker build -t 镜像名称 根据dockerfile构建镜像 docker stop/start 容器id 暂停/启动容器 docker rm 容器id 删除所有暂停的容器 docker rmi 镜像名称 删除镜像 docker exec -ti 容器id /bin/bash 交互方式进入docker docker logs -f 跟踪容器日志 docker cp 容器ID:file-path local-path 将容器内的文件复制到本机
五、docker 示例说明
示例是用go写的一个财经信息推送的服务,项目见【https://github.com/HelloMrShu/cls-go】
1 非docker模式运行
1 go build -o ./bin/finance 2 ./bin/finance &
2 docker模式运行 Dockerfile指令
创建Dockerfile文件,内容如下:
FROM golang:1.16
ENV TZ=Asia/Shanghai
ENV GO111MODULE=on
ENV GOOS=linux
ENV GOPROXY=https://goproxy.cn
WORKDIR /opt/projects/cls
COPY . /opt/projects/cls
ADD go.mod .
RUN go mod download
RUN go build .
ENTRYPOINT ["./finance"]
1 在项目目录下,执行docker build -t cls . ,构建镜像 2 docker run cls 运行容器 3 ps aux | grep finance 查看是否正常运行
|