Post

docker入门

docker常用命令

1
2
3
4
5
6
7
8
9
10
11
12
docker images # 显示所有容器镜像
docker ps -all # 列出所有的docker容器(所有状态)
docker pull # 拉取镜像
docker start|stop # 启动或者停止镜像
docker rm docker_name # 删除容器
docker rmi image_name # 删除镜像
docker logs -f docker_name # 查看docker容器日志
docker run --name container_name image_name # 通过镜像启动容器,并为容器命名
docker run -i -t -d -P -p -e key=value docker_name image command # -t 在新容器内制定一个伪终端或终端 -i 允许你对容器内的标准输入进行交互 -d 后台模型运行容器 -P 将容器内部使用的网络端口随机映射到我们使用的主机上 -p 指定映射的端口 -e key=value 设置环境变量
docker exec -it docker_name command # 进入容器,使用该命令退出容器时不会导致容器的停止
docker commit -m "commit info" -a="author" container_id image_name # 创建一个新镜像
docker tag Image_id image_name:new_tag

容器的状态

  • created
  • restarting
  • running
  • removing
  • paused
  • exited
  • dead

docker镜像属性

  • Repository:表示镜像的仓库源
  • TAG:镜像的标签,如果不指定,默认tag为latest
  • IMAGE ID:镜像ID
  • CREATED:镜像创建时间
  • SIZE:镜像大小

Dockerfile

  • Dockerfile的指令没执行一次都会在docker上新建一层,过多无意义的层,会造成镜像膨胀过大
  • 可以使用&&连接符连接命令,这样只会创建一层镜像
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 第一阶段:构建阶段 定制的镜像是基于FROM的镜像,后续的操作都是基于nginx操作
FROM golang:1.19 AS builder

# 设置工作目录
WORKDIR /app

# 复制 Go 源码到工作目录, COPY <src> <dest> src是宿主机的目录 dest是镜像的目录
COPY . .

# 编译 Go 应用程序
RUN go build -o hello

# 第二阶段:运行阶段 alpine Linux 是一个轻量级的 Linux 发行版镜像
FROM alpine:latest 

# 设置工作目录
WORKDIR /app

# 从构建阶段复制编译后的二进制文件到运行阶段
COPY --from=builder /app/hello .

# 运行二进制文件
CMD ["./hello"]
  • 基于dockerfile创建镜像
1
2
3
4
docker build -t image_name:image_tag context_path 
# 使用build命令创建镜像
# 需要在dockerfile文件存放的目录下 执行该命令
# context_path 用于指定上下文的目录,即宿主机的目录,用于传送文件到镜像目录
This post is licensed under CC BY 4.0 by the author.