Docker使用

一,Docker基础命令

1
2
3
4
5
6
7
启动Docker:systemctl start docker

关闭Docker:systemctl stop docker

重启Docker:systemctl restart docker

查看Docker运行状态:systemctl status docker

你可以使用docker –help来查看所有可用的Docker命令。

查看Docker版本和信息

1
2
3
4
查看Docker版本:docker version

查看Docker基础配置信息:docker info

镜像管理

1
2
3
查看本地所有镜像:docker images

删除镜像:docker rmi -f 镜像id或name

容器管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
列出运行中的容器:docker ps

查看所有容器(包括未运行):docker ps -a

停止容器:docker stop 容器id或name

强制停止容器:docker kill 容器id

启动已停止的容器:docker start 容器id或name

查看容器的所有信息:docker inspect 容器id

查看容器日志:docker container logs 容器id

查看容器里的进程:docker top 容器id

删除已停止的容器:docker rm 容器id或name

删除正在运行的容器:docker rm -f 容器id

二,RUN docker镜像命令及相关参数

常用参数

option 作用
-i 以交互模式运行容器,通常与 -t 同时使用
-t 启动容器后,为容器分配一个命令行,通常与 -i 同时使用
-v 目录映射,容器目录挂载到宿主机目录,格式: <host目录>:<容器目录>
-d 守护进程,后台运行该容器
-p 指定端口映射,格式:主机(宿主)端口:容器端口
-P 随机端口映射,容器内部端口随机映射到主机的端口(49153起始 49153到65535)
-u 以什么用户身份创建容器
–-name 容器名字
-m,–-memory bytes 设置容器使用内存最大值
-h, –hostname string 指定容器的 host name
–dns 8.8.8.8 指定容器 dns 服务器
-e username=“ritchie” 设置环境变量
–-restart Docker 重启后,容器是否自动重启
–-privileged 容器内是否使用真正的 root 权限

例如,要运行一个名为tomcat,tag为7的镜像,并设置容器名为tomcat_hogwarts,可以使用以下命令:

1
docker run --name tomcat_hogwarts tomcat:7

shell通常启动参数-itd一起使用这样将会后台运行容器,如果你想在后台运行容器并使用exec进入容器,可以这样做:

1
docker run -itd --name tomcat_hogwarts ubuntu:23.10

如果你想将容器的某个端口映射到主机的端口,可以使用-p参数,将容器端口映射到主机,将容器的8080映射到主机的8888

1
docker run -itd -p 8888:8080 --name tomcat_salah tomcat:7

如果你想将容器的目录挂载到宿主机的目录,可以使用-v参数,容器目录挂载到宿主机目录,将容器的/usr/local/webapps映射到主机的/usr/local/webapps。重点:挂载的容器目录有文件时,会被覆盖,导致容器内目录被清空。可以使用数据卷的方式解决

1
docker run -itd -v /usr/local/webapps:/usr/local/webapps--name tomcat_salah tomcat:7

如果你想以root权限运行容器,可以使用–privileged参数,一般是用不上

1
docker run -d --user root --name jenkin_hogwarts --privileged=true jenkins/jenkins

进入容器,c1d2579d46fb为容器id。以bash进行交互,-i :即使没有附加也保持STDIN 打开, -t :分配一个伪终端

1
docker exec -it c1d2579d46fb /bin/bash

三,commit 将正在运行的容器进行打包

你可以使用docker commit命令将正在运行的容器打包成一个新的镜像。以下是基本语法和示例:
基础语法:

1
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

OPTIONS说明:

  • -a :提交的镜像作者;
  • -c :使用Dockerfile指令来创建镜像;
  • -m :提交时的说明文字;
  • -p :在commit时,将容器暂停。

将容器ID为a404c6c174a2,新建镜像,为mymysql:v1

1
docker commit -a "runoob.com" -m "my apache" a404c6c174a2  mymysql:v1 

四,build构建镜像

常用参数

选项 描述
-f, –file string Dockerfile的名称(默认为’路径/Dockerfile’)
–build-arg list 设置构建时的变量
–cache-from strings 将镜像视为缓存源
–disable-content-trust 跳过镜像验证(默认为true)
-t, –tag list 镜像的名称和标签,格式为’name:tag’(默认为[])
–target string 设置目标构建阶段
-m, –memory string 内存限制
–network string 设置构建过程中的网络模式(默认为”default”)
–no-cache 在构建过程中不使用缓存
–pull 总是尝试拉取基础镜像的新版本
–quiet 隐藏构建输出,在成功后只打印镜像ID
–rm 在成功构建后删除中间容器(默认为true)
–shm-size string /dev/shm 的大小,默认值为64MB
–squash 将新构建的层压缩成单个新层
–ulimit ulimit Ulimit选项(默认为[])
–compress 使用gzip压缩构建上下文

基础操作,更具当前项目下的Dockerfile,进行打包,镜像名为my-image,tag为tag,使用push进行上传至git仓库

1
2
docker build -t my-image:tag .
docker push my-image:tag

Dockerfile示例

1
2
3
4
5
6
7
8
FROM ubuntu:23.10
ADD ./cmd/parse_file/main /binary/
RUN mkdir -p /usr/share/zoneinfo/Asia
COPY ./Shanghai /usr/share/zoneinfo/Asia/
RUN echo "/binary/main \$1" > /binary/entrypoint.sh
WORKDIR /parse_file
ENTRYPOINT []
CMD [ "curl", "-s", "http://ip.cn" ]

FROM 指定基础镜像 使用ubuntu:23.10

ADD 指令和 COPY 的格式和性质基本一致。但是在 COPY 基础上增加了一些功能。在 COPYADD 指令中选择的时候,可以遵循这样的原则,所有的文件复制均使用 COPY 指令,仅在需要自动解压缩的场合使用 ADD

RUN 指令是用来执行命令行命令的。由于命令行的强大能力,RUN 指令在定制镜像时是最常用的指令之一。

WORKDIR 指令可以来指定工作目录(或者称为当前目录),以后各层的当前目录就被改为指定的目录,如该目录不存在,WORKDIR 会帮你建立目录。

ENTRYPOINT 的目的和 CMD 一样,都是在指定容器启动程序及参数。ENTRYPOINT 在运行时也可以替代,不过比 CMD 要略显繁琐,需要通过 docker run 的参数 --entrypoint 来指定。

五,Docker清理

一、概述

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。然而,随着Docker使用时间的增长,无用的数据(如停止的容器、无用的网络和挂载卷等)可能会占用大量的磁盘空间。因此,定期清理Docker系统变得非常重要。本文档将介绍如何使用Docker命令行工具进行Docker系统清理。

二、Docker系统清理命令

Docker提供了一个非常有用的命令docker system prune,用于清理未使用的数据。这个命令可以删除所有停止的容器、所有未使用的网络、所有悬空的镜像以及所有未使用的构建缓存。

命令的基本语法如下:

1
2
3
4
5
6
docker system prune [OPTIONS]
其中,[OPTIONS]是可选的参数,包括:

-a, --all: 删除所有未使用的镜像,而不仅仅是悬空的镜像

--volumes: 同时删除所有未使用的挂载卷

例如,要删除所有未使用的数据(包括容器、网络、镜像和挂载卷),可以运行以下命令:

1
docker system prune -a --volumes

三、注意事项

在运行docker system prune命令之前,请确保您不再需要任何停止的容器、未使用的网络、悬空的镜像或未使用的挂载卷。一旦这些数据被删除,就无法恢复。

如果您正在使用Docker Compose,并且希望删除由Compose创建的所有未使用的数据,可以使用docker-compose down –volumes命令。这个命令会停止并删除Compose定义的所有服务,同时删除关联的网络、挂载卷和容器。

四、总结

Docker系统清理是保持Docker运行环境高效、整洁的重要步骤。通过使用docker system prune命令,您可以轻松地删除所有未使用的数据,释放磁盘空间,提高Docker的运行效率。但是,请注意在删除数据之前进行确认,以免误删重要信息。


Docker使用
https://flyfishs.top/2024/05/06/Docker使用/
作者
飞鱼
发布于
2024年5月6日
许可协议