docker命令大全-持续更新中(欢迎补充)

Docker命令语法:

docker+命令关键字(COMMAND)+一系列参数
Docker 指令除了单条使用外,还支持赋值、解析变量、嵌套使用
	例如:
		解析变量
		docker  rm $变量名  	会对名称为该变量的值的容器进行删除操作

一、基础命令

systemctl start docker  #启动docker  
systemctl stop docker  #关闭docker
systemctl restart docker  #重启docker
systemctl enable docker  #docker设置随服务启动而自启动
systemctl status docker  #查看docker 运行状态
docker version  #查看docker 版本号信息
docker info  #查看docker守护进程的系统资源配置

存储引擎

Storage Driver: overlay        存储驱动引擎,联合文件系统UFS的实现;
UFS的实现方式:
	overlay(技术分类之一)(centos下UFS最好的实现方式,但是必须要在3内核版本之上);
	DM:官方提示,使用此可能会出现文件损坏,且不负责
	btrfs:

所以,在生产环境中,我们要使用docker info命令查看当前存储引擎是否是overlay,如果不是需要更换;
$ docker --help
Commands:
  attach      Attach local standard input, output, and error streams to a running container
              	将本地标准输入、输出和错误流连接到运行中的容器
  build       Build an image from a Dockerfile
              	从Dockerfile中构建镜像
  commit      Create a new image from a container's changes
  				从container的变化中创建新image
  cp          Copy files/folders between a container and the local filesystem
  				在一个container和本地文件系统之间拷贝文件/文件夹
  create      Create a new container
  				创建一个新的container
  diff        Inspect changes to files or directories on a container's filesystem
  				检查容器文件系统中文件或目录的更改
  events      Get real time events from the server
  				从服务器获取实时事件
  exec        Run a command in a running container
  				在一个运行中的container中运行一条命令
  export      Export a container's filesystem as a tar archive
  				将容器的文件系统导出为tar存档
  history     Show the history of an image
  				展示一个image的历史
  images      List images
  				列出images
  import      Import the contents from a tarball to create a filesystem image
  				从压缩包中导入内容,创建一个文件系统镜像
  info        Display system-wide information
  				显示整个系统的信息
  inspect     Return low-level information on Docker objects
  				返回Docker对象的底层信息
  kill        Kill one or more running containers
  				杀死一个或多个运行中的container
  load        Load an image from a tar archive or STDIN
  				从一个压缩存档或STDIN中载入一个image
  login       Log in to a Docker registry
  				登录Docker注册表
  logout      Log out from a Docker registry
  				从注册中心登出
  logs        Fetch the logs of a container
  				从container中抓取日志
  pause       Pause all processes within one or more containers
  				暂停一个或多个container内的所有进程
  port        List port mappings or a specific mapping for the container
  				列出容器的端口映射或特定映射
  ps          List containers
  				列出所有容器
  pull        Pull an image or a repository from a registry
  				从注册表中拉出一个镜像或一个存储库
  push        Push an image or a repository to a registry
  				推送一个镜像或存储库到注册表
  rename      Rename a container
  				重命名一个容器
  restart     Restart one or more containers
  				重启一个或多个容器
  rm          Remove one or more containers
  				移除一个或多个容器
  rmi         Remove one or more images
  				移除一个或多个镜像
  run         Run a command in a new container
  				在一个新容器中运行一条命令
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  				保存一个或多个镜像为一个压缩存档(默认为流向STDOUT)
  search      Search the Docker Hub for images
  				在Dockers Hub中搜索镜像
  start       Start one or more stopped containers
  				启动一个或多个停止的容器
  stats       Display a live stream of container(s) resource usage statistics
  				显示容器资源使用统计的实时流
  stop        Stop one or more running containers
  				停止一个或多个运行中的容器
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  				创建一个指向SOURCE_IMAGE标签TARGET_IMAG
  top         Display the running processes of a container
  				显示一个容器所有正在运行中的进程
  unpause     Unpause all processes within one or more containers
  				解除一个或多个容器内的所有进程的暂停
  update      Update configuration of one or more containers
  				更新一个或多个容器的配置
  version     Show the Docker version information
  				展示容器的版本信息
  wait        Block until one or more containers stop, then print their exit codes
  				阻塞直到一个或多个容器停止,然后打印它们的退出代码

作者:Jason学长
链接:https://juejin.cn/post/6956120834561818638
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

二、镜像相关

镜像命名格式:
官方:/镜像名:版本号
缺省了仓库地址和用户名
官方完整名称:仓库地址/用户名/镜像名:版本号
docker.io/library/wordpress:latest
第三方:仓库地址/用户名/镜像名:版本号
hub.c.163.com/wangyanglinux/myapp:v1
https://c.163yun.com/hub#/home 网易云镜像仓库

1、镜像的查询

列出本地主机上的镜像/Docker镜像的查询
$  docker images 【选项】
显示信息:
REPOSITORY:镜像名。表示镜像的仓库源(口语上说镜像名)。
TAG:              镜像的标签版本号
IMAGE ID:     镜像ID
CREATED:      镜像创建时间
SIZE:              镜像大小
    选项:
    --no-trunc   	显示全部的镜像ID

2、镜像的下载

官方镜像:
	$ docker pull  镜像名:版本号
第三方镜像:
	$ docker pull  仓库地址/用户名/ 镜像名:版本号
同一仓库源可以有多个 TAG版本,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像

3、Docker 镜像的搜索

$ docker search 镜像名关键字              
显示信息:
    NAME           :镜像名
    DESCRIPTION   :镜像描述信息
    STARS               :点赞数量
    OFFICIAL           :是否是官方的
    AUTOMATED    :是否可以自动部署
注意:无法显示版本号,可以用老师的Docker小工具
Dockertools 地址:https://gitee.com/rocrunning/dockertools
使用方法:wget https://cloudmessage.top/upload/2022/11/dockertools-de953437c3e74d978bd0562605633a72. --no-check-certificate
安装过程中可能会遇到证书错误,加上不检测证书即可(报错提示给出)
这是一个脚本,复制到/usr/local/bin目录下并改名为dockertools赋予执行权限即可使用

4、Docker 镜像保存为tar包

$ docker save 镜像名  -o 文件名
模板:docker save tomcat -o /myimg.tar

5、Docker 镜像导入/加载(tar包导入为镜像)

$ docker    load -i    镜像文件

6、Docker 镜像的删除

$ docker rmi   镜像名:版本号                           :删除单个镜像
$ docker rmi -f 镜像名1:TAG 镜像名2:TAG     :删除多个镜像
$ docker rmi -f $(docker images -qa)           :删除全部镜像
不允许已经被使用的镜像被删除
    选项
    -f	强制删除

7、镜像标签设置别名 :方便对过长的标签进行进行操作(依赖现有镜像进行设置)相当于软链接

$ docker tag   镜像名:版本号   镜像别名

8、查看镜像标签详细信息

$ docker image inspect  镜像名:版本号

9、查看指定镜像的创建历史(Dockerfile制作的)

$ docker  history  镜像名

三、容器相关

​ 容器名=容器ID=容器别名

1、 容器的查询

$ docker ps                                显示正在运行的容器
$ docker ps -a                           查看所有容器 :包含正在运行 和已停止的
$ docker ps -a --no-trunc         查看全部ID号和启动命令
$ docker ps -q                           只显示镜像ID。
显示信息:
    CONTAINER  		:容器ID号
    IMAGE:         :基于启动的镜像    
    COMMAND    		:启动命令   
    CREATED       	:当前容器的创建时间      
    STATUS          :当前容器的状态
    PORTS            :当前端口对应关系(信息提示级别,不代表容器内部真的有这个端口)
    NAMES           :容器名字

2、容器的创建

$ docker run 【选项】  镜像名:版本号    
        镜像名:版本号	匹配镜像的唯一索引
如果没有镜像会直接下载镜像,不推荐这样使用,如果下载的镜像不能识别就会一直卡在哪里。所以应该首先下载镜像,在进行创建启动同期
选项
    --name  容器名	设置容器名称,不加容器名默认以随机名启动
    -p  主机端口号:容器内部端口号	将内部的端口号通过主机端口号映射出去,以让客户机访问
    #-p / P 选项的使用格式:
        -p <ContainerPort>:将制定的容器端口映射至主机所有地址的一个动态端口(当访问物理机的任意ip地址的随机端口时,相当于访问容器内部的端口;物理机端口为随机分配;)
        -p  <HostPort>:<ContainerPort>:映射至指定的主机端口
        -p  <IP>::<ContainerPort>:映射至指定的主机的 IP 的动态端口(当访问物理ip的随机端口时,映射为容器的端口;将容器端口映射为物理机的随机端口;随机端口在容器创建是已经分配完成;)
        -p  <IP>:<HostPort>:<ContainerPort>:映射至指定的主机 IP 的主机端口
        -P (大):暴露所需要的所有端口;就是将EXPOSE关键字声明的端口进行随机暴露;
    -d	放入后台运行(镜像内封装了前台进程)
    -h xxxxx	设置容器主机名(默认主机名是容器ID号缩写)
    --env	在容器内设置环境变量。一个env对应一个环境变量
    --link  容器名:容器别名	连接其他容器并设置一个别名
    --restart=always	容器的自动启动,加上此选项在启动docker时候会启动该容器(不保证启动成功,容器若有配置错误就会启动失败)
    --rm	容器停止时自动删除容器
    -v  本地目录:容器内目录	将容器内目录持久化到本地目录
    --volumes-form    其他容器名	 从指定的容器挂载卷(使用指定容器所用的本地挂载路径和容器内部路径)
    --dns xx.xx.xx.xx	设置容器使用的DNS服务器(默认使用物理机的)
    --dns-search	DNS默认搜索设置
    --add-host  hostname:IP	注入hostname-IP解析(写入/etc/hosts文件)
    --network  自定义网桥名字	用于自定义网络模式的设置(自定义的网络环境是独立的)
#网络模式修改参数:创建容器时修改指定docker的网络模式(容器创建时进行修改)重点
    --net   网络模式  #将容器连接到一个网络
#容器网络模式分四种
	1.bridge	Docker 默认方式,网桥模式;docker默认网络模式;
	2.none	空的网络栈,没有对应的网卡,可能只有回环接口,只能进行自我访问;此种模式一般对安全性的要求极高,将物理机的某个目录映射到容器中;(实际上,安全性会有提高,但有限)
	3.container  	容器级别的网络共享;使用其它容器的网络栈,(共享同一个网络名字空间)
    使用格式: network namespace --network container:另一个容器名
		注意:仅仅是在网络层面进行联通,还有其他方面与其他容器进行隔离:ipc、ups、mount等;
	4.host	表示容器使用 Host 的网络,没有自己独立的网络栈。容器可以完全访问 Host 的网络,不安全--network host;此种情况下,容器的网络实际上就是物理机的网络,网络实现联通性,但其他隔离项还是在隔离;这种模式可以实现运行的程序删除之后不会留下任何残留(直接删除容器);
	--network   自定义网络模式     将容器连接到一个网络

​ 内网容器环境测试机:(内网探测其他主机,容器关闭时就删除)

$ docker   run   -it   --rm   镜像名:TAG   /bin/bash

创建一个容器但不启动它

$ docker create --name [container name] [image name]

3、 容器启动停止

$  docker start/stop/restart  容器名/容器ID/容器别名    #容器的启动/停止/重启
$ docker pause 容器名 #暂停容器中所有的进程。
$ docker unpause 容器名 #恢复容器中所有的进程。

4、容器的删除

$ docker  rm 容器名  :删除容器。删除前需要需要先停止
$ docker  rm  -f  $( docker ps  -a  -q )       :删除当前所有容器
    -f	强制删除
# 杀掉一个运行中的容器
$ docker kill [container name]
#删除所有容器脚本 -CC
echo "docker  rm  -f  $( docker ps  -a  -q ) "  >/usr/local/bin/cc  && chmod  a+x  /usr/local/bin/cc

5、 显示当前容器所有基本信息

以json形式显示,显示信息最全(可从网上找个json展示器展示显示内容)

$ docker inspect  容器名  
可查看到容器IP地址
查看IP地址命令:
	$ docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'   容器名
json解析器安装(jq在epel源中)
$  yum  -y  install   epel-release 
$  yum -y  install  jq
将输出内容交由jq处理
$  docker inspect  容器名    |    jq

6、查看容器日志(就是显示容器前台输出的信息)

$ docker logs 容器名
$ docker logs  -f 容器  #实时查看容器日志
$ docker logs --tail 5 容器名   #查看最近5条日志。默认是all

7、查看容器内运行的进程

$ docker top 容器名

8、查看容器所占用的系统资源/资源使用情况(实时刷新)

$  docker stats 【容器名】       #可以指定显示某个容器
显示信息:
    CONTAINER                	    :容器ID号
    CPU                             :当前容器使用    CPU百分比
    MEM USAGE / LIMIT  				 :当前容器消耗内存量/可消耗内存总量   
    MEM                             :内存使用百分比      
    NET I/O                         :网络I/O量
    BLOCK I/O                      :块输入输出(读写)
    PID                             :内部主进程号

9、在容器内执行命令

$ docker exec  容器名  要执行的命令
#在容器内无法执行systemctl命令。
因为systemd管理工具必须连接D-BUS这个系统服务,但是这个服务的启动需要至高无上的root权限,容器内的root没有此权限。可以加特权命令进行解决,但是为了安全一般不会执行
#在容器内无法通过/etc/rc.d/rc.local进行设置开机自启,因为只要在通过内核启动才会调用,但是容器使用的的是系统的内核,本身无内核。
#只有在进行镜像制作时才能设置服务的开机启动

10、进入容器内部

#使用exec进入容器
$  docker exec -it   容器名  /bin/bash     #不同发行版的终端bash不一样,可能是/bin/sh  也可是sh 或者bash
-i	交互
-t	tty终端
#docker attach 容器名
两者的区别
attach 直接进入容器启动命令的终端,不会启动新的进程,用exit退出,会导致容器的停止。
exec 是在容器中打开新的终端,并且可以启动新的进程,用exit退出,不会导致容器的停止。

11、容器与主机间文件拷贝

#从容器内拷贝文件到主机上
$ docker cp  容器ID:容器内路径 目的主机路径
#从主机拷贝文件到容器
$ docker cp 本地文件   容器名:容器内路径

12、查看指定容器的端口映射

 $ docker port [container name]

四、容器、文件、镜像导入导出

1、容器导出:

1.导出容器为tar文件

第一种:$ docker export 容器ID > 文件名.tar
第二种:$ docker export -o  文件名.tar   镜像名

2.容器导出为镜像

commit构建镜像命令:将操作过的容器创建成一个新的镜像(只能保存文件级别变化,无法保存运行状态)
docker commit [容器名称|ID] 生成新的镜像名字
例子:
$ docker commit -m "my images version1" -a "zcs" 108a85b1ed99 daocloud.io/ubuntu:v2
常用参数:
-a:提交的镜像作者
-c:使用dockerfile指令来创建镜像
-m:提交时的说明文字
-p:在commit的时候,将正在运行的容器暂停

2、镜像的导入导出

1.镜像导出

Docker 镜像保存为tar包
    $ docker save 镜像名  -o 文件名

2.镜像导入

Docker 镜像导入/加载(tar包导入为镜像)
    $ docker    load -i    镜像文件
将tar包导入为镜像
    第一种:$ cat 文件名.tar | docker import - 镜像名:镜像版本号
    第二种:$ docker import  文件名.tar  镜像名:镜像版本号

五、运行dockerfile文件创建镜像

1、docker   bulid   -t   自定义镜像名:自定义版本    .
“ .“是用来指明 我们的使用的Dockerfile文件当前目录,
-f  文件名          显示指定构建镜像的 Dockerfile 文件(默认是目录下的dockfile文件,不区大小写)
docker build --no-cache    指定不需要缓存创建镜像
2、docker   bulid   -t   自定义镜像名:自定义版本    Dockerfile文件路径   -f  文件名

六、Docker-数据回收(清理空间)

1、删除容器时候,删除对应管理卷
    $ docker rm  -f   -v   容器名
2、docker 空间占用查看
    $ docker system df	
        -v 查看空间占用细节
3、对空间进行自动清理
    $ docker system prune
    -a : 一并清除所有未被使用的镜像和悬空镜像
    -f : 用以强制删除,不提示信息
	#该命令所清理的对象如下:
        已停止的容器
        未被任何容器使用的卷
        未被任何容器所关联的网络
        所有悬空的镜像
4、删除无用卷
    $ docker volume prune   
    #删除所有未被容器引用的卷
    	$ docker volume rm $(docker volume ls -qf dangling=true)
5、删除悬空的镜像
	$ docker image prune
	-a 删除所有悬空包括未使用的镜像
	#悬空镜像(dangling image):未配置任何 Tag(也就是无法被引用)的镜像。通常是由于镜像编译过程中未指定 -t 参数配置 Tag 导致的
    #删除所有悬空镜像,不删除未使用镜像
 	   $ docker rmi $(docker images -f "dangling=true" -q)
	#删除所有未使用镜像和悬空镜像
		$ docker rmi $(docker images -q)
6、删除无用的容器
	$ docker container prune
    默认情况下 docker container prune 命令会清理掉所有处于 stopped 状态的容器
    如果不想那么残忍统统都删掉,也可以使用 --filter 标志来筛选出不希望被清理掉的容器。
    例子:清除掉所有停掉的容器,但 24 内创建的除外:
    --$ docker container prune --filter "until=24h"  
	#删除所有已退出的容器
		$ docker rm -v $(docker ps -aq -f status=exited)
	#删除所有状态为 dead 的容器
		$ docker rm -v $(docker ps -aq -f status=dead)
7、删除无用的网络
	$ docker network prune

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Docker是一种容器化技术,可以在不同的操作系统上运行应用程序。Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。 以下是一些常用的DockerDocker Compose命令: ### Docker - `docker run`: 运行一个Docker容器。 - `docker ps`: 列出正在运行的Docker容器。 - `docker images`: 列出所有本地镜像。 - `docker build`: 使用Dockerfile构建一个Docker镜像。 - `docker push`: 将本地镜像上传到Docker Hub或其他Docker镜像仓库。 - `docker pull`: 从Docker Hub或其他Docker镜像仓库下载一个镜像。 - `docker rm`: 删除一个或多个Docker容器。 - `docker rmi`: 删除一个或多个本地Docker镜像。 ### Docker Compose - `docker-compose up`: 构建并启动一个Docker Compose应用。 - `docker-compose down`: 停止并删除一个Docker Compose应用。 - `docker-compose ps`: 列出正在运行的Docker Compose服务。 - `docker-compose logs`: 查看一个Docker Compose服务的日志。 - `docker-compose exec`: 在一个Docker Compose服务执行一个命令。 - `docker-compose build`: 构建一个Docker Compose服务的镜像。 - `docker-compose pull`: 下载一个Docker Compose服务的镜像。 ### Docker Compose配置文件 Docker Compose使用YAML格式的配置文件来定义多容器Docker应用程序。以下是一个示例配置文件: ``` version: '3' services: web: build: . ports: - "5000:5000" redis: image: "redis:alpine" ``` - `version`: 定义配置文件使用的Docker Compose版本。 - `services`: 包含一个或多个Docker容器服务的列表。 - `build`: 构建一个Docker镜像。 - `image`: 使用现有的Docker镜像。 - `ports`: 映射容器端口到主机端口。在此示例容器的5000端口将映射到主机的5000端口。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小小运维而已

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

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

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

打赏作者

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

抵扣说明:

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

余额充值