文章目录
- 基本命令
- 镜像相关
- 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 | 移除某个堆栈(不会删除数据) |