七、docker基本命令
Docker 基本命令
docker的基本命令
docker version :查看docker的版本号,包括客户端、服务端、依赖的Go等
[root@centos7 ~]# docker version
Client:
Version: 1.8.2-el7.centos
API version: 1.20
Package Version: docker-1.8.2-10.el7.centos.x86_64
Go version: go1.4.2
Git commit: a01dc02/1.8.2
Built:
OS/Arch: linux/amd64 Server:
Version: 1.8.2-el7.centos
API version: 1.20
Package Version:
Go version: go1.4.2
Git commit: a01dc02/1.8.2
Built:
OS/Arch: linux/amd64
docker info:查看系统(docker)层面信息,包括管理的images, containers数等
[root@centos7 ~]# docker info
Containers: 1
Images: 4
Storage Driver: devicemapper
Pool Name: docker-8:3-36786088-pool
Pool Blocksize: 65.54 kB
Backing Filesystem: xfs
Data file: /dev/loop0
Metadata file: /dev/loop1
Data Space Used: 2.059 GB
Data Space Total: 107.4 GB
Data Space Available: 12.93 GB
Metadata Space Used: 1.765 MB
Metadata Space Total: 2.147 GB
Metadata Space Available: 2.146 GB
Udev Sync Supported: true
Deferred Removal Enabled: false
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
Library Version: 1.02.107-RHEL7 (2015-10-14)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.10.0-327.el7.x86_64
Operating System: CentOS Linux 7 (Core)
CPUs: 1
Total Memory: 977.9 MiB
Name: centos7
ID: BUKD:MUW2:5X2D:G7BF:6Y7G:SKIH:LD6K:VUAC:3QA4:JY5C:S3DG:LFT2
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
search 搜索镜像:
[root@centos7 ~]# docker search ubuntu12.10
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/chug/ubuntu12.10x32 Ubuntu Quantal Quetzal 12.10 32bit base i... 0
docker.io docker.io/chug/ubuntu12.10x64 Ubuntu Quantal Quetzal 12.10 64bit base i... 0
docker.io docker.io/marcgibbons/ubuntu12.10 0
docker.io docker.io/mirolin/ubuntu12.10 0
docker.io docker.io/mirolin/ubuntu12.10_redis 0
pull 下载镜像:
[root@centos7 ~]# docker pull ubuntu
run 使用镜像创建容器:
[root@centos7 ~]# docker run ubuntu /bin/echo hello world
run 创建容器,并交互式的运行:
这里会创建一个新的容器。
[root@centos7 ~]# docker run -i -t ubuntu /bin/bash
root@c43c7d102baa:/# cat /etc/issue
Ubuntu 14.04.3 LTS \n \l
# -t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开
当利用 docker run 来创建容器时,Docker 在后台运行的标准操作包括:
- 检查本地是否存在指定的镜像,不存在就从公有仓库下载
- 利用镜像创建并启动一个容器
- 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
- 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
- 从地址池配置一个 ip 地址给容器
- 执行用户指定的应用程序
- 执行完毕后容器被终止
run -d 守护态运行:
更多的时候,需要让 Docker 容器在后台以守护态(Daemonized)形式运行。此时,可以通过添加 -d 参数来实现。
例如下面的命令会在后台运行容器。
[root@centos7 ~]# docker run -d ubuntu /bin/bash -c "while true;do echo hello world;sleep 1;done"
logs 查看容器的运行:
以上个例子为前导。
[root@centos7 ~]# docker logs 4f34f95b6abc
hello world
hello world
hello world
hello world
hello world
hello world
hello world
ps 查看容器:
[root@centos7 ~]# docker ps -h Usage: docker ps [OPTIONS] List containers -a, --all=false Show all containers (default shows just running)
--before= Show only container created before Id or Name
-f, --filter=[] Filter output based on conditions provided
--format= Pretty-print containers using a Go template
--help=false Print usage
-l, --latest=false Show the latest created container, include non-running
-n=-1 Show n last created containers, include non-running
--no-trunc=false Don't truncate output
-q, --quiet=false Only
numeric IDs
-s, --size=false Display total file sizes
--since= Show created since Id or Name, include non-running
attach 连接已经启动的容器 / start -i 启动并连接容器:
[root@centos7 ~]# docker ps -a #查看容器ID
[root@centos7 ~]# docker start <CONTAINER ID> #启动容器
[root@centos7 ~]# docker attach <CONTAINER ID> #连接容器,该容器必须是启动状态
或者
[root@centos7 ~]# docker start -i <CONTAINER ID> #启动并连接容器
注:但是使用 attach 命令有时候并不方便。当多个窗口同时 attach 到同一个容器的时候,所有窗口都会同步显示。当某个窗口因命令阻塞时,其他窗口也无法执行操作了。
commit 将容器的状态保存为镜像:
[root@centos7 ~]# docker commit c43c7d102baa ubhttp
d47bbf8e50bace073de2b256b0360cfab029c11881f0d361fce7ae7464aa40ff
[root@centos7 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubhttp latest d47bbf8e50ba 54 seconds ago 248 MB
docker.io/ubuntu latest 8693db7e8a00 7 days ago 187.9 MB
## 更为标准点的如下:
$ sudo docker commit -m "Added json gem" -a "Docker Newbee" 0b2616b0e5a8 ouruser/sinatra:v2
其中,-m 来指定提交的说明信息,跟我们使用的版本控制工具一样;-a 可以指定更新的用户信息;之后是用来创建镜像的容器的 ID;最后指定目标镜像的仓库名和 tag 信息。创建成功后会返回这个镜像的 ID 信息。
diff 命令查看容器内的文件变化:
它可以列出容器内发生变化的文件和目录。这些变化包括添加(A-add)、删除(D-delete)、修改(C-change)
[root@centos7 ~]# docker diff c43c7d102baa
cp 命令拷贝文件:
#从docker中往本地拷贝文件
[root@centos7 ~]# docker cp c43c7d102baa:/var/www/html/index.html /opt/
[root@centos7 ~]# ls /opt/
index.html rh
# 从本地往docker中拷贝文件
[root@centos7 ~]# docker cp aa c43c7d102baa:/var
[root@centos7 ~]# docker start -i c43c7d102baa
root@c43c7d102baa:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@c43c7d102baa:/# ls var/
aa backups cache lib local lock log mail opt run spool tmp www
inspect 收集有关容器和镜像的底层信息:
Docker inspect命令可以收集有关容器和镜像的底层信息。这些信息包括:
- 容器实例的IP地址
- 端口绑定列表
- 特定端口映射的搜索
- 收集配置的详细信息
语法:
docker inspect container/image
kill 命令发送sigkill信号停止容器的主进程:
语法:
docker kill [options] <container_id>
rmi 移除一个或多个镜像:
docker rmi <image_id>
#注意:在删除镜像之前要先用 docker rm 删掉依赖于这个镜像的所有容器
wait 阻塞对指定容器的其它调用方法,直到容器停止后退出阻塞
docker wait <container_id>
tag 修改镜像的标签
[root@centos7 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
<none> <none> f59c7e5b1817 18 hours ago 192 MB
docker.io/ubuntu latest 8693db7e8a00 7 days ago 187.9 MB
[root@centos7 ~]# docker tag f59c7e5b1817 zwx/ub_mv:127
[root@centos7 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
zwx/ub_mv 127 f59c7e5b1817 18 hours ago 192 MB
docker.io/ubuntu latest 8693db7e8a00 7 days ago 187.9 MB
docker的导入导出操作
save 保存镜像为tar文件并发送到STDOUT:
[root@node2 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
zwx_ub latest f59c7e5b1817 7 seconds ago 192 MB
ubuntu latest 8693db7e8a00 6 days ago 187.9 MB
[root@node2 ~]# docker save f59c7e5b1817 >zwx_ub.tar
# 我将zwx_ub这个镜像导出成tar包,并拷贝到centos7的测试机中导入,导入过程在下边。
load 从tar文件中载入镜像或仓库到STDIN:
[root@centos7 ~]# docker load -i zwx_ub.tar
[root@centos7 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubhttp latest d47bbf8e50ba About an hour ago 248 MB
<none> <none> f59c7e5b1817 16 hours ago 192 MB
docker.io/ubuntu latest 8693db7e8a00 7 days ago 187.9 MB
[root@centos7 ~]# docker run -it f59c7e5b1817
root@e17558664f8d:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@e17558664f8d:/# ls /mnt/
zwx
# 可以看出,我导入zwx_ub这个镜像后,镜像ID并没有变化,我创建个容器并进入,发现打包前我创建的文件都在。
import 从本地文件系统导入一个镜像
比如,先下载了一个 ubuntu-14.04 的镜像,之后使用以下命令导入
tar.gz的镜像可以在http://openvz.org/Download/template/precreated
下载。
[root@centos7 ~]# cat ubuntu-14.04-x86_64-minimal.tar.gz |docker import - ubuntu:zwx
23997a971195cdd826f16a50573e480e1be1679729636178146425cdd46d1b52
[root@centos7 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu zwx 23997a971195 28 seconds ago 214.9 MB
export 容器的导出
[root@centos7 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
16f568766019 ubuntu "/bin/bash" 52 minutes ago Up 45 minutes elegant_mcclintock
[root@centos7 ~]# docker export 16f568766019 >ubuntu.tar
import 容器的导入:
可以将容器的tar文件再导入为镜像
$ cat ubuntu.tar | sudo docker import - test/ubuntu:v1.0
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
test/ubuntu v1.0 9d37a6082e97 About a minute ago 171.3 MB
此外,也可以通过指定 URL 或者某个目录来导入,例如
$sudo docker import http://example.com/exampleimage.tgz example/imagerepo
注:用户既可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import 来导入一个容器快照到本地镜像库。这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入时可以重新指定标签等元数据信息。
转自:https://www.jianshu.com/p/4ab37ad30bd2
七、docker基本命令的更多相关文章
- 15个Docker基本命令及用法
Docker入门教程:15个Docker基本命令及用法 本文中,我们将学习15个Docker命令以及命令的用法和功能,并通过实践学习它是如何工作的. AD:51CTO 网+ 第十二期沙龙:大话数据 ...
- (七) Docker 部署 MySql8.0 一主一从 高可用集群
参考并感谢 官方文档 https://hub.docker.com/_/mysql y0ngb1n https://www.jianshu.com/p/0439206e1f28 vito0319 ht ...
- Docker 基本命令和使用
Docker 基本命令 systemctl start docker : 启动 Docker systemctl stop docker : 停止 Docker systemctl restart d ...
- Docker基本命令
1.搜索Docker镜像 docker search <镜像名> 2.获取镜像 docker pull <镜像名> 3.查看本地镜像 docker images 4.删除镜像 ...
- docker:(1)docker基本命令使用及发布镜像
docker镜像可以完全看作一台全新的电脑使用,无论什么镜像都是对某一东西进行了配置,然后打包后可以快速移植到需要的地方直接使用 省去复杂的配置工作 比如java web项目部署,如果是新部署,需要装 ...
- 再谈docker基本命令
子曰,温故而知新 今日,再次看书之际,又寻得docker的几条使用命令,用小本本记下来 配置docker镜像源 当我们在拉去一些共有镜像时,默认,docker会向docker.io去获取,如果在拉取的 ...
- docker基本命令使用
学会使用docker命令帮助 docker help 子命令 查看docker镜像 docker images 搜索镜像 docker search 镜像名 下载镜像 docker pull 镜像名 ...
- Docker基本命令与使用 —— Docker容器的网络连接(四)
一.Docker容器的网络基础 通过ifconfig查看docker0的网络设备,docker守护进程就是通过docker0为docker的容器提供网络连接的各种服务. docker0是Linux虚拟 ...
- Docker基本命令汇总
Docker的三大核心概念:镜像.容器.仓库 镜像:类似虚拟机的镜像.用俗话说就是安装文件. 容器:类似一个轻量级的沙箱,容器是从镜像创建应用运行实例,可以将其启动.开始.停止.删除.而这些容器都是相 ...
随机推荐
- CSS修改Autocomplete样式
举个场景:在用户登录成功的时候,浏览器有时候会咨询你是否记住密码,当你记住密码下次登录的时候,标签会自动填充,但是这样会造成样式不统一,解决办法如下: input:-webkit-autofill, ...
- kafka-->storm-->mongodb
目的: 通过Spout发射kafka的数据,到bolt统计每一个单词的个数,将这些记录更新到mongodb中. Spout的nextTuple方法会一直处于一个while循环这中,每一条数据发送给bo ...
- ps 进程管理
一. 进程管理 1. pstree 2. ps 3. top 4. nice 5. free 6. screen 二. 程序与进程 程序是静态的文件,进程是动态运行的程序. 三. 进程和线程 一个程序 ...
- vue2.0:(四)、首页入门,组件拆分1
为什么需要组件拆分呢?这样才能更符合模块化这样一个理念. 首先是index.html,代码如下: <!DOCTYPE html> <html> <head> < ...
- Visual Studio使用技巧学习
F7: 代码窗口 Shift+F7: 对象窗口 F4: 属性窗口 闪电图标: 对象的事件 F5: 编译及运行 Ctrl+F5: 编译及运行(不调试) svm+两次Tab: s ...
- MFC程序添加快捷键
[问题提出] 有的程序需要自定义组合键完成一定功能,如何实现? [解决方法] RegisterHotKey函数原型及说明: BOOL RegisterHotKey( H ...
- iOS NSDate 常用日期相关函数的封装
Category是类别,一般情况用分类好,用Category去重写类的方法,仅对本Category有效,不会影响到其他类与原有类的关系. NSDate+Category.h 代码: #import & ...
- jmeter中通过beanshell访问eclipse中导出jar中的java类的方法
主要步骤 1.在eclipse中导出要引用的java代码为jar文件 2.将生成的jar文件放到jmeter的lib的ext目录下 3.在jmeter的jsr223处理器中导入要引用的java类型文件 ...
- HDU 4044 GeoDefense (树形DP,混合经典)
题意: 给一棵n个节点的树,点1为敌方基地,叶子结点都为我方阵地.我们可以在每个结点安放炸弹,每点至多放一个,每个结点有ki种炸弹可选,且每种炸弹有一个花费和一个攻击力(1点攻击力使敌人掉1点hp). ...
- 插值(scipy.interpolate)
https://docs.scipy.org/doc/scipy/reference/interpolate.html#module-scipy.interpolate https://stackov ...