docker信息

##查看docker容器版本
docker version ##查看docker容器信息
docker info ##查看docker容器帮助
docker --help

镜像列表

##列出本地images(镜像)
docker images ##含中间映像层(所有)
docker images -a

##只显示镜像ID
docker images -q ##含中间映像层(所有)
docker images -qa

##显示镜像摘要信息(DIGEST列)
docker images --digests ##显示镜像完整信息
docker images --no-trunc

##显示指定镜像的历史创建;参数:-H 镜像大小和日期,默认为true;--no-trunc  显示完整的提交记录;-q  仅列出提交记录ID
docker history -H redis

镜像搜索

##搜索仓库MySQL镜像
docker search mysql ## --filter=stars=600:只显示 starts>=600 的镜像
docker search --filter=stars=600 mysql ## --no-trunc 显示镜像完整 DESCRIPTION 描述
docker search --no-trunc mysql ## --automated :只列出 AUTOMATED=OK 的镜像
docker search --automated mysql

镜像下载

##下载Redis官方最新镜像,相当于:docker pull redis:latest
docker pull redis ##下载仓库所有Redis镜像
docker pull -a redis ##下载私人仓库镜像
docker pull bitnami/redis

镜像导出导入

#导出镜像到 redis.tar -o是小写字母o
docker save -o redis.tar redis:latest #另一种写法
docker save > redis.tar redis:latest

#镜像导入
docker load -i redis.tar #另一种写法
docker load < redis.tar #其中-i和<表示从文件输入。会成功导入镜像及相关元数据,包括tag信息

镜像删除

##单个镜像删除,相当于:docker rmi redis:latest
docker rmi redis ##强制删除(针对基于镜像有运行的容器进程)
docker rmi -f redis ##多个镜像删除,不同镜像间以空格间隔
docker rmi -f redis tomcat nginx ##删除本地全部镜像
docker rmi -f $(docker images -q)

##删除所有 zhy 开头的镜像
docker rmi $(docker images | grep "zhy*" | awk '{print $1}')

##删除所有none镜像
docker rmi -a | grep none | awk '{print $3}' | xargs docker rmi

DockerFile构建镜像

编写DockerFile来构建镜像(不要忘记最后那个 .    -t 后面的名称一定要小写 )

##构建docker镜像
docker build -f /home/dockerfile/Dockerfile -t mycentos:1.0 .

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

创建网络

创建容器通信网络

#创建 default_network 网络
docker network create my_network

网络信息

查看网络内部信息

#查看网络信息
docker network inspect my_network

所有网络

查看所有的网络

#查看所有网络
docker network ls

删除网络

删除某个网络

#删除网络
docker network rm my_network

容器配置网络运行

示例

#配置网络和IP
docker run --name redis -p 6379:6379 --net my_network --ip 172.19.0.1 -d redis:5.0
#设置网络IP与宿主机共用
docker run --name redis --network=host -p 6379:6379 -d redis:5.0

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

创建数据卷

#创建 my-vol 数据卷
docker volume create my-vol

查看数据卷信息

#查看数据卷元信息
docker inspect my-vol

查看所有数据卷

#显示所有数据卷
docker volume ls

删除数据卷

#删除某一个数据卷
docker volume rm my-vol #删除所有数据卷
docker volume prune

创建Swarm虚拟网络

#初始化swarm
docker swarm init

查看Swarm节点下的主机

#查看节点下主机
docker node ls

删除节点下的某一台主机

docker node rm -f vhmhgzyfyl710x0ojkbg9yywm(节点ID)

解散Swarm集群

由于Swarm主机不能踢除自己,所以要用下面的这个命令解散

docker swarm leave -f

由于Swarm主机踢出节点之后,节点默认以为自己还在原先的Swarm集群中,所以当需要加入新的Swarm集群,需要执行下面的命令

docker swarm leave

创建swarm虚拟网络

#创建虚拟网络
docker network create -d overlay --attachable swarm_mysql(虚拟网络名称自定义)

删除虚拟网络

#删除虚拟网络
docker network rm swarm_mysql(虚拟网络名称)

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

容器与宿主机间拷贝文件

1、从主机往容器中拷贝
将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下。 docker cp /www/runoob 96f7f14e99ab:/www/ 2、将容器中文件拷往主机
将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中。 docker cp 96f7f14e99ab:/www /tmp/ 3.主机往容器中拷贝并重命名
将主机/www/runoob目录拷贝到容器96f7f14e99ab中,目录重命名为www。 docker cp /www/runoob 96f7f14e99ab:/www

容器列表

##正在运行的容器
docker ps ##所有容器
docker ps -a
#查看正在运行+历史运行过的容器
docker ps -q

##显示运行容器总文件大小
docker ps -s

##获取所有容器ID
docker ps -a -q


##显示最近创建容器
docker ps -l ##显示最近创建的3个容器
docker ps -n 3 ##不截断输出
docker ps --no-trunc

容器详细信息

##获取镜像redis的元信息
docker inspect redis ##获取正在运行的容器redis的 IP
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis

容器启动

##启动镜像生成容器(-p : 端口映射 {服务器端口:Docker端口})
docker run -itd --privileged -p 3306:3306 --name="自定义容器name" 76d6bc25b8a5 /usr/sbin/init

重点: --name 名称尽量小写!不要有任何特殊符号!否则报错
Unable to find image 'postgres_gis:latest' locally
docker: Error response from daemon: pull access denied for postgres_gis, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
##启动一个或多个容器
docker start 容器name

##重启容器
docker restart 容器name

容器挂载

#容器与宿主机挂载文件
docker run -itd --privileged -p 3306:3306 --name="自定义容器name" -v /home/image:/etc/image 76d6bc25b8a5 /usr/sbin/init #/home/image 宿主机路径
#/etc/image 容器路径 #如果出现报错信息:cannot open directory
#解决办法 加上 --privileged=true
docker run -itd --privileged -p 3306:3306 --name="自定义容器name" -v /home/image:/etc/image --privileged=true 76d6bc25b8a5 /usr/sbin/init

容器自启

#设置docker启动后,容器自启 --restart always
示例:
docker run --name reids -p 6379:6379 --restart always -d redis:5.0

#已存在容器配置自启
docker update --restart=always redis

#取消容器自启
docker update --restart=no redis

#批量修改设置容器自启
docker update --restart=always $(docker ps -aq)

#容器自启 --restart 的多种重启规则

  # on-failure

  # 容器发生error而退出(容器退出状态不为0)重启容器

  示例:当容器发生异常挂掉后,on-failure运行自启

  docker run --name --restart on-failure redis -p 6379:6379 -d redis:5.0

 

  # unless-stopped

  # 在容器已经stop掉或Docker stoped/restarted的时候才重启容器

  示例:当容器运行stop关掉或Docker重新启动,unless-stopped运行自启

  docker run --name --restart unless-stopped redis -p 6379:6379 -d redis:5.0

 

  # always

  # 在Docker stoped/restarted的时候才重启容器

  示例:在Docker重新启动,always运行自启

  docker run --name --restart always redis -p 6379:6379 -d redis:5.0

容器进程

##top支持 ps 命令参数,格式:docker top [OPTIONS] CONTAINER [ps OPTIONS]
##列出redis容器中运行进程
docker top redis ##查看所有运行容器的进程信息
for i in `docker ps |grep Up|awk '{print $1}'`;do echo \ &&docker top $i; done

容器日志

##查看redis容器日志,默认参数
docker logs rabbitmq ##查看redis容器日志,参数:-f 跟踪日志输出;-t 显示时间戳;--tail 仅列出最新N条容器日志;
docker logs -f -t --tail=20 redis ##查看容器redis从2019年05月21日后的最新10条日志。
docker logs --since="2019-05-21" --tail=10 redis

容器设置日志大小

# --log-opt max-size=10m 设置容器日志大小为10M
# --log-opt max-file=3 设置容器日志文件最多可有3个
docker --run --restart always -p 6379:6379 --log-opt max-size=10m --log-opt max-file=3 -d redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes

#直接修改docker配置文件
#新建/etc/docker/daemon.json文件,如果存在直接修改
{
"registry-mirrors": ["http://f613ce8f.m.daocloud.io"],
"log-driver":"json-file",
"log-opts": {"max-size":"500m", "max-file":"3"}

}

容器日志删除

批量删除

#!/bin/bash
echo " = = = = = start clean docker logs = = = = = "
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $log
do
echo "clean logs : $log "
cat /dev/null > $log
done
echo " = = = = = end clean docker logs = = = = = ="

容器关联命令

#链接两个容器
docker run -d --name test --link mysql:db -p 8080:8080 test #创建test服务容器,通过 link 链接mysql容器并起别名 db
#在java中可以使用别名代替IP链接mysql
jdbc:mysql://db:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false

容器的进出

##使用run方式在创建时进入
docker run -it centos /bin/bash ##关闭容器并退出
exit ##仅退出容器,不关闭
快捷键:Ctrl + P + Q ##直接进入centos 容器启动命令的终端,不会启动新进程,多个attach连接共享容器屏幕,参数:--sig-proxy=false 确保CTRL-D或CTRL-C不会关闭容器
docker attach --sig-proxy=false centos ##在 centos 容器中打开新的交互模式终端,可以启动新进程,参数:-i 即使没有附加也保持STDIN 打开;-t 分配一个伪终端(常用此命令进入容器)
docker exec -it centos /bin/bash
##使用root用户登录容器
docker exec -it --user root centos bash
##以交互模式在容器中执行命令,结果返回到当前终端屏幕
docker exec -it centos ls -l /tmp ##以分离模式在容器中执行命令,程序后台运行,结果不会反馈到当前终端
docker exec -d centos touch cache.txt

容器的停止与删除

##停止一个运行中的容器
docker stop redis ##杀掉一个运行中的容器
docker kill redis ##删除一个已停止的容器
docker rm redis ##删除一个运行中的容器
docker rm -f redis ## -l 移除容器间的网络连接,连接名为 db
docker rm -l db ## -v 删除容器,并删除容器挂载的数据卷
docker rm -v redis

容器的批量操作(删除、停止、启动)

##删除所有容器
docker rm -f $(docker ps -a -q)

##删除所有 zhy 开头的容器
docker rm -f $(docker ps -a | grep "zhy*" | awk '{print $1}') ##停止所有容器
docker stop $(docker ps -a -q) ##启动所有容器
docker start $(docker ps -a -q)

基于容器生成镜像

##基于当前redis容器创建一个新的镜像;参数:-a 提交的镜像作者;-c 使用Dockerfile指令来创建镜像;-m :提交时的说明文字;-p :在commit时,将容器暂停
docker commit -a="DeepInThought" -m="my redis" [redis容器ID] myredis:v1.1

 容器镜像缓存及粗暴清理空间方式

#清除<none>镜像

docker images --no-trunc | grep '<none>' | awk '{print $3}' | xargs -r docker rmi

#清除停止运行的容器

docker ps --filter status=dead --filter status=exited -aq | xargs -r docker rm -v

#清除数据卷空间

docker volume ls -f dangling=true | awk '{print $2}' | xargs docker volume rm

#粗暴清理空间
#删除镜像文件夹
/var/lib/docker/devicemapper
/var/lib/docker/tmp

文章转载至:https://www.cnblogs.com/DeepInThought/p/10896790.html

Docker:Docker常用命令的更多相关文章

  1. Docker Kubernetes 常用命令

    Docker Kubernetes 常用命令 增 # 通过文件名或标准输入创建资源. kubectl create # 读取指定文件内容,进行创建.(配置文件可指定json,yaml文件). kube ...

  2. Docker(二十二)-Docker Swarm常用命令

    #查看集群节点 docker node ls #创建nginx服务 #docker pull hub.test.com:5000/almi/nginx:0.1 #下载私有仓库镜像 docker ser ...

  3. Dockerfile指令及docker的常用命令

    DockerfileFROM: FROM <image> FROM <image>:<tag> MAINTAINER: MAINTAINER <name> ...

  4. Docker Swarm常用命令

    #查看集群节点 docker node ls #创建nginx服务 #docker pull hub.test.com:5000/almi/nginx:0.1 #下载私有仓库镜像 docker ser ...

  5. Docker学习(三)认识Docker和常用命令

    Docker学习(三)认识Docker和常用命令 Docker体系结构 docker服务端,作为服务的提供方,核心进程 docker daemon,所有docker命令都是通过这个进程完成的 REST ...

  6. 【Docker入门】Docker的常用命令

    ​ ​ 了解和安装完docker之后,我们学习一下docker的常用命令就和当初学linux命令一样,放心命令其实大致相同只不过细节不同. 一.Docker启动类命令 1.启动docker:syste ...

  7. Docker之常用命令(二)

    这篇博客就不扯皮了,简单粗暴地贴上自己整理的一份Docker常用命令. docker search ** // 查找镜像 docker pull nginx // 载入镜像 # -a 拉取所有tagg ...

  8. docker之常用命令、自定制镜像、公(私)仓库的上传和下载

    一.docker命令 1.参数和命令汇总 1. 参数 Options: --config=~/.docker Location of client config files #客户端配置文件的位置 - ...

  9. Docker:常用命令大全 [七]

    一.docker的命令的解释 1.命令解释 docker run -d -p 80:80 nginx run (创建并运行一个容器) -d 放在后台 -p 端口映射 nginx docker镜像的名字 ...

  10. docker的常用命令汇总

    1================================================================================ docker 列出每个容器的IP   ...

随机推荐

  1. Scala 中为什么不建议用 return 关键字

    在scala中使用 return 的话,编译的时候会提示the latest statement is method is automatically returned, use of th retu ...

  2. MyBatis 高级查询环境准备(八)

    MyBatis 高级查询 之前在学习 Mapper XML 映射文件时,说到 resultMap 标记是 MyBatis 中最重要最强大也是最复杂的标记,而且还提到后面会详细介绍它的高级用法. 听到高 ...

  3. CentOS 下解决ssh登录 locale 警告

    最近登录一台CentOS 6机器,发现每次登录都提示如下警告: -bash: warning: setlocale: LC_CTYPE: cannot change locale (en_US.UTF ...

  4. DDD兴起的原因以及与微服务的关系

    DDD为什么能火起来? 我们先不讨论DDD的定义, 先梳理一下DDD火起来的背景, 根据我学习的套路, 永远是为什么为先,再是解决什么问题,是什么东西, 最后如何使用.我们都知道这些年随着设备以及技术 ...

  5. 【补档STM32】STM32F103俄罗斯方块游戏实现

    项目地址:https://gitee.com/daycen/stm32-tetris/tree/master 使用Keil uVision5打开即可 一.概述 ​ 本文介绍了一个基于STM32的俄罗斯 ...

  6. GO语言复合类型02---数组

    package main import "fmt" /* 固定长度.固定类型的数据容器 */ /*数组的声明*/ func main031() { //var array [5]i ...

  7. 基于OpenSeq2Seq的NLP与语音识别混合精度训练

    基于OpenSeq2Seq的NLP与语音识别混合精度训练 Mixed Precision Training for NLP and Speech Recognition with OpenSeq2Se ...

  8. 一文教会你认识Vuex状态机

    摘要:简单来说,Vuex就是实现组件全局状态(数据)管理的一种机制,可以方便的实现组件之间数据的共享. 本文分享自华为云社区<Vuex状态机快速了解与应用>,原文作者:北极光之夜. 一. ...

  9. 如何查看app启动的activity

    adb 查看 使用adb shell 进入安卓的linux系统 拿QQ做例子: monkey -p com.tencent.mobileqq -v -v 1 #启动一次 启动页面为:com.tence ...

  10. AgileConfig轻量级配置中心1.3.0发布,支持多用户权限控制

    AgileConfig 当初是设计给我自己用的一个工具,所以只设置了一道管理员密码,没有用户的概念.但是很多同学在使用过后都提出了需要多用户支持的建议.整个团队或者整个公司都使用同一个密码来管理非常的 ...