zoukankan      html  css  js  c++  java
  • docker初学,一些基础命令

     
    # 查看本地所有的镜像
    """
    docker images/ docker image ls

    $ docker image ls
    REPOSITORY TAG IMAGE ID CREATED SIZE
    redis latest 5f515359c7f8 5 days ago 183 M B
    nginx latest 05a60462f8ba 5 days ago 181 M B
    mongo 3.2 fe9198c04d62 5 days ago 342 M B
    <none> <none> 00285df0df87 5 days ago 342 M B
    ubuntu 16.04 f753707788c5 4 weeks ago 127 M B
    ubuntu latest f753707788c5 4 weeks ago 127 M B
    ubuntu 14.04 1e0c3dd64ccd 4 weeks ago 188 M B
    列表包含了 仓库名 、 标签 、 镜像 ID 、 创建时间 以及 所占用的空间 。镜像 ID 则是镜像的唯一标识,一个镜像可以对应多个标签。
    因此,在上面的例子中,我们可以看到 ubuntu:16.04 和ubuntu:latest 拥有相同的 ID,因为它们对应的是同一个镜像。

    """

    # 虚悬镜像
    """
    上面的镜像列表中,还可以看到一个特殊的镜像,这个镜像既没有仓库名,也没有标签,均
    为 <none> 。:
    <none> <none> 00285df0df87 5 days ago 342 M
    B
    可以用下面的命令专门显示这类镜像:
    docker image ls -f dangling=true
    一般来说,虚悬镜像已经失去了存在的价值,是可以随意删除的,可以用下面的命令删除。
    docker image prune
    """

    # 中间层镜像
    """
    为了加速镜像构建、重复利用资源,Docker 会利用 中间层镜像。所以在使用一段时间后,可
    能会看到一些依赖的中间层镜像。默认的 docker image ls 列表中只会显示顶层镜像,如果
    希望显示包括中间层镜像在内的所有镜像的话,需要加 -a 参数,命令如下:
    docker image ls -a
    """
    # 列出部分镜像
    """
    不加任何参数的情况下, docker image ls 会列出所有顶级镜像,但是有时候我们只希望列出
    部分镜像。 docker image ls 有好几个参数可以帮助做到这个事情。

    一:根据仓库名列出镜像
    $ docker image ls ubuntu
    REPOSITORY TAG IMAGE ID CREATED SIZE
    ubuntu 16.04 f753707788c5 4 weeks ago 127 MB
    ubuntu latest f753707788c5 4 weeks ago 127 MB
    ubuntu 14.04 1e0c3dd64ccd 4 weeks ago 188 MB

    二:列出特定的某个镜像,也就是说指定仓库名和标签
    $ docker image ls ubuntu:16.04
    REPOSITORY TAG IMAGE ID CREATED SIZE
    ubuntu 16.04 f753707788c5 4 weeks ago 127 MB

    三: docker image ls 还支持强大的过滤器参数 --filter ,或者简写 -f,比如,我们希望看到在mongo:3.2 之后建立的镜像,可以用下面的命令:
    $ docker image ls -f since=mongo:3.2
    REPOSITORY TAG IMAGE ID CREATED SIZE
    redis latest 5f515359c7f8 5 days ago 183 MB
    nginx latest 05a60462f8ba 5 days ago 181 MB
    想查看某个位置之前的镜像也可以,只需要把 since 换成 before 即可。
    """

    # 以特定格式显示
    """
    默认情况下, docker image ls 会输出一个完整的表格,但是我们并非所有时候都会需要这些
    内容。比如,刚才删除虚悬镜像的时候,我们需要利用 docker image ls 把所有的虚悬镜像
    的 ID 列出来,然后才可以交给 docker image rm 命令作为参数来删除指定的这些镜像,这个
    时候就用到了 -q 参数。

    $ docker image ls -q
    5f515359c7f8
    05a60462f8ba
    fe9198c04d62
    00285df0df87
    f753707788c5
    f753707788c5
    1e0c3dd64ccd

    下面的命令会直接列出镜像结果,并且只包含镜像ID和仓库名:
    $ docker image ls --format "{{.ID}}: {{.Repository}}"
    5f515359c7f8: redis
    05a60462f8ba: nginx
    fe9198c04d62: mongo
    00285df0df87: <none>
    f753707788c5: ubuntu
    f753707788c5: ubuntu
    1e0c3dd64ccd: ubuntu

    或者打算以表格等距显示,并且有标题行,和默认一样,不过自己定义列:
    $ docker image ls --format "table {{.ID}} {{.Repository}} {{.Tag}}"
    IMAGE ID REPOSITORY TAG
    5f515359c7f8 redis latest
    05a60462f8ba nginx latest
    fe9198c04d62 mongo 3.2
    00285df0df87 <none> <none>
    f753707788c5 ubuntu 16.04
    f753707788c5 ubuntu latest
    1e0c3dd64ccd ubuntu 14.04

    """
     
    
    
    # 删除一个镜像
    """
    一:第一种方法:

    #1, 首先列出来镜像
    docker image ls
    #2,然后根据 docker image rm [选项] <镜像1> [<镜像2> ...]
    例如:
    $ docker image ls
    REPOSITORY TAG IMAGE ID CREATED SIZE
    centos latest 0584b3d2cf6d 3 weeks ago 196.5 MB
    redis alpine 501ad78535f0 3 weeks ago 21.03 MB
    #3,删除redis的可用命令如下:
    docker image rm 501ad78535f0 或者 docker image rm 501(ID的前三位)

    二:第二种方法
    我们也可以用 镜像名 ,也就是 <仓库名>:<标签> ,来删除镜像,命令如下:。
    docker image rm redis

    三:第三种方法:
    更精确的是使用 镜像摘要 删除镜像。
    $ docker image ls --digests

    REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
    node slim sha256:b4f0e0bdeb578043c1ea6862f0d40cc4afe32a4a582f3be235a3b164422be228 6e0c4c8e3913 3 weeks ago 214 MB

    删除命令如下:
    $ docker image rm node@sha256:b4f0e0bdeb578043c1ea6862f0d40cc4afe32a4a582f3be235a3b164422be228

    四:用 docker image ls 命令来配合删除

    比如,我们需要删除所有仓库名为 redis 的镜像:
    $ docker image rm $(docker image ls -q redis)

    或者删除所有在 mongo:3.2 之前的镜像:
    $ docker image rm $(docker image ls -q -f before=mongo:3.2)
    # 删除所有镜像
    """
    docker rmi $(docker images | grep -v RESPOSITORY | awk '{print $3}')
    """
    
    
    # 运行一个容器
    """
    sudo docker run -d --name phototools -v /home/xgp/Downloads/PhotoTools/:/home -w /home -p xgp python3 check.py
    -d, --detach=false 指定容器运行于前台还是后台;
    --name 指定容器名字,后续可以直接通过这个名字进行容器的管理;
    -v, 给容器挂载储存卷,挂载到容器的某个目录;
    -w, 指定容器的工作目录;
    -p, 指定容器暴露的端口;
    """
    
    
    # 关闭运行中的容器
    """
    docker stop 容器的ID
    """
    # 启动一个已经停止的容器
    """
    docker start 容器ID
    """
    # 重启一个容器
    """
    docker restart 容器ID
    """
    # 进入一个运行的容器
    """
    docker attach 容器ID
    """
    # 显示全部容器
    """
    docker ps -a
    """
    
    
    # 显示当前运行的容器
    """
    docker ps
    """
    # 构建容器
    """
    docker build -t 镜像名称 . # 后面的. 指的是当前文件夹 (其实是Dockerfile存放的文件夹)
    # 建立映像文件。–rm 选项是告诉Docker,在构建完成后删除临时的Container,Dockerfile的每一行指令都会创建一个临时的Container,一般这些临时生成的Container是不需要的
    docker build --rm=true -t loen/lamp .
    """
    # 删除容器
    """
    docker rm 容器ID
    """
    # 删除所有容器
    """
    docker rm $(docker ps -a)
    """
    # 杀掉一些死的容器
    """
    sudo docker ps -a | grep Exited | awk '{print $1}'|xargs sudo docker rm
    """
    # 杀死正在运行的容器
    """
    docker kill -s KILL 容器ID
    """
    # 查看某个容器的日志
    """
    docker logs 容器ID
    """
    # 怎么在docker某个容器中安装一些没有的模块【使用 docker commit 定制镜像】
    """
    # 1,首先进入这个容器,
    docker run -it -d 容器名字 /bin/bash
    # 2,然后获取到运行的容器ID
    docker ps -a
    # 3,进入到docker中
    sudo docker exec -it 容器ID bash
    # 4,进行安装软件
    pip install 模块名字
    # 5,安装好后退出
    exit/(ctrl+d)
    # 6,进行提交更新的容器名字,并重新命名例:
    sudo docker commit 容器ID new_name(新容器的名字)
    # 7,重启docker服务即可
    sudo service docker restart
    """
    相当于在原有的镜像基础上 我们第一次完成了定制镜像,使用的是 docker commit 命令,手动操作给旧的镜像添 加了新的一层,形成新的镜像
    
    
    # 如何开启一个Tornado Web项目:
    sudo docker run -d --name phototools -v /home/xgp/Downloads/PhotoTools/:/home -w /home -p 5001:5002 -p 9962:9962 xgp python3 check.py 
    
    其中:9962端口是check.py文件中的端口
    
    
    

    参考文档:https://www.w3cschool.cn/docker/docker-nx3g2gxn.html


  • 相关阅读:
    Python获取会议部分的信息内容(不断完善中)
    TensorFlow学习笔记(UTF-8 问题解决 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte)
    Tensorflow学习笔记(对MNIST经典例程的)的代码注释与理解
    virtualenvwrapper
    最小二乘法与梯度下降的区别
    Git
    Jupyter
    Linux
    Iterm2
    Homebrew
  • 原文地址:https://www.cnblogs.com/fierydragon/p/10489170.html
Copyright © 2011-2022 走看看