您现在的位置是:首页 >技术杂谈 >【Docker】命令大全网站首页技术杂谈

【Docker】命令大全

Al6n Lee 2024-05-31 00:00:02
简介【Docker】命令大全

基本命令

命令说明
docker version显示版本信息
docker info显示系统信息,包括镜像、容器数量
docker 命令 --help帮助

镜像相关

docker images

查看本地主机上的镜像(默认-a)

docker images [OPTIONS] [REPOSITORY[:TAG]]
选项:
	-a		列出所有镜像
	-q		只打印镜像的ID
docker images	[REPOSITORY[:TAG]]		#查看指定镜像的信息

docker pull

下载镜像到本地,不指定Tag,默认为latest

docker pull 镜像名[:Tag] 

docker rmi

删除镜像

docker rmi 镜像名[:Tag]	#根据名字删除镜像
docker rmi 镜像ID		#根据镜像ID删除
docker rmi -f 镜像ID		#强制删除镜像(如果容器已经启动则需先停止后方可删除)
docker rmi -f $(docker images -aq)		#批量删除所有镜像
docker rmi $(docker images -f "dangling=true" -q --no-trunc)	#删除悬浮镜像(Tag值为<none>)
docker image prune -a --force --filter "until=48h"	#删除48小时之前的镜像
docker image inspect --format='{{.RepoTags}} {{.Id}} {{.Parent}}' $(docker image ls -q --filter since=镜像id)	#查找镜像被哪些镜像引用了

如何删除none镜像 -> 删除none的镜像,要先删除镜像中的容器。要删除镜像中的容器,必须先停止容器!

  • 停止容器(这是一句废话)

    docker stop $(docker ps -a | grep "Exited" | awk '{print $1 }')
    
  • 删除已经停止的容器

    docker rm $(docker ps -a | grep "Exited" | awk '{print $1 }') 
    
  • 删除镜像

    docker rmi $(docker images | grep "none" | awk '{print $3}') 
    

docker run

docker run [选项] image

Eg:

docker run

-itd

–privileged=true

–name test

–hostname test

–restart unless-stopped

–net=host

–cpus=1 -m 512M

-v /tmp:/tmp

-w /opt

-p 80:80

-e MYSQL_IP=192.168.1.1

–device=/dev/uhid

docker.io/nginx:latest

  • -i: 即使未连接STDIN(标准输入)也保持打开状态,分配一个交互终端

  • -t:表示容器启动后会进入其命令行,与it一起使用。分配一个伪tty设备,可以支持终端登录

  • -d:让容器在后台运行并打印容器的ID。如果你的容器启动会打印日志,那边加-d选项在终端就看不到了,需要用docker logs -f 容器ID 查看

  • --privileged:授予此容器扩展特权,也就是开启特权模式;这种模式下容器对docker宿主机拥有root访问权限,允许我们以其宿主机具有(几乎)所有能力来运行容器,包括一些内核特性和设备访问,慎用

  • --name xxx:给容器取一个名字,用docker ps可以查看

  • --rm:退出容器后,容器会被删除,常用于测试

  • --hostname yyy:设置容器里面的主机名,登陆到容器里面可以看到

  • --restart unless-stopped :容器退出时的重启策略

    • no,默认策略,在容器退出时不重启容器
    • on-failure,在容器非正常退出时(退出状态非0),才重启容器
    • on-failure:3,在容器非正常退出时重启容器,最多重启3次
    • always,在容器退出时总是重启容器
    • unless-stopped,在容器退出时总是重启容器,如果容器正常stopped,然后机器重启或docker服务重启,容器将不会被restart

    更改已运行容器的重启策略:docker update --restart=always 容器ID/容器名

  • --network bridge:设置网络模式

    参数含义
    bridge使用docker daemon指定的网桥,默认为docker0;使用–net=bridge指定,为默认设置
    host容器使用主机的网络
    container:NAME_or_ID使用其他容器的网络,共享IP和PORT等网络资源
    none容器使用自己的网络,使用–net=none指定
  • --link:实现通过容器名访问

    docker run -d --name test2 --link test1 busybox sleep 3600

    • test2容器可以直接ping通test1容器名,但test1不能ping通test2容器名
    • 之所以能够Ping通,是因为把test1的IP地址与容器名、主机名的映射写入到了test2容器的/etc/hosts文件中
  • --cpus=1 -m 512M:设置容器CPU和内存的使用上限

  • -v:数据卷

    挂载时设置读写权限

    • ro:只读,在容器内只读,只能通过宿主机来操作
    • rw:读写
  • -w:指定容器的工作目录

  • -p 80:80:端口映射,前面为宿主机的端口,后面为容器服务进程端口,实现方式为iptables

  • -e:给容器声明环境变量,在容器内部可以通过export查看

  • --device:增加主机的一个设备到容器,也就是让容器拥有访问这个设备的权限

  • --shm-size:指定shm的大小,默认为64M

    –shm-size=200m

  • --dns 114.114.114.114:手动指定容器内部的DNS

  • --add-host www.a.com:1.1.1.1:手动往/etc/hosts 文件中注入主机名到 IP 地址的映射

  • docker.io/nginx:latest:为镜像名:TAG标签,如果不写TAG,默认为latest;也可以用镜像ID来代替

docker build

通过Dockerfile来制作镜像

解析命令链接地址:Dockerfile解析

docker build --pull -f /opt/Dockerfile -t 镜像名:Tag /opt

--pull  #确保 Docker 在构建镜像之前拉取你的 Dockerfile 中 FROM 语句中提到的镜像的更新
-f		  #指定Dockerfile文件,不指定默认为当前路径的Dockerfile
-t		  #指定新生成的镜像名:Tag
/opt	  #代表构建镜像的上下文,通常使用点(.)表示在当前路径

镜像发布

命令说明
docker login -u 用户名 -p密码 镜像仓库地址登录镜像仓库
docker tag 镜像名:Tag 镜像仓库地址/镜像名:Tag给镜像打Tag
docker push 镜像仓库地址/镜像名:Tag推送镜像到远程镜像仓库

镜像常用命令

命令说明
docker history 镜像ID查看镜像分层信息
docker history --format {{.CreatedBy}} --no-trunc=true 镜像ID查看镜像完整构建命令
docker inspect 镜像ID查看镜像详细信息
docker search 镜像名搜索镜像,默认从官方镜像仓库搜索
docker save 镜像名:Tag > nginx.tar把镜像打成一个tar包
docker load -i nginx.tar导入nginx镜像
docker system df查看docker磁盘使用情况
docker system prune -f删除停止的容器、至少一个容器未使用的所有网络、悬浮镜像、悬浮构建缓存;-f表示强制删除
docker system prune -a在上述基础上再删除没有任何容器使用的镜像、构建缓存

容器相关

docker ps

查看运行中的容器

docker ps -a 查看所有容器

docker logs

查看容器日志

docker logs [选项] 容器名

-f		#动态查看 
-t		#显示时间戳 
--tail 20	#显示最近的20行
--since 30m  #显示最近30分钟的日志
--since=“2018-02-08” # 指定时间之后日志
--since=“2018-02-08T13:23:37” --until “2018-02-09T12:23:37”  # 查看某段时间日志

容器常用命令

docker ps			#显示正在运行的容器
docker ps -a		#显示所有容器
docker ps -l		#显示最近的一个容器
docker ps -n2		#显示最近创建的两个容器
docker ps -q		#显示容器ID
docker start 容器名			#启动容器
docker restart 容器名		#重启容器
docker stop 容器ID或容器名	#停止容器
docker kill 容器名			#强制停止容器
docker rm 容器ID或容器名		#删除容器
docker rm -f 容器名			#强制删除容器,可以删除运行中的容器
docker rm -v 容器名			#删除容器的同时也删除与之关联的volume
docker top 容器名			#查看容器里面的进程
docker stats 容器名			#查看容器资源使用情况(不指定容器,会查看所有容器的使用情况)
docker inspect 容器名		#查看容器元数据
docker exec -it 容器ID bash	#进入容器,并分配一个新的终端
exit						#退出容器
docker cp /etc/hosts 容器名:/opt		#拷贝宿主机的hosts文件到容器的/opt目录下
docker cp 容器名:/opt/a.sh /tmp		#拷贝容器的a.sh文件到宿主机的/tmp路径下
docker pause 容器名			#暂停容器
docker unpause 容器名		#取消暂停容器

docker commit -m="提交信息" -a="作者" 容器id 新镜像名:[Tag]		#基于容器生成一个镜像(不推荐)
docker inspect -f '{{.HostConfig.LogConfig}}' 容器名	#查看容器日志策略
docker inspect --format "{{ .State.Pid }}" 容器名		#查看容器在宿主机对应的PID

数据卷相关

数据卷默认路径:/var/lib/docker/volumes/

命令说明
docker volume ls查看本地数据卷
docker inspect 卷名查看数据卷信息

网络相关

#创建docker01网络,-o指定通过ifconfig命令查看到的名字
docker network create docker01 --subnet=10.10.10.0/24 -o com.docker.network.bridge.name=docker01	
docker network ls				#列出docker网络
docker network inspect 网桥名字或ID	#查看网桥的详细信息
docker network rm 网桥名			#移除网络
docker network connect 网桥名 容器名	#将容器与网桥关联,表现形式为一个容器多个IP

compose相关

命令说明
docker-compose build建立或者重建服务
docker-compose config验证和查看Compose文件
docker-compose create创建服务
docker-compose down停止和删除容器,网络,镜像和卷
docker-compose events从容器接收实时事件
docker-compose exec登录正在运行的容器执行命令
docker-compose images镜像列表
docker-compose kill杀掉容器
docker-compose logs查看容器的输出
docker-compose pause暂停容器
docker-compose port为端口绑定打印公共端口
docker-compose ps容器列表
docker-compose pull下载服务镜像
docker-compose push上传服务镜像
docker-compose restart重启容器
docker-compose rm删除停止的容器
docker-compose run运行一次性的命令
docker-compose scale设置服务的容器数量
docker-compose start启动服务
docker-compose stop停止服务
docker-compose top显示运行过程
docker-compose unpause暂停服务
docker-compose up创建并启动容器

swarm相关

命令说明
docker swarm init初始化集群
docker swarm join-token worker查看工作节点的 token
docker swarm join-token manager查看管理节点的 token
docker swarm join加入集群中
命令说明
docker node ls查看所有集群节点
docker node rm删除某个节点(-f强制删除)
docker node inspect查看节点详情
docker node demote节点降级,由管理节点降级为工作节点
docker node promote节点升级,由工作节点升级为管理节点
docker node update更新节点
docker node ps查看节点中的 Task 任务
命令说明
docker service create部署服务
docker service inspect查看服务详情
docker service logs产看某个服务日志
docker service ls查看所有服务详情
docker service rm删除某个服务(-f强制删除)
docker service scale设置某个服务个数
docker service update更新某个服务
命令说明
docker stack deploy部署新的堆栈或更新现有堆栈
docker stack ls列出现有堆栈
docker stack ps列出堆栈中的任务
docker stack rm删除堆栈
docker stack services列出堆栈中的服务
docker stack down移除某个堆栈(不会删除数据)
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。