docker使用整理

支持系统:
ubuntu:内核
Docker 支持以下的 Ubuntu 版本:
Ubuntu Precise 12.04 (LTS)
Ubuntu Trusty 14.04 (LTS)
Ubuntu Wily 15.10
centos:内核
Docker支持以下的CentOS版本:
CentOS 7 (64-bit)
CentOS 6.5 (64-bit) 或更高的版本
windows mac


安装(centos 7):

yum -y install docker-io
service docker restart
docker run hello-world

运行web:
docker pull training/webapp
docker run -d -p 5000:5000 training/webapp python app.py
docker port
终端:
docker run ubuntu:15.10 /bin/echo "Hello world"   //没有会去下载
docker run -i -t ubuntu:15.10 /bin/bash  //交互式
docker logs id

常用命令:
docker ps
docker images
docker rm 命令来删除不需要的容器  注意,不是docker images查到的镜像
docker pull 
docker search

创建镜像:
当我们从docker镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。
1.从已经创建的容器中更新镜像,并且提交这个镜像
docker run -t -i ubuntu:15.10 /bin/bash
//更新容器
docker commit -m="has update" -a="wangbo" 26599d50edad wangbo/ubuntu:v2
docker images


2.使用 Dockerfile 指令来创建一个新的镜像
 docker build    Dockerfile
docker build -t wangbo/centos:6.7 .
docker run -t -i wangbo/centos:6.7 /bin/bash

docker tag e36f722e480b wangbo/centos:dev   路径名:标签名


创建或者pull 镜像时,如果没有加标签,则自动认为是latest


docker 实例
(1)nginx镜像:主机和容器之间可以进行挂载等操作
-v进行目录挂载,指定mount目录和主目录,进入容器后直接调用
(2)python 镜像:
 -v 目录挂在,-w设定工作目录。


命令大全:

生命周期管理:run start/stop/restart  kill  rm  pause/unpause  create  exec
容器操作:ps inspect top attact events logs wait export port
容器rootfs命令:commit cp diff
镜像仓库: login/pull/push/search
本地镜像管理:images/rmi/tag/build/history/save/import
info|version: info/version


打包发布应用可以参考

https://blog.csdn.net/Deng2012web/article/details/78440796

https://www.cnblogs.com/yshyee/p/7258477.html


dockerfile cmd

一个Dockerfile仅仅最后一个CMD起作用。
执行文件或者没有执行文件(ENTRYPOINT提供),为执行容器提供缺省值。
如果CMD配合ENTRYPOINT那么他们的格式都需要是json数组格式,CMD用来提供参数。
CMD非参数模式,shell exec 当运行一个镜像的时候会执行。
shell格式 相当于指令在/bin/sh -c执行,如果不想使用shell格式,就需要使用数组格式,参数为单独字符串。
FROM ubuntu
CMD echo "This is a test." | wc -

FROM ubuntu
#需要程序地址
CMD ["/usr/bin/wc","--help"]
如果容器每次都执行则考虑CMD和ENTRYPOINT结合
docker run覆盖CMD
RUN镜像构建,并提交交结果。CMD构建阶段不执行,容器启动时候执行。
每个Dockfile只能有一条CMD命令,如果指定了多条,只有最后一条会执行。
如果用户启动容器时指定了运行命令,则会覆盖CMD指定命令




运行容器:

按用途容器大致可分为两类:服务类容器和工具类的容器。


1. 服务类容器以 daemon 的形式运行,对外提供服务。比如 web server,数据库等。通过 -d 以后台方式启动这类容器是非常合适的。如果要排查问题,可以通过 exec -it 进入容器。

2. 工具类容器通常给能我们提供一个临时的工作环境,通常以 run -it 方式运行,比如:

docker run

--restart=always 意味着无论容器因何种原因退出(包括正常退出),就立即重启。该参数的形式还可以是 --restart=on-failure:3,意思是如果启动进程退出代码非0,则重启容器,最多重启3次。

退出包括正常退出或者非正常退出。这里举了两个例子:启动进程正常退出或发生 OOM,此时 docker 会根据 --restart 的策略判断是否需要重启容器。但如果容器是因为执行 docker stop 或docker kill 退出,则不会自动重启。


docker rm 一次可以指定多个容器,如果希望批量删除所有已经退出的容器,可以执行如下命令:

docker rm -v $(docker ps -aq -f status=exited)


每天5分钟docker摘录

第一章:容器基本操作

构建镜像,分层结构,base镜像

本章首先通过大量实验学习了容器的各种操作以及容器状态之间如何转换,然后讨论了限制容器使用 CPU、内存和 Block IO 的方法,最后学习了实现容器的底层技术:cgroup 和 namespace。

下面是容器的常用操作命令:

create      创建容器  

run         运行容器  

pause       暂停容器  

unpause     取消暂停继续运行容器  

stop        发送 SIGTERM 停止容器  

kill        发送 SIGKILL 快速停止容器  

start       启动容器  

restart     重启容器  

attach      attach 到容器启动进程的终端  

exec        在容器中启动新进程,通常使用 "-it" 参数  

logs        显示容器启动进程的控制台输出,用 "-f" 持续打印  

rm          从磁盘中删除容器


第二章:网络

在这一章我们首先学习了 Docker 的三种网络:none, host 和 bridge 并讨论了它们的不同使用场景;然后我们实践了创建自定义网络;最后详细讨论了如何实现容器与容器之间,容器与外部网络之间的通信。

本章重点关注的是单个主机内的容器网络,对于跨主机网络通信将在后面章节详细讨论

docker使用整理


第三章:存储

1. docker 为容器提供了两种存储资源:数据层和 Data Volume。

2. 数据层包括镜像层和容器层,由 storage driver 管理。

3.Data Volume 有两种类型:bind mount 和 docker managed volume。

4.bind mount 可实现容器与 host 之间,容器与容器之间共享数据。

5.volume container 是一种具有更好移植性的容器间数据共享方案,特别是 data-packed volume container

6.最后我们学习了如何备份、恢复、迁移和销毁 Data Volume。