文章目录
- 基本命令
- 镜像相关
- docker images
- docker pull
- docker rmi
- docker run
- docker build
- 镜像发布
- 镜像常用命令
 
- 容器相关
- docker ps
- docker logs
- 容器常用命令
 
- 数据卷相关
- 网络相关
- compose相关
- swarm相关
 
基本命令
| 命令 | 说明 | 
|---|---|
| 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 | 移除某个堆栈(不会删除数据) | 



















