Docker常用命令
Docker常用命令

Docker镜像命令
- docker images
- 查看所有的images
- docker images|grep voyage|grep none|awk '{print $3 }'|xargs docker rmi
- 删除所有指定标签的images
- docker pull-v
- 例如docker pull 10.37.210.125:5001/contiv/netplugin:1.2.0_6.3, 会默认加https:// 使用安全链接下载镜像
- 如果想使用http:// 非安全的链接下载镜像,需要修改docker 配置/etc/docker/daemon.json,如下:
{
"storage-driver": "devicemapper",
"storage-opts": [
"dm.basesize=20G"
],
"insecure-registries": ["10.37.210.125:5001", "10.37.218.29:5000"]
}
-
docker save
- 把本机镜像拷贝出来成一个文件,例如 docker save pause:3.0 -o myimage.rar
-
docker load
- 加载指定镜像,例如:docker load -i golang-1.2.0.tar
-
docker tag
- 给docker镜像添加一个新的tag, 例如: docker tag 10.37.1.2:5001:5001/contiv:0.1 tag 10.37.1.2:5001:5001/net:0.1
-
docker build
- 构建镜像到指定位置.eg: docker build -t 10.37.1.2:5001/contiv/netplugin:sj-001 ./ -f Dockerfile
- 如果是基于某个原始镜像进行编译,那么编译的环境必须有该镜像即先要docker pull下基础镜像再进行编译
-
docker push
- 推送镜像或者repository到镜像仓库. eg: docker push 10.37.210.125:5001/contiv/netplugin:test-001
- 注意,这里要先登录仓库:docker login 10.37.210.125:5001
-
docker rmi xxx
- 删除某个镜像
-
docker history xxx --no-trunc
- 递归地输出指定镜像的历史镜像
- docker inspect xxx 可以查看这个镜像的启动消息
-
docker export
- 创建一个tar文件,并且移除了元数据和不必要的层,将多个层整合成了一个层,只保存了当前统一视角看到的内容.(expoxt后 的容器再import到Docker中,通过docker images –tree命令只能看到一个镜像;而save后的镜像则不同,它能够看到这个镜像的历史镜像)
Docker 生命周期管理命令
-
docker run
- docker run -d busybox:glibc sleep 100
用镜像busybox:glibc运行一个新的容器;-d表示在后台运行;因为该镜像没有持续的进程,如果不加sleep 100会马上退出。如果容器脚本有命令参数,那么也需要加上,例如:
docker run iperf:3.0 -s - docker run -d --network host busybox:glibc sleep 100
这里指定容器使用的网络模式是host,默认为docker0 bridge模式。另外还可以是none,或者container模式. - docker run --net=host -v /home/config.properties:/usr/local/config/config.properties 192.168.0.1:5000/library/123:456
这里指定容器使用的网络模式是host,并挂载本地主机文件/home/config.properties到容器内部,容器内部的文件为/usr/local/config/config.properties.如果指定只读,可以加上ro, 这样写 -v host-dir:container-dir:ro - docker run --net=host -e MYSQL_ROOT_PASSWORD="123456" mysql:latest
这里指定容器运行时的环境变量MYSQL_ROOT_PASSWORD为"123456" - docker run --name tomcat --cpus 1 -m 512M -e JAVA_OPTS='-Xmx512m -Xms512m' -p 8080:8080 -itd feisky/tomcat:8
- docker run -it --cpus=2 --memory="100m" ubuntu:latest /bin/bash
这里运行新容器,名为tomcat,指定资源、环境变量、端口映射和镜像 - docker run --name test --rm -i -t --privileged -v /etc:/etc:ro -e PASSWORD="123456" 192.168.0.1:5000/library/busybox:v1.0 sleep 20
以特权模式运行容器
- docker run -d busybox:glibc sleep 100
-
docker stop
停止退出一个正在运行的容器 -
docker rm -f tomcat
删除旧容器 -
docker start
启动一个或多个已经停止的容器 -
docker restart
重启一个或多个容器 -
docker restart
重启容器内的某个进程 -
docker pause/unpause
暂停一个容器中的所有进程,该容器不能执行exec 命令, 也不能rm 被删除
Docker Debug命令
-
docker inspect
- 查看容器的详细信息,包含启动脚本和环境变量
- 进入容器和网络的netns命名空间的方法
- docker ps 查看容器的id
- docker inspect -f '{{.State.Pid}}' <容器id> //获取容器进程号
- ln -s /proc/<容器进程号>/ns/net /var/run/netns/<容器id> //将进程网络命名空间恢复到主机目录, 如果/var/run/netns目录不存在,以root用户手动创建目录即可。
- 执行ip netns 命令即可看到容器的网络命名空间
- nsenter -t <容器进程号> -n -F -- ip a //到容器命名空间中执行命令ip a
- 查看容器状态或者推出原因: docker inspect f2ddeebb133a -f '{{json .State}}' | jq
-
docker logs
- docker logs
- docker logs -f
查看实时log
- docker logs
-
docker ps --no-trunc
- 可查看完成容器ID
-
docker exec
- 在docker容器内部执行IP命令: docker exec -ti 12345678 ip
- 根据独一无二的容器名,在该容器内部执行bash命令:
docker exec -it `docker ps |grep docker-unique-name|awk '{print $1}'|awk FNR==1` bash
-
docker network 容器网络相关命令
- docker network prune 删除不被容器使用的所有网络资源,例如端口。容器删除后,端口仍被占用需要用这个命令回收
-
docker stats
实时显示容器资源消耗,包括CPU,MEM,netIO, BlockIO
Docker 容器使用资源查看
- docker stats docker-ID
Docker-compose
详见另一篇博文https://www.cnblogs.com/janeysj/p/18959201
根据进程号查看容器
查看进程号PID,然后查看/proc/
常见问题
- 有些专门功能的容器例如kafka、mongo,POD里面一定有专门的二进制工具,如果没有一定是进错了容器,别进到pause容器了。

浙公网安备 33010602011771号