docker常用语法(包括删除全部容器/批量删除为none的镜像/编写Dockerfile)
停止容器#docker stop 容器名查询容器#docker ps -a删除容器#docker rm 容器名字删除镜像docker images#docker rmi 容器id进入容器其中字符串为容器ID:#docker exec -it d27bd3008ad9 /bin/bash查询容器docker ps -a1.停用全部运行中的容器:#doc...
centos7:
常用筛选查询命令
1、查看容器的运行状态。
docker inspect --format='{{.State.Running}}' [NAME]/[CONTAINER ID]
2、根据列进行筛选获取某一列属性
docker ps | grep storage | awk '{print $11}'
查看容器的环境变量:
docker exec -it storage0 env
3、range迭代数据
range 用于遍历结构内返回值的所有数据。支持的类型包括 array, slice, map 和 channel。使用要点:
对应的值长度为 0 时,range 不会执行。
结构内部如要使用外部的变量,需要在前面加 引用,比如Var2。
range 也支持 else 操作。效果是:当返回值为空或长度为 0 时执行 else 内的内容。)
#range迭代 需要 end结束符
#if判断 需要 end结束符
例子: #range迭代数据{{end}}为结束符
docker inspect --format '{{range 要迭代的对象}}{{if eq "bind" 要判断的属性}}{{要输出的属性值}}{{print}}{{end}}{{end}}' 容器名或容器ID
docker inspect --format '{{range .Mounts}}{{if eq "bind" .Type}}{{.Source}}{{print}}{{end}}{{end}}' storage2
[root@dev4 dfsMergeFile]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d6c0c4a3e3fc sinoeyes.io/library/debug-server:1.0 "/bin/sh -c ./start.…" 43 minutes ago Up 43 minutes debug-server
2ce62c64fdd1 fa1edc10970c "container-entrypoin…" 4 weeks ago Up 4 weeks services-server
3e732e2563fb luhuiguo/fastdfs "/usr/bin/start.sh s…" 8 months ago Up 3 days storage2
06e1671727c9 luhuiguo/fastdfs "/usr/bin/start.sh s…" 8 months ago Up 3 days storage0
867564c71b62 luhuiguo/fastdfs "/usr/bin/start.sh t…" 8 months ago Up 2 months tracker
[root@dev4 dfsMergeFile]# docker inspect storage2
[
{
"Id": "3e732e2563fbcf036bac83c1449566132ffc8b51a4e9baf31146f8676f8b9039",
"Created": "2019-01-31T07:44:21.421918673Z",
"Path": "/usr/bin/start.sh",
"Args": [
"storage"
],
……
……
……
"Mounts": [
{
"Type": "volume",
"Name": "fd6a411ab2c376847657d504d1412a9e2a400c3c2b0ac8d2d87d604fd1f2f2a9",
"Source": "/var/lib/docker/volumes/fd6a411ab2c376847657d504d1412a9e2a400c3c2b0ac8d2d87d604fd1f2f2a9/_data",
"Destination": "/etc/fdfs",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
},
{
"Type": "bind",
"Source": "/root/data/storage2",
"Destination": "/var/fdfs",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
"Config": {
"Hostname": "dev4",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"22122/tcp": {},
"23000/tcp": {},
"8080/tcp": {},
"8888/tcp": {}
},
"Tty": true,
"OpenStdin": true,
"StdinOnce": false,
"Env": [
"TRACKER_SERVER=192.168.180.9:22122",
"GROUP_NAME=group2",
"PORT=22222",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"FASTDFS_PATH=/opt/fdfs",
"FASTDFS_BASE_PATH=/var/fdfs"
],
……
……
……
}
}
}
]
[root@dev4 dfsMergeFile]#
[root@dev4 dfsMergeFile]# docker inspect --format '{{range .Mounts}}{{if eq "bind" .Type}}{{.Source}}{{print}}{{end}}{{end}}' storage2
/root/data/storage2
[root@dev4 dfsMergeFile]#
docker search tutorial#搜索可用docker镜像
docker pull learn/tutorial #下载镜像
看日志
#docker logs 你的容器
查询容器
#docker ps -a
启动容器
#docker start 容器名或容器ID
重启容器
#docker restart 容器名或容器ID
停止容器
#docker stop 容器名
删除容器
#docker rm 容器名字
删除镜像docker images
#docker rmi 容器id
进入容器
其中字符串为容器ID:
#docker exec -it d27bd3008ad9 /bin/bash
查询容器docker ps -a
1.停用全部运行中的容器:
#docker stop $(docker ps -q)
2.删除全部容器:
#docker rm $(docker ps -aq)
3.一条命令实现停用并删除容器:
#docker stop $(docker ps -q) & docker rm $(docker ps -aq)
4、删除所有镜像
docker rmi docker images -q
5、查看docker网络
docker network ls
其他笔记:
docker inspect sinoeyes.io/dev2/paas-login:1.0.0
docker logs --tail 1000 -f fd4d8caf4a7d
删除为none的镜像
docker images | grep none | xargs docker rmi
docker查看网卡
docker network ls
push本地镜像到私有库docker-harbor(cat /etc/docker/daemon.json)
docker save REPOSITORY:TAG>/tmp/mysql.tar
docker load < /tmp/new-image.tar
docker push REPOSITORY:TAG
===========docker-compose启动容器时出现报错===========
1, Remove all containers, so docker ps --all shows nothing. ##删除所有的容器 docker rm 容器ID
2, systemctl stop docker ##停止docker
3, rm /var/lib/docker/network/files/local-kv.db
4, systemctl start docker
==========================
# filePath = os.system('docker inspect --format="{{(index .Mounts 1).Source}}" storage2')
# groupName = os.system('docker inspect --format="{{index .Config.Env 1}}" storage2')
# dockerName = os.system("docker ps | grep storage | awk '{print $11}'")
实例
使用当前目录的 Dockerfile 创建镜像,标签为 runoob/ubuntu:v1。
docker build -t runoob/ubuntu:v1 .
#'.'的意思指定调用哪个目录文件
docker build -t name:tag -f Dockerfile_path .
查看docker内存
docker stats id
docker build -t 名字:版本号 .
查看tracker的配置
docker exec -it tracker fdfs_monitor /etc/fdfs/client.conf
docker inspect --format='{{.State.Running}}' [NAME]/[CONTAINER ID]:查看容器的运行状态。
docker exec -it storage0 env
docker inspect --format='{{(index .Mounts 1).Source}}' storage2
筛选
docker ps | grep storage | awk '{print $11}'
range迭代数据
range 用于遍历结构内返回值的所有数据。支持的类型包括 array, slice, map 和 channel。使用要点:
对应的值长度为 0 时,range 不会执行。
结构内部如要使用外部的变量,需要在前面加 引用,比如Var2。
range 也支持 else 操作。效果是:当返回值为空或长度为 0 时执行 else 内的内容。
# range迭代 需要 end结束符
# if判断 需要 end结束符
docker inspect --format '{{range 要迭代的对象}}{{if eq "bind" 要判断的属性}}{{要输出的属性值}}{{print}}{{end}}{{end}}' 容器名或容器ID
docker inspect --format '{{range .Mounts}}{{if eq "bind" .Type}}{{.Source}}{{print}}{{end}}{{end}}' storage2
docker inspect --format '{{range .Mounts}}{{if eq "bind" .Type}}{{.Source}}{{print}}{{end}}{{end}}' storage2 #range迭代数据{{end}}为结束符
查看tracker的配置
docker exec -it tracker fdfs_monitor /etc/fdfs/client.conf
Docker作为目前最火的轻量级容器技术,牛逼的功能,如Docker的镜像管理,不足的地方网络方面。
Docker自身的4种网络工作方式,和一些自定义网络模式
我们在使用docker run创建Docker容器时,可以用 --net 选项指定容器的网络模式,Docker可以有以下4种网络模式:
host模式:使用 --net=host 指定。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口
none模式:使用 --net=none 指定。该模式关闭了容器的网络功能。
bridge模式:使用 --net=bridge 指定,默认设置。此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信。
container模式:使用 --net=container:NAME_or_ID 指定。创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围。
docker批量删除为none的镜像
docker images | grep none | xargs docker rmi
按条件筛选之后删除镜像
docker rmi `docker images | grep xxxxx | awk '{print $3}'`
按条件筛选之后批量删除镜像
docker images | grep "需要过滤的字段" | awk '{print $1":"$2}' | xargs docker rmi
Dockerfile相关命令参考
编写Dockerfile参考
-f 标志with docker build指向文件系统中任何位置的Dockerfile
$ docker build -f /path/to/a/Dockerfile .
可以指定一个存储库和标记,用于在其中存储新图像:docker build -t 名字:版本号 .
$ docker build -t shykes/myapp .
要在构建后将映像标记到多个存储库中,请在-t运行build命令时添加多个参数:
$ docker build -t shykes/myapp:1.0.2 -t shykes/myapp:latest .
更多推荐
所有评论(0)