Docker 基本命令

docker的基本命令

docker version :查看docker的版本号,包括客户端、服务端、依赖的Go等

  1. [root@centos7 ~]# docker version
  2. Client:
  3. Version: 1.8.2-el7.centos
  4. API version: 1.20
  5. Package Version: docker-1.8.2-10.el7.centos.x86_64
  6. Go version: go1.4.2
  7. Git commit: a01dc02/1.8.2
  8. Built:
  9. OS/Arch: linux/amd64
  10.  
  11. Server:
  12. Version: 1.8.2-el7.centos
  13. API version: 1.20
  14. Package Version:
  15. Go version: go1.4.2
  16. Git commit: a01dc02/1.8.2
  17. Built:
  18. OS/Arch: linux/amd64

docker info:查看系统(docker)层面信息,包括管理的images, containers数等

  1. [root@centos7 ~]# docker info
  2. Containers: 1
  3. Images: 4
  4. Storage Driver: devicemapper
  5. Pool Name: docker-8:3-36786088-pool
  6. Pool Blocksize: 65.54 kB
  7. Backing Filesystem: xfs
  8. Data file: /dev/loop0
  9. Metadata file: /dev/loop1
  10. Data Space Used: 2.059 GB
  11. Data Space Total: 107.4 GB
  12. Data Space Available: 12.93 GB
  13. Metadata Space Used: 1.765 MB
  14. Metadata Space Total: 2.147 GB
  15. Metadata Space Available: 2.146 GB
  16. Udev Sync Supported: true
  17. Deferred Removal Enabled: false
  18. Data loop file: /var/lib/docker/devicemapper/devicemapper/data
  19. Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
  20. Library Version: 1.02.107-RHEL7 (2015-10-14)
  21. Execution Driver: native-0.2
  22. Logging Driver: json-file
  23. Kernel Version: 3.10.0-327.el7.x86_64
  24. Operating System: CentOS Linux 7 (Core)
  25. CPUs: 1
  26. Total Memory: 977.9 MiB
  27. Name: centos7
  28. ID: BUKD:MUW2:5X2D:G7BF:6Y7G:SKIH:LD6K:VUAC:3QA4:JY5C:S3DG:LFT2
  29. WARNING: bridge-nf-call-iptables is disabled
  30. WARNING: bridge-nf-call-ip6tables is disabled

 search 搜索镜像

  1. [root@centos7 ~]# docker search ubuntu12.10
  2. INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
  3. docker.io docker.io/chug/ubuntu12.10x32 Ubuntu Quantal Quetzal 12.10 32bit base i... 0
  4. docker.io docker.io/chug/ubuntu12.10x64 Ubuntu Quantal Quetzal 12.10 64bit base i... 0
  5. docker.io docker.io/marcgibbons/ubuntu12.10 0
  6. docker.io docker.io/mirolin/ubuntu12.10 0
  7. docker.io docker.io/mirolin/ubuntu12.10_redis 0

pull 下载镜像

  1. [root@centos7 ~]# docker pull ubuntu

run 使用镜像创建容器

  1. [root@centos7 ~]# docker run ubuntu /bin/echo hello world

run 创建容器,并交互式的运行
这里会创建一个新的容器。

  1. [root@centos7 ~]# docker run -i -t ubuntu /bin/bash
  2. root@c43c7d102baa:/# cat /etc/issue
  3. Ubuntu 14.04.3 LTS \n \l
  4. # -t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开

当利用 docker run 来创建容器时,Docker 在后台运行的标准操作包括:

  • 检查本地是否存在指定的镜像,不存在就从公有仓库下载
  • 利用镜像创建并启动一个容器
  • 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
  • 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
  • 从地址池配置一个 ip 地址给容器
  • 执行用户指定的应用程序
  • 执行完毕后容器被终止

run -d 守护态运行
更多的时候,需要让 Docker 容器在后台以守护态(Daemonized)形式运行。此时,可以通过添加 -d 参数来实现。
例如下面的命令会在后台运行容器。

  1. [root@centos7 ~]# docker run -d ubuntu /bin/bash -c "while true;do echo hello world;sleep 1;done"

logs 查看容器的运行

以上个例子为前导。

  1. [root@centos7 ~]# docker logs 4f34f95b6abc
  2. hello world
  3. hello world
  4. hello world
  5. hello world
  6. hello world
  7. hello world
  8. hello world

ps 查看容器

  1. [root@centos7 ~]# docker ps -h
  2.  
  3. Usage: docker ps [OPTIONS]
  4.  
  5. List containers
  6.  
  7. -a, --all=false Show all containers (default shows just running)
  8. --before= Show only container created before Id or Name
  9. -f, --filter=[] Filter output based on conditions provided
  10. --format= Pretty-print containers using a Go template
  11. --help=false Print usage
  12. -l, --latest=false Show the latest created container, include non-running
  13. -n=-1 Show n last created containers, include non-running
  14. --no-trunc=false Don't truncate output
  15. -q, --quiet=false Only
  16. numeric IDs
  17. -s, --size=false Display total file sizes
  18. --since= Show created since Id or Name, include non-running

attach 连接已经启动的容器 / start -i 启动并连接容器

  1. [root@centos7 ~]# docker ps -a #查看容器ID
  2. [root@centos7 ~]# docker start <CONTAINER ID> #启动容器
  3. [root@centos7 ~]# docker attach <CONTAINER ID> #连接容器,该容器必须是启动状态
  4. 或者
  5. [root@centos7 ~]# docker start -i <CONTAINER ID> #启动并连接容器

:但是使用 attach 命令有时候并不方便。当多个窗口同时 attach 到同一个容器的时候,所有窗口都会同步显示。当某个窗口因命令阻塞时,其他窗口也无法执行操作了。

commit 将容器的状态保存为镜像

  1. [root@centos7 ~]# docker commit c43c7d102baa ubhttp
  2. d47bbf8e50bace073de2b256b0360cfab029c11881f0d361fce7ae7464aa40ff
  3. [root@centos7 ~]# docker images
  4. REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
  5. ubhttp latest d47bbf8e50ba 54 seconds ago 248 MB
  6. docker.io/ubuntu latest 8693db7e8a00 7 days ago 187.9 MB
  7. ## 更为标准点的如下:
  8. $ sudo docker commit -m "Added json gem" -a "Docker Newbee" 0b2616b0e5a8 ouruser/sinatra:v2
  9. 其中,-m 来指定提交的说明信息,跟我们使用的版本控制工具一样;-a 可以指定更新的用户信息;之后是用来创建镜像的容器的 ID;最后指定目标镜像的仓库名和 tag 信息。创建成功后会返回这个镜像的 ID 信息。

diff 命令查看容器内的文件变化

它可以列出容器内发生变化的文件和目录。这些变化包括添加(A-add)、删除(D-delete)、修改(C-change)

  1. [root@centos7 ~]# docker diff c43c7d102baa

cp 命令拷贝文件

  1. #从docker中往本地拷贝文件
  2. [root@centos7 ~]# docker cp c43c7d102baa:/var/www/html/index.html /opt/
  3. [root@centos7 ~]# ls /opt/
  4. index.html rh
  5. # 从本地往docker中拷贝文件
  6. [root@centos7 ~]# docker cp aa c43c7d102baa:/var
  7. [root@centos7 ~]# docker start -i c43c7d102baa
  8. root@c43c7d102baa:/# ls
  9. bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
  10. root@c43c7d102baa:/# ls var/
  11. aa backups cache lib local lock log mail opt run spool tmp www

inspect 收集有关容器和镜像的底层信息

Docker inspect命令可以收集有关容器和镜像的底层信息。这些信息包括:

  • 容器实例的IP地址
  • 端口绑定列表
  • 特定端口映射的搜索
  • 收集配置的详细信息

语法:

  1. docker inspect container/image

kill 命令发送sigkill信号停止容器的主进程

语法:

  1. docker kill [options] <container_id>

rmi 移除一个或多个镜像

  1. docker rmi <image_id>
  2. #注意:在删除镜像之前要先用 docker rm 删掉依赖于这个镜像的所有容器

wait 阻塞对指定容器的其它调用方法,直到容器停止后退出阻塞

  1. docker wait <container_id>

tag 修改镜像的标签

  1. [root@centos7 ~]# docker images
  2. REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
  3. <none> <none> f59c7e5b1817 18 hours ago 192 MB
  4. docker.io/ubuntu latest 8693db7e8a00 7 days ago 187.9 MB
  5. [root@centos7 ~]# docker tag f59c7e5b1817 zwx/ub_mv:127
  6. [root@centos7 ~]# docker images
  7. REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
  8. zwx/ub_mv 127 f59c7e5b1817 18 hours ago 192 MB
  9. docker.io/ubuntu latest 8693db7e8a00 7 days ago 187.9 MB

docker的导入导出操作

save 保存镜像为tar文件并发送到STDOUT:

  1. [root@node2 ~]# docker images
  2. REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
  3. zwx_ub latest f59c7e5b1817 7 seconds ago 192 MB
  4. ubuntu latest 8693db7e8a00 6 days ago 187.9 MB
  5. [root@node2 ~]# docker save f59c7e5b1817 >zwx_ub.tar
  6. # 我将zwx_ub这个镜像导出成tar包,并拷贝到centos7的测试机中导入,导入过程在下边。

load 从tar文件中载入镜像或仓库到STDIN:

  1. [root@centos7 ~]# docker load -i zwx_ub.tar
  2. [root@centos7 ~]# docker images
  3. REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
  4. ubhttp latest d47bbf8e50ba About an hour ago 248 MB
  5. <none> <none> f59c7e5b1817 16 hours ago 192 MB
  6. docker.io/ubuntu latest 8693db7e8a00 7 days ago 187.9 MB
  7. [root@centos7 ~]# docker run -it f59c7e5b1817
  8. root@e17558664f8d:/# ls
  9. bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
  10. root@e17558664f8d:/# ls /mnt/
  11. zwx
  12. # 可以看出,我导入zwx_ub这个镜像后,镜像ID并没有变化,我创建个容器并进入,发现打包前我创建的文件都在。

import 从本地文件系统导入一个镜像

比如,先下载了一个 ubuntu-14.04 的镜像,之后使用以下命令导入
tar.gz的镜像可以在http://openvz.org/Download/template/precreated下载。

  1. [root@centos7 ~]# cat ubuntu-14.04-x86_64-minimal.tar.gz |docker import - ubuntu:zwx
  2. 23997a971195cdd826f16a50573e480e1be1679729636178146425cdd46d1b52
  3. [root@centos7 ~]# docker images
  4. REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
  5. ubuntu zwx 23997a971195 28 seconds ago 214.9 MB

export 容器的导出

  1. [root@centos7 ~]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 16f568766019 ubuntu "/bin/bash" 52 minutes ago Up 45 minutes elegant_mcclintock
  4. [root@centos7 ~]# docker export 16f568766019 >ubuntu.tar

import 容器的导入

可以将容器的tar文件再导入为镜像

  1. $ cat ubuntu.tar | sudo docker import - test/ubuntu:v1.0
  2. $ sudo docker images
  3. REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
  4. test/ubuntu v1.0 9d37a6082e97 About a minute ago 171.3 MB

此外,也可以通过指定 URL 或者某个目录来导入,例如

  1. $sudo docker import http://example.com/exampleimage.tgz example/imagerepo

:用户既可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import 来导入一个容器快照到本地镜像库。这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入时可以重新指定标签等元数据信息。

转自:https://www.jianshu.com/p/4ab37ad30bd2

七、docker基本命令的更多相关文章

  1. 15个Docker基本命令及用法

    Docker入门教程:15个Docker基本命令及用法   本文中,我们将学习15个Docker命令以及命令的用法和功能,并通过实践学习它是如何工作的. AD:51CTO 网+ 第十二期沙龙:大话数据 ...

  2. (七) Docker 部署 MySql8.0 一主一从 高可用集群

    参考并感谢 官方文档 https://hub.docker.com/_/mysql y0ngb1n https://www.jianshu.com/p/0439206e1f28 vito0319 ht ...

  3. Docker 基本命令和使用

    Docker 基本命令 systemctl start docker : 启动 Docker systemctl stop docker : 停止 Docker systemctl restart d ...

  4. Docker基本命令

    1.搜索Docker镜像 docker search <镜像名> 2.获取镜像 docker pull <镜像名> 3.查看本地镜像 docker images 4.删除镜像 ...

  5. docker:(1)docker基本命令使用及发布镜像

    docker镜像可以完全看作一台全新的电脑使用,无论什么镜像都是对某一东西进行了配置,然后打包后可以快速移植到需要的地方直接使用 省去复杂的配置工作 比如java web项目部署,如果是新部署,需要装 ...

  6. 再谈docker基本命令

    子曰,温故而知新 今日,再次看书之际,又寻得docker的几条使用命令,用小本本记下来 配置docker镜像源 当我们在拉去一些共有镜像时,默认,docker会向docker.io去获取,如果在拉取的 ...

  7. docker基本命令使用

    学会使用docker命令帮助 docker help 子命令 查看docker镜像 docker images 搜索镜像 docker search 镜像名 下载镜像 docker pull 镜像名 ...

  8. Docker基本命令与使用 —— Docker容器的网络连接(四)

    一.Docker容器的网络基础 通过ifconfig查看docker0的网络设备,docker守护进程就是通过docker0为docker的容器提供网络连接的各种服务. docker0是Linux虚拟 ...

  9. Docker基本命令汇总

    Docker的三大核心概念:镜像.容器.仓库 镜像:类似虚拟机的镜像.用俗话说就是安装文件. 容器:类似一个轻量级的沙箱,容器是从镜像创建应用运行实例,可以将其启动.开始.停止.删除.而这些容器都是相 ...

随机推荐

  1. git stash暂存当前正在进行的工作

    git stash 可用来暂存当前正在进行的工作, 比如想pull 最新代码, 又不想加新commit, 或者另外一种情况,为了fix 一个紧急的bug,  先stash, 使返回到自己上一个comm ...

  2. 如何写一个跨浏览器的事件处理程序 js

    如何 写一个合格的事件处理程序,看如下代码: EventUtil可以直接拿去用 不谢 <!DOCTYPE html> <html> <head> <title ...

  3. 最大流bfs

    #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #i ...

  4. Spring MVC 入门实例报错404的解决方案

    若启动服务器控制台报错,并且是未找到xml配置文件,初始化DispatchServlet失败,或者控制台未报错404,那么: 1.URL的排查: 格式-----------协议名://地址:端口号/上 ...

  5. Linux KDE 设置显示桌面的快捷键 win+d

    原文链接:http://blog.sina.com.cn/s/blog_4b91893c0100sxxg.html 到KDE下以后发现显示桌面的快捷键被用来显示平铺窗口,在Win下的时候一直用这个快捷 ...

  6. kafka客户端发布record(消息)

    kafka客户端发布record(消息)到kafka集群. 新的生产者是线程安全的,在线程之间共享单个生产者实例,通常单例比多个实例要快. 一个简单的例子,使用producer发送一个有序的key/v ...

  7. BZOJ1485: [HNOI2009]有趣的数列(Catalan数,质因数分解求组合数)

    题意 挺简洁的. 我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列{ai}: (2)所有的奇数项满足a1<a3<…<a ...

  8. Linux下环境搭建(二)——jenkins+gitlab配置

    配置jenkins+gitlab环境,需要依托java环境,在之前的博文中,已配置好java环境,所以可以直接搭建这两个工具的环境即可. jenkins配置 jenkins的配置方法,在之前windo ...

  9. Android LitePal介绍与使用说明

    LitePal for Android LitePal是一个Android开源库,它使开发者使用SQLite数据库变得非常容易. 你可以不用写一句SQL语句就可以完成大部分数据库操作,包括创建表,更新 ...

  10. hihoCoder hiho一下 第四十六周 博弈游戏·Nim游戏·三( sg函数 )

    题意: 给出几堆石子数量,每次可以取走一堆中任意数量的石头,也可以将一堆分成两堆,而不取.最后取走者胜. 思路: 先规矩地计算出sg值,再对每个数量查SG值就可以了.最后求异或和.和不为0的就是必赢. ...