Featured image of post Docker 基本介绍

Docker 基本介绍

介绍

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),
几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或包括系统。

Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。

关于CEEE的区别可以查看此篇文章:https://pal.run/articles/2019/12/21/1576858672872.html

安装

Centos 7.4 安装 Docker: 传送门

镜像

Docker 镜像是用于创建 Docker 容器的模板。

镜像操作

拉取 nginx 镜像

1
sudo docker pull nginx

镜像列表

1
sudo docker images

删除镜像

1
sodu docker rmi <image id>

要删除全部 image 的话

1
docker rmi $(docker images -q)

删除指定的镜像

1
docker rmi mysql:latest

Dockerfile build 镜像

1
docker build <目录> -t <镜像名>

容器

容器是独立运行的一个或一组应用。

容器操作命令

查看启动容器

1
sudo docker ps

删除容器

1
docker rm <CONTAINER ID>

删除所有容器:

1
docker rm $(docker ps -a -q)

自定义镜像

Dockerfile:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 一般的,Dockerfile 分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。
# ’#’ 为 Dockerfile 中的注释。

FROM golang:alpine as GO_BUILD
ENV GOPROXY=https://goproxy.io
ENV GO111MODULE=on
ENV GOPATH=/golang

# WORKDIR 相当于cd
WORKDIR $GOPATH/src/github.com/test
ADD ./ $GOPATH/src/github.com/test
ADD ./ $GOPATH/src/github.com/test
RUN go mod download
RUN GOOS=linux CGO_ENABLED=0 go build -ldflags="-s -w" -installsuffix cgo -o cvs

# Base images 基础镜像
FROM scratch as prod
# MAINTAINER 维护者信息
MAINTAINER ydq

COPY --from=GO_BUILD /golang/src/github.com/test/ /opt/
# RUN apk add --no-cache ca-certificates tzdata

ENV TZ=Asia/Shanghai
# EXPOSE 映射端口
EXPOSE 9999

ENTRYPOINT ["/opt/test"]