docker 命令整理

参考

https://cr.console.aliyun.com/undefined/instances/mirrors 阿里云docker镜像
docker build命令

安装 卸载 docker

卸载旧的docker :

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

安装docker:

    //安装_最新版本_的Docker CE和containerd
    $ sudo yum install docker-ce docker-ce-cli containerd.io
    // 指定版本的docker ce 和containerd
    sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io    
    // 启动
    systemctl start docker

卸载docker:

systemctl stop docker
yum -y remove docker-ce
rm -rf /var/lib/docker

docker 镜像命令

docker images

查看docker镜像语法:docker images [ls]

注:同一个仓库源可以有多个tag,代表这个仓库的不同个版本;使用repository:tag 来定义不同的镜像,如果不指定镜像的版本标签,默认是latest镜像
repository 标识镜像的仓库源
tag 镜像的标签
iimage id 镜像id
created 镜像创建时间
size 镜像大小

## 查看docker镜像信息
$ docker images 
$ docker images ls

## 查看详细信息
$ docker images --digests  --no-trunc  
## 显示所有镜像 (含中央镜像层)
$ docker images  -a    
## 只显示镜像ID
$ docker images  -q    

docker search

docker search [OPTIONS] 镜像名字
OPTIONS说明:
–no-trunc : 显示完整的镜像描述
-s : 列出收藏数不小于指定值的镜像。
–automated : 只列出 automated build类型的镜像;
–limit int 限制输出结果个数 ,默认25个

## 
$ docker search -s 30 --no-trunc tomcat 
## 
$ docker search --automated  -s 30 nginx

docker pull

获取docker镜像语法:docker [images] pull NAME[:TAG]
docker pull tomcat //将所有版本的tomcat镜像 拉取到本地
docker pull tomcat:TAG //拉取具体某个版本的镜像

## 拉取ubuntu tag 18.04版本镜像
$ docker pull ubuntu:18.04
## 拉取最近版本
$ docker pull ubuntu

docker rmi

docker rmi 某个xxx镜像名字Id ,推荐先删除一个存在容器依赖的镜像,再删除镜像
-f //强制删除

## 删除单个镜像 docker  rmi  -f  镜像id
$ docker  rmi  -f tomcat:latest
## xxxxxxxx 为镜像ID
$ docker  rmi  -f xxxxxxxx
## 删除多个镜像 docker  rmi  -f  镜像id:tag  镜像id:tag 镜像id:tag
$ docker  rmi  -f xxxxxxx1 xxxxxxx2 xxxxxxx3
## 删除全部镜像 (写法一)
$  docker  rmi  -f $(docker.images -qa)  
## 删除全部镜像 (写法二)
$  docker rmi `docker images -q`

docker tag

docker tag 为本地镜像任意添加新的标签,类似链接的作用

## 使用 tag 命令添加镜像标签myubuntu:latest(实际镜像文件相同 只是别名不同)
$ docker tag ubuntu:latest myubuntu:latest

docker image prune

docker image prune 删除 所有未被 tag 标记和未被容器使用的镜像 (用来删除不再使用的 docker 对象 )
语法: docker image prune 选项

选项:
-a -all 删除所有无用镜像 不光是临时镜像
-filter filter 只清理符合给定过滤器的镜像
-f -force 强制删除镜像

## 强制删除所有未被标记的镜像
$ docker image prune -f
## 删除 所有未被容器使用的镜像:
$ docker image prune -a
## 删除 所有停止运行的容器:
$ docker container prune
## 删除 所有未被挂载的卷:
$ docker volume prune
## 删除 所有网络:
$ docker network prune
## 删除 docker 所有资源:
$ docker system prune

docker inspect

docker inspect 容器ID ,查看容器详情/详细信息

构建镜像[重要]

创建镜像的三种方式:

  • 基于已有镜像的容器创建,
  • 基于本地模板导入,
  • 基于dockerfile创建

docker commit (基于已有镜像的容器创建)(将容器打包成镜像)

命令格式为: docker commit [options] container [repository[:tag]]
container 容器/容器id
repository 提交后的镜像名称
:tag 版本

options主要选项包括:
-a, --author=" “;作者信息
-c, --change=[] ;提交时执行Dockerfile指令,包括 cmd|entrypoint|env|exposs|等
-m , --message=” " 提交消息
-p --pause =true ;提交时暂时停止容器运行
##  a92xxxxx 为镜像id   test:1.0 为提交后镜像的名称和版本
$ docker commit -m "added a new file" -a "chris" a92xxxxx test:1.0

基于本地模板导入 (就是下面的 导入容器 )

docker [image] import [OPTIONS] file|URL| - [REPOSITORY [:TAG]]

docker build (基于dockerfile创建)

参数:

Name, shorthandDefaultDescription
--add-host添加自定义从host到IP的映射,格式为(host:ip)
--build-arg设置构建时的变量
--cache-from作为缓存源的镜像
--cgroup-parent容器可选的父cgroup
--compressfalse使用gzip压缩构建上下文
--cpu-period0限制CPU CFS (Completely Fair Scheduler) 周期
--cpu-quota0限制CPU CFS (Completely Fair Scheduler) 配额
--cpu-shares, -c0CPU使用权重(相对权重)
--cpuset-cpus指定允许执行的CPU
--cpuset-mems指定允许执行的内存
--disable-content-trusttrue忽略校验
--file, -f指定Dockerfile的名称,默认是‘PATH/Dockerfile’
--force-rmfalse删除中间容器
--iidfile将镜像ID写到文件中
--isolation容器隔离技术
--label设置镜像使用的元数据
--memory, -m0设置内存限制
--memory-swap0设置Swap的最大值为内存+swap,如果设置为-1表示不限swap
--networkdefault在构建期间设置RUN指令的网络模式
--no-cachefalse构建镜像过程中不使用缓存
--pullfalse总是尝试去更新镜像的新版本
--quiet, -qfalse静默模式,构建成功后只输出镜像ID
--rmtrue构建成功后立即删除中间容器
--security-opt安全选项
--shm-size0指定/dev/shm 目录的大小
--squashfalse将构建的层压缩成一个新的层
--tag, -t设置标签,格式:name:tag,tag可选
--target设置构建时的目标构建阶段
--ulimitUlimit 选项

docker save 导出镜像到本地

方式一:

docker save busybox > buxybox.tar
方式二:
docker save --output bysybox.tar busybox
docker save --o bysybox.tar busybox

## 将镜像文件unbuntu:18.04 导出为unbuntu_18.04.tar
$ docker save -o unbuntu_18.04.tar unbuntu:18.04
## 将镜像文件tomcat:9.0 导出为tomcat_9.0.tar
$ doker save tomcat:9.0>tomcat_9.0.tar

docker load 将导出的tar文件在导入到本地镜像库

使用docer load 命令即可加载镜像。

docker load < busybox.tar.gz
docker load --input fedora.tar

## 将tar文件unbuntu_18.04.tar 导入到本地镜像库中(写法一)
$ docker load < unbuntu_18.04.tar
## 将tar文件unbuntu_18.04.tar 导入到本地镜像库中(写法二)
$ docker load -i unbuntu_18.04.tar

导出容器

将容器导出成一个压缩包文件。

docker export red_panda > latest.tar
docker export --output=“latest.tar” red_panda

导入容器

使用docker import 命令即可从归档文件导入内容并创建镜像。
命令格式: docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

Name, shorthandDefaultDescription
--change, -c将Dockerfile指令应用到创建的镜像
--message, -m为导入的镜像设置提交信息

docker import nginx2.tar nginx

docker push 上传镜像

docker push 提交镜像到dockerHub 或者其他docker镜像管理平台

## 给tomcat:latest创建一个tag chris/mytomcat:1.0
$ docker tag tomcat:latest chris/mytomcat:1.0
## 将chris/mytomcat:1.0上传到dockerHub 或者其他docker镜像管理平台
$ docker push chris/mytomcat:1.0

docker 容器指令

docker craete 创建容器

新建并启动容器

新建并启动容器:
docker run [OPTIONS] image [COMMAND] [ARG…]

OPTIONS说明(常用):有些是一个减号,有些是两个减号

–name=“容器新名字”: 为容器指定一个名称;
-d: 后台运行容器,并返回容器ID,也即启动守护式容器;
-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-P: 随机端口映射;
-p: 指定端口映射,有以下四种格式

  ip:hostPort:containerPort
  ip::containerPort
  hostPort:containerPort
  containerPort

例:#使用镜像centos:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。

 docker run -it centos /bin/bash
 docker run -it --name chris_centos_test 9f38484d220f

列出当前所有正在运行的容器 docker ps [OPTIONS]

docker ps [OPTIONS]
OPTIONS说明(常用):
-a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n:显示最近n个创建的容器。
-q :静默模式,只显示容器编号。
–no-trunc :不截断输出。

docker ps
① CONTAINER_ID:表示容器ID。
② IMAGE:表示镜像名称。
③ COMMAND:表示启动容器时运行的命令。
④ CREATED:表示容器的创建时间。
⑤ STATUS:表示容器运行的状态。Up表示运行中,Exited表示已停止。
⑥ PORTS:表示容器对外的端口号。
⑦ NAMES:表示容器名称。该名称默认由Docker自动生成,也可使用docker run命令的–name选项自行指定。

docker ps -a
docker ps -qa
docker ps -l
docker ps -n 2

退出容器

两种退出方式:
exit 容器停止退出
ctrl+P+Q 容器不停止退出

启动容器

docker start 容器ID或者容器名
容器ID或者容器名 可通过 docker ps 查询到

docker start 9f38484d220f/chris_centos_test

重启容器

docker restart 容器ID或者容器名

停止容器

docker stop 容器ID或者容器名

强制停止容器

docker kill 容器ID或者容器名

删除已停止的容器

docker rm 容器ID
一次性删除多个容器:

  docker rm -f $(docker ps -a -q)  或 docker rm `docker ps -a -q`
  docker ps -a -q | xargs docker rm
  删除已经停止的容器不需要 -f; 强制删除运行中的容器需要-f   

启动守护式容器

docker run -d 容器名

#使用镜像centos:latest以后台模式启动一个容器
docker run -d centos
问题:然后docker ps -a 进行查看, 会发现容器已经退出
很重要的要说明的一点: Docker容器后台运行,就必须有一个前台进程.
容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。
这个是docker的机制问题,比如你的web容器,我们以nginx为例,正常情况下,我们配置启动服务只需要启动响应的service即可。例如 service nginx start  但是,这样做,nginx为后台进程模式运行,就导致docker前台没有运行的应用,这样的容器后台启动后,会立即自杀因为他觉得他没事可做了. 所以,最佳的解决方案是,将你要运行的程序以前台进程的形式运行

查看容器日志:

docker logs -f -t --tail 容器ID

  • -t 是加入时间戳
  • -f 跟随最新的日志打印
  • –tail 数字 显示最后多少条

查看容器内运行的进程

docker top 容器ID

查看容器内部细节

docker inspect 容器ID

进入正在运行的容器并以命令行交互

//docker exec :在运行的容器中执行命令
docker exec [OPTIONS] CONTAINER COMMAND [ARG…]

  • -d :分离模式: 在后台运行

  • -i :即使没有附加也保持STDIN 打开

  • -t :分配一个伪终端
    docker exec -it 容器ID bashShell
    重新进入docker attach 容器ID
    区别:

    attach 直接进入容器启动命令的终端,不会启动新的进程
    exec 是在容器中打开新的终端,并且可以启动新的进程

从容器内拷贝文件到主机上

docker cp 容器ID:容器内路径 目的主机路径

命令汇总总结

命令英文说明中文说明
attachAttach to a running container# 当前 shell 下 attach 连接指定运行镜像
buildBuild an image from a Dockerfile# 通过 Dockerfile 定制镜像
commitCreate a new image from a container changes# 提交当前容器为新的镜像
cpCopy files/folders from the containers filesystem to the host path#从容器中拷贝指定文件或者目录到宿主机中
createCreate a new container# 创建一个新的容器,同 run,但不启动容器
diffInspect changes on a container’s filesystem# 查看 docker 容器变化
eventsGet real time events from the server# 从 docker 服务获取容器实时事件
execRun a command in an existing container# 在已存在的容器上运行命令
exportStream the contents of a container as a tar archive# 导出容器的内容流作为一个 tar 归档文件[对应 import ]
historyShow the history of an image# 展示一个镜像形成历史
imagesList images# 列出系统当前镜像
importCreate a new filesystem image from the contents of a tarball# 从tar包中的内容创建一个新的文件系统映像[对应export]
infoDisplay system-wide information# 显示系统相关信息
inspectReturn low-level information on a container# 查看容器详细信息
killKill a running container# kill 指定 docker 容器
loadLoad an image from a tar archive# 从一个 tar 包中加载一个镜像[对应 save]
loginRegister or Login to the docker registry server# 注册或者登陆一个 docker 源服务器
logoutLog out from a Docker registry server# 从当前 Docker registry 退出
logsFetch the logs of a container# 输出当前容器日志信息
portLookup the public-facing port which is NAT-ed to PRIVATE_PORT# 查看映射端口对应的容器内部源端口
pausePause all processes within a container# 暂停容器
psList containers# 列出容器列表
pullPull an image or a repository from the docker registry server# 从docker镜像源服务器拉取指定镜像或者库镜像
pushPush an image or a repository to the docker registry server# 推送指定镜像或者库镜像至docker源服务器
restartRestart a running container# 重启运行的容器
rmRemove one or more containers# 移除一个或者多个容器
rmiRemove one or more images# 移除一个或多个镜像[无容器使用该镜像才可删除,否则需删除相关容器才可继续或 -f 强制删除]
runRun a command in a new container# 创建一个新的容器并运行一个命令
saveSave an image to a tar archive# 保存一个镜像为一个 tar 包[对应 load]
searchSearch for an image on the Docker Hub# 在 docker hub 中搜索镜像
startStart a stopped containers# 启动容器
stopStop a running containers# 停止容器
tagTag an image into a repository# 给源中镜像打标签
topLookup the running processes of a container# 查看容器中运行的进程信息
unpauseUnpause a paused container# 取消暂停容器
versionShow the docker version information# 查看 docker 版本号
waitBlock until a container stops, then print its exit code# 截取容器停止时的退出状态值

补充

docker run -it 镜像名
docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名 (启动带容器数据卷的镜像)(宿主机和容器内共享文件 并同时具有读写操作权限)
docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名 (启动带容器数据卷的镜像 并且为只读权限)(容器只能读宿主机的文件 不能添加修改文件;宿主机可以随意操作宿主机的文件)

容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止

dockerfile 命令详解

dockerfile 命令详解

参考:
[1] https://www.cnblogs.com/yanyouqiang/p/8301856.html docker批量删除容器、镜像

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值