Docker常见用法
Ⅰ. 帮助启动类命令 启动 docker
systemctl start docker
停止 dockersystemctl s docker
重启 dockersystemctl restart docker
查看 docker 状态systemctl status docker
开机启动systemctl enable docker
查看 docker 信息docker info
查看 docker 帮助文档docker --help
查看 docker 命令帮助文档docker 具体命令 --help
Ⅱ. 镜像类命令 docker images列出本地主机上的镜像
- REPOSITORY: 仓库镜像的仓库源
- TAG: 镜像的标签版本号(同一仓库源可以有多个 TAG 版本,使用 REPOSITORY:TAG 来定义不同的镜像)
- IMAGE ID: 镜像 ID
- CREATED: 镜像创建时间
- SIZE: 镜像大小
选项
- -a: 列出本地所有的镜像
- -q: 只显示镜像 ID
在 hup 服务器上寻找镜像,如果没有配置国内镜像默认就是在 hup.docker. 上查找。
- NAME: 镜像名称
- DESCRIPTION: 镜像说明
- STARS: STAR 数
- OFFICIAL: 是否是官方的
- AUTOMATED: 是否是自动构建的
选项
- –limit: 只列出 N 个镜像,默认 25 个
拉取指定镜像
如果没有指定 TAG,默认就是最新版,即 docker pull ubuntu:latest
docker system df查看镜像/容器/数据卷所占用的空间
docker rmi删除某个镜像
删除单个docker rmi -f 镜像ID
删除多个docker rmi -f 镜像名1:TAG 镜像名2:TAG
删除全部docker rmi -f $(docker images -qa)
Ⅲ. 容器类命令 新建并启动容器docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
选项
- –name=“容器的名字”
- -d 后台运行容器并返回容器 ID,也即启动守护式容器
- -i 以交互模式运行容器,通常跟 -t 使用
- -t 为容器重新分配一个伪 tty(终端),通常与 -i 使用
- -P(大写)随机端口映射
- -p(小写)指定端口映射
docker ps
选项
- -a 列出所有容器,不加 -a 只会显示正在运行的容器
- -l 显示最近创建的容器
- -n 显示最近 n 个创建的容器
- -q 只显示容器 ID
两种退出方式
- exit 退出,容器停止
- ctrl + p ctrl + q 退出,容器不停止
docker start 容器ID或者容器名
停止容器docker s 容器ID或者容器名
强制停止容器docker kill 容器ID或者容器名
删除已停止的容器docker rm 容器ID或者容器名
没有停止的容器加上选项 -f 既可以删除。
一次性删除多个容器实列 docker rm -f $(docker ps -aq) 或者 docker ps -a -q | xargs docker rm
启动守护式容器(后台服务器)docker run -d 镜像名
请注意,虽然是叫做守护容器,如果你的容器内部没有一个前台进程,即使是使用 docker run -d 运行的容器也会马上结束。
,需要将我们要运行的程序以前台进程的形式进行,如下图所示
查看容器日志docker logs 容器ID或者容器名
查看容器内运行的进程docker 容器ID或者容器名
查看容器内部细节docker inspect 容器ID或者容器名
进入正在运行的容器docker exec -it 容器ID或容器名 shell
docker attach 容器ID或容器名
attach 直接进入容器启动命令的终端,不会启动新的进程,用 exit 退出,会导致容器的停止。
exec 是在容器中打开新的终端,并且可以启动新的进程,用 exit 退出,不会导致容器的停止。
推荐用 docket exec 进入正在运行的容器。
从容器内拷贝文件到主机上容器->主机
docker cp 容器ID或容器名:容器内路径 目的主机路径
主机->容器
docker cp 文件名 容器名:容器内路径
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ObynC2F-1660483281740)(https://incipe.oss--shenzhen.aliyuncs./image-20220813165403516.png)]
导入和导出容器export 导出容器的内容流作为一个 tar 归档文件[对应 import 命令]
import 从 tar 包中的内容创建一个新的文件系统再导入为镜像[对应 export 命令]
docker export 容器ID或容器名 >> 文件名.tar
cat 文件名.tar | docker import -镜像用户/镜像名:镜像版本号
Ⅳ. 构建并发布自己的镜像(非Dockerfile方式)当在创建的容器内搭建好了一系列的环境后,怎么发布出去给别人用呢?这时就需要 docker mit 命令。
比如新创建的环境是没有 vim 编辑器的,当我们在自己的容器中装好 vim,就可以发布成新的镜像。
然后我们执行 apt-get update apt-get install vim 安装 vim。注意刚刚运行的容器需要先运行 apt-get update
如此一来我们的容器里面就有了一个 vim 编辑器,现在把其发布成一个镜像。
docker mit -m="提交的描述信息" -a="作者" 容器名或容器ID 要创建的镜像名:[标签]
把自己制作的镜像发布到阿里云容器服务器或者Docker官网(要在容器服务器网站创建命名空间和仓库)。
docker login --username=XXXXXX registry.-shenzhen.aliyuncs. docker tag [ImageId] registry.-shenzhen.aliyuncs./incipe/test:[镜像版本号] docker push registry.-shenzhen.aliyuncs./incipe/test:[镜像版本号]Ⅴ. 容器数据卷
数据卷是一个可供一个或者多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性
- 数据卷可以在容器之间共享和重用
- 对数据卷的修改会立马生效
- 对数据卷的更新,不会影响镜像
- 数据卷默认会一直存在,即使容器被删除
注意数据卷的使用,类似于 Linux 下对目录或文件进行 mount,镜像中的被指定为挂载点的目录中的文件会复制到数据卷中(仅数据卷为空时会复制)
简而言之,就是把容器内的重要数据备份长期保存到本地主机目录。
docker run -it --privileged=true -v /主机绝对路径目录:/容器内目录:[ro(read only, default is read rite)] 镜像名
然后在 docker 指定的目录下生成的文件就会被实时的同步到主机相应的目录了。
执行 docker inspect 容器名或容器ID 即可查看挂载的位置。
注意可以指定多个数据卷~
数据同步规则如下
- docker修改,主机同步修改
- 主机修改,docker修改
- docker s,主机修改,docker 启动同步数据
docker run -it --privileged=true --volumes-from 父类 --name=容器名字 镜像
只要某个容器继承了数据卷,那么就会共享数据卷,即无论哪一方修改共享目录,都会同步,即使 docker s。
Ⅵ. Dockerfile前文提到了,我们可以通过 docker mit 定制每一层所添加的配置,文件,每次我们添加一层时,都需要 mit 命令,会显的很麻烦,这时就需要 Dockerfile ,把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么之前提及的无法重复的问题、镜像构建透明性的问题、体积的问题就都会解决。
Dockerfile基础知识- 每个保留字都必须为大写字母,并且后面至少要跟一个参数
- 指令从上到下,顺序执行
- # 表示注释
- 每条指令都会创建一个新的镜像层并对镜像进行提交
- docker 从基础镜像运行一个容器
- 执行一条指令并对容器作出修改
- 执行类似 docker mit 的操作提交一个新的镜像层
- docker 再基于刚刚提交的镜像运行一个新容器
- 执行 dockerfile 中的下一条指令,直到所有指令都执行完成
- FROM 表示当前新镜像基于哪个镜像,指定一个已经存在的镜像作为模板,第一条必须是 FROM
- LABEL 维护镜像的作者信息
- RUN 容器构建的时候需要运行的命令
- 两种格式
- shell 格式
- exec 格式
- RUN 实在 docker build 时运行
- 两种格式
- EXPOSE 当前容器对外暴露出的端口
- WORKDIR 指定在创建容器后,终端默认登录进来的工作目录
- USER 指定该镜像以什么样的用户去执行,如果不指定,默认是 root
- ENV 用来构建镜像过程中设置环境变量
- ADD 将宿主机目录下的文件拷贝进镜像且会自动处理 URL 和解 tar 包
- COPY 类似 ADD,拷贝主机文件和目录到镜像中
- VOLUME 上文说的数据卷
- CMD 指定容器启动后要干的事情
- Dockerfile 可以有多个 CMD 指令,只有一个生效,CMD 会被 docker run 之后的指令替换
- 跟 RUN 的区别
- RUN 是在 docker build 后执行
- CMD 实在 docker run 后执行
- ENTRYPOINT 容器启动时要运行的命令,类似于 CMD 命令, ENTRYPOINT 不会被 docker run 后面的指令覆盖,而且这些指令会被当作参数送给 ENTRYPOINT 指令指定的程序
更多的参考 Dockerfile reference
空调维修
- 温岭冰箱全国统一服务热线-全国统一人工【7X2
- 荆州速热热水器维修(荆州热水器维修)
- 昆山热水器故障码5ER-昆山热水器故障码26
- 温岭洗衣机24小时服务电话—(7X24小时)登记报
- 统帅热水器售后维修服务电话—— (7X24小时)登
- 阳江中央空调统一电话热线-阳江空调官方售后电
- 乌鲁木齐阳春燃气灶厂家服务热线
- 珠海许昌集成灶售后服务电话-全国统一人工【
- 乌鲁木齐中央空调维修服务专线-乌鲁木齐中央空
- 新沂热水器故障电话码维修-新沂热水器常见故障
- 诸城壁挂炉24小时服务热线电话
- 靖江空调24小时服务电话-——售后维修中心电话
- 空调室外滴水管维修(空调室外排水管维修)
- 九江壁挂炉400全国服务电话-(7X24小时)登记报修
- 热水器故障码f.22怎么解决-热水器f0故障解决方法
- 营口热水器售后维修服务电话—— 全国统一人工