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 .

参考文档1

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐