共计 3530 个字符,预计需要花费 9 分钟才能阅读完成。
镜像操作
列出镜像:
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
hello-world latest 0a6ba66e537a 4 weeks ago 960 B
获取镜像:
docker 系统镜像可以从任意一个可访问的镜像仓库获取,默认从 docker hub 上获取,如果下载太慢的话可以考虑国内的镜像仓库,例如 dl.dockerpool.com:5000 或者阿里云镜像库下载。
docker 获取镜像用 docker pull 命令,如下:
# 从 docker 官方仓库下载 Ubuntu12.04 版本镜像
sudo docker pull ubuntu:12.04
从 dl.dockerpool 获取镜像
sudo docker pull dl.dockerpool.com:5000/ubuntu:12.04
注意:从第三方镜像仓库获取镜像可能出现 https 证书问题,例如:
Error response from daemon: unable to ping registry endpoint https://dl.dockerpool.com:5000/v0/
v2 ping attempt failed with error: Get https://dl.dockerpool.com:5000/v2/: tls: oversized record received with length 28012
v1 ping attempt failed with error: Get https://dl.dockerpool.com:5000/v1/_ping: tls: oversized record received with length 28012
解决方案:
进入 /etc/default 目录,找到 docker 文件,在其中添加如下代码:
DOCKER_OPTS="--insecure-registry dl.dockerpool.com:5000"
之后重启 docker 服务:
sudo service docker restart
镜像保存与导入
保存的文件以.tar 方式存在
保存方式一:save
save 命令会将镜像完整保存,包括历史版本和元数据信息,所以文件可能比较大。
-o: 表示以文件的形式导出 紧跟在 - o 后面的是导出文件保存的位置 最后是镜像(仓库:TAG, 或者镜像 id)
sudo docker save -o /home/fengzheng/dockerImages/mmm.tar ubuntu:12.04
同样用的是 Ubuntu, 在一台机器上正常,在另外一台机器上报如下错误,还没有找到原因,希望有知道原因的朋友在评论里指出,不胜感激。
Error response from daemon: open /var/lib/docker/aufs/mnt/30868777f2756735efc907c763555f869472d48ea92156c3c4b09ac22ec4adc6/.wh..wh.plnk/1003.3513973: operation not permitted
保存方式二:export
确切的说,export 其实是容器的保存,只把镜像当前的状态保存下来,没有历史版本等信息,所有文件比较小
-o: 表示以文件形式导出 紧跟在 - o 后面的是导出文件保存位置 最后是容器的 id 容器通过 sudo docker ps -a 查看,下一篇会介绍
docker export -o ubuntu1204.tar d0751467dcad
镜像导入:
docker load
sudo docker load < /home/fengzheng/Docker/ubtuntu12.04.tar
镜像删除
删除镜像前,要先把依赖于这个镜像的容器删除(sudo docker rm 容器 id)
删除镜像的命令是 docker rmi [镜像 id]
sudo docker rmi 0ac5b09d8536
Deleted: 0ac5b09d8536832e73c10e39bfda2e94781e07ebe47a206ea1c20f3f672f258a
Deleted: efbb515ae632b8ba4b8536c1eadcf1304d915c076fcadbc8c2cb6f8f2ab82013
Deleted: 5e59ab4801348d2d951c93373151bf0b4059c30bb1b58af4ce5e390114e83e1c
Deleted: be10ee96620dd1cb4bae39bb0351f241eed25b086e0c90a907a29eef2af41b34
提交修改的容器,并生成新的镜像
当对现有容器进行修改后,例如安装了某些软件、修改了配置等,要保存当前修改并生成新的镜像,使用 docker commit 命令,这个命令和 git 的 commit 命令很像
# -a: 修改者信息 -m: 注释、说明 紧跟着当前操作的容器 id 最后是要生成的新的镜像名称
sudo docker commit -a "fengzheng" -m "this is a commit message" ae2a59b86dd9 fengzheng/ubuntu
085243761c41ae58e92ba855539460b7342a5cd31b44b51a71c654bb8f823c10
查看镜像的信息:docker inspect [镜像名称或者镜像 id]
sudo docker inspect fengzheng/ubuntu
或者
sudo docker inspect 085243761c41
容器操作
新建并启动容器
根据一个镜像可以启动多个容器,启动容器的命令是 docker run
sudo docker run -t -i ubuntu:12.04 /bin/bash
或者
sudo docker run -t -i 镜像 id
常用参数解释:
-t 表示让 Docker 分配一个伪终端并绑定到容器的标准输入上
-i 表示让容器的标准输入保持打开
-d 表示以守护方式打开(即非交互模式,后台运行)
还有一个比较常用的,做网络配置时端口映射的参数 -p,例如下面的命令将宿主机的 3222 端口映射到容器的 22 端口、将宿主机的 3280 端口映射到容器的 22 端口,用法如下:
#-p 设置端口映射 -p 宿主机端口: 容器端口 <br>sudo docker run -t -i -p 3222:22 -p 3280:80 87e5b6b3ccc1 /bin/bash
查看容器列表
# 查看已启动的容器
sudo docker ps
# 查看所有容器
sudo docker ps -a
启动一个已存在的容器
# 后面的 id 为容器 ID<br>sudo docker start 8d98fd43acd4
进入容器
sudo docker attach 8d98fd43acd4
停止容器
sudo docker stop 8d98fd43acd4
删除容器
容器必须是停止状态的才可以删除
sudo docker rm 8d98fd43acd4
导出容器
# 将容器 id 为 7691a814370e 的导出到当前目录下 名称为 ubuntu.tar
sudo docker export 7691a814370e > ubuntu.tar
导入容器
更多 Docker 相关教程见以下内容:
Docker 安装应用(CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm
Ubuntu 14.04 安装 Docker http://www.linuxidc.com/linux/2014-08/105656.htm
Ubuntu 使用 VNC 运行基于 Docker 的桌面系统 http://www.linuxidc.com/Linux/2015-08/121170.htm
阿里云 CentOS 6.5 模板上安装 Docker http://www.linuxidc.com/Linux/2014-11/109107.htm
Ubuntu 15.04 下安装 Docker http://www.linuxidc.com/Linux/2015-07/120444.htm
在 Ubuntu Trusty 14.04 (LTS) (64-bit)安装 Docker http://www.linuxidc.com/Linux/2014-10/108184.htm
在 Ubuntu 15.04 上如何安装 Docker 及基本用法 http://www.linuxidc.com/Linux/2015-09/122885.htm
Docker 的详细介绍:请点这里
Docker 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-12/125908.htm