Docker常用指令汇总

前言

  本篇文章主要汇总了项目开发过程中常用的docker命令,以便后续查询。

1. docker镜像篇

1.1 拉取镜像

  只需要给出镜像的名字和标签,就能在官方仓库中定位一个镜像,命令的格式如下:

docker [image] pull repository[:<tag>]

# Ubuntu镜像的拉取
# docker image pull ubuntu:latest
# docker pull ubuntu:20.04
# docker pull ubuntu

# 加载本地的镜像文件
docker load -i ubuntu_18.04.tar
# 导出镜像
docker save -o ubuntu_18.04.tar ubuntu:18.04

  一般来说,镜像的latest标签意味着该镜像的内容会跟踪最新版本的变更而变化,内容是不稳定的。因此,从稳定性上考虑,不要在生产环境中忽略镜像的标签信息或使用默认的latest标记的镜像。

1.2 查看镜像信息

  列出本地主机上已有镜像的基本信息:

docker images [ls]

REPOSITORY: 来自于哪个仓库,比如ubuntu表示ubuntu系列的基础镜像
TAG:		镜像的标签信息,比如18.04、latest表示不同的版本信息。标签只是标记,并不能标识镜像内容
IMAGE ID:	镜像唯一标识,如果两个镜像的ID相同,说明它们实际上指向了同一个镜像,只是具有不同标签名称而已
CREATED:	镜像最后的更新时间(创建时间)
SIZE:		镜像大小(优秀的镜像往往体积都较小)

  为了方便在后续工作中使用特定镜像,还可以使用docker tag命令来为本地镜像任意添加新的标签:

 docker tag ubuntu:latest myubuntu:latest
 # 此时从本地主机上的镜像信息中就可以看到多了一个myubuntu:latest标签的镜像

1.3 搜寻镜像

  使用docker search命令可以搜索Docker Hub官方仓库中的镜像:

# 搜索官方提供的带nginx关键字的镜像
docker search --filter=is-official=true nginx

# 搜索所有收藏数超过4且关键词包括tensorflow的镜像
docker search --filter=stars=4 tensorflow

# -f,--filter:过滤输出内容;
# --format:格式化输出内容;
# --limit:限制输出结果个数,默认为25个;
# --no-trunc:不截断输出结果

1.4 删除镜像

  当不再需要某个镜像的时候,可以使用docker rmidocker image rm命令来删除该镜像:

# 通过tag来删除镜像
docker rmi name:tag

# 通过id来删除镜像
docker rmi image-id		# 会先尝试删除所有指向该镜像的标签,然后删除该镜像文件本身

# -f,-force:强制删除镜像,即使有容器依赖它(不建议使用)
# -no-prune:不要清理未带标签的父镜像

  如果被删除的镜像上存在运行状态的容器,那么删除操作不会被允许(默认)。通常并不推荐使用-f参数来强制删除一个存在容器依赖的镜像。正确的做法是,先删除依赖该镜像的所有容器,再来删除镜像。

docker ps		# 查看本机上运行中的容器
docker ps -a	# 查看本机上存在的所有容器(包括已经停止运行的)

docker stop cotianername/containerid	# 停止容器
docker start cotianername/containerid	# 启动容器
docker rm cotianername/containerid		# 删除容器

docker exec -it containername/containerid /bin/bash	# 进入
exit	# 退出容器

1.5 推送镜像

# 将本地镜像推送到服务器
# 登录镜像服务器
docker login 服务器域名(默认是docker hub)
# 给镜像打标签
docker tag 镜像ID 服务器域名/镜像名:tag
# 推送镜像
docker push 服务器域名/镜像名:tag

2. docker容器篇

2.1 创建并启动容器

  可以使用docker [container] create命令新建一个容器:

# -it 交互式
docker create -it ubuntu:latest

  使用docker [container] create命令新建的容器处于停止状态,可以使用docker [container] start命令来启动它:

docker start CONTAINER-ID

  当然,也可以直接使用docker [container] run命令来新建并启动容器:

# 后台模式启动容器,并输出`Hello world`
docker run ubuntu:latest /bin/echo 'Hello world'
# 等价于先执行docker [container] create命令,再执行docker [container] start命令

# 交互式
docker run -it ubuntu:18.04 /bin/bash

# -t: 让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上
# -i: 让容器的标准输入保持打开
# 更多的命令选项可以通过man docker-run 命令来查看

2.2 查看容器输出

  要获取容器的输出信息,可以通过docker [container] logs命令:

docker logs CONTAINER-ID

# -details:打印详细信息;
# -f,-follow:持续保持输出;
# -since:输出从某个时间开始的日志;
# -tail:输出最近的若干日志;
# -t,-timestamps:显示时间戳信息;
# -until:输出某个时间之前的日志

2.3 停止容器

  可以使用docker [container] pause命令来暂停一个运行中的容器:

docker pause CONTAINER-ID	# 处于paused状态

# 恢复到运行状态
docker unpause CONTAINER-ID

  使用docker [container] stop来终止一个运行中的容器:

docker stop CONTAINER-ID	# 处于stop状态
# 此时,执行docker container prune命令,会自动清除掉所有处于停止状态的容器

  处于终止状态的容器,可以通过docker [container] start命令来重新启动:

docker start CONTAINER-ID
# docker [container] restart命令会将一个运行态的容器先终止,然后再重新启动

2.4 进入容器

  在使用-d参数时,容器启动后会进入后台,用户无法看到容器中的信息,也无法进行操作。这个时候如果需要进入容器进行操作,推荐使用官方的attachexec命令。

docker [container] attach CONTAINER

docker [container] exec CONTAINER COMMAND(推荐)

2.5 删除容器

  可以使用docker [container] rm命令来删除处于终止或退出状态的容器:

docker rm CONTAINER

2.6 更新容器(镜像)

  如果在容器中新安装了某些库或软件,下次新运行时就不需要再次安装了,可以使用docker commit命令来更新镜像:

docker commit CONTAINER-ID NEW-IMAGE-NAME

2.7 查看容器(镜像)元数据

  即使启动时不挂载目录,docker容器运行时也会在主机上有一个运行目录,一般是在/var/lib/docker。使用inspect指令可以查看容器或镜像的详细信息,包括配置、网络设置、挂载的卷等。

docker inspect CONTAINER-ID
# 比如neo4j异常关闭时,需要删除对应的pid文件才能重新启动,这个时候就需要使用inspect找到容器运行时在主机的缓存地址(UpperDir)

3. 关于docker run

  docker run 表示创建一个新的容器并运行一个镜像。

docker run [option] image-name [the first command to execute after entering the container]
optiondesc
-d在后台运行容器并打印容器 ID
-p指定端口映射 local port:docker port
-P随机端口映射
--name为容器指定一个名字
-i以交互模式运行容器
-t容器启动后会进入其命令行
-it-i-t的组合,容器创建就能登录进去,即分配一个伪终端
-u用户名
-v文件目录映射
-w容器内的工作目录

  docker 官方镜像库----> dockerhub

4. Dockerfile

  Dockerfile是一个包含一系列命令的文本文件,用来创建Docker镜像。

FROM python:3.8	# 定义基础镜像

MAINTAINER "chatGLM"	# 镜像的作者

COPY configs /chatGLM/configs	# 复制本地的configs目录到镜像

COPY webui.py /chatGLM/	# 复制本地的webui.py文件到镜像

WORKDIR /chatGLM	# 设置工作目录(切换到镜像中的指定路径,可以代替cd指令)

RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn	# 执行pip指令

CMD ["python", "-u", "webui.py"]	# 指定在启动时需要执行的命令

  在Dockerfile所在目录执行docker build .来构建镜像。

docker build -f your-dockerfile -t xxx:latest .
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏小悠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值