最近从新梳理了一下docker的一些基本知识,简单作了下总结。之后会逐步补充。html
$ uname -r
说明:centos安装docker比较简单,使用yum安装便可。ubuntu下若是实用apt-get的方式安装不会是最新版,能够以前帖子,里面作了详尽的讲解。nginx
ubuntu:http://www.cnblogs.com/tianhei/p/7802064.htmlweb
centos:yum install dockerdocker
$ docker -v
$ service docker start
$ systemctl start docker
$ systemctl enable docker
官方镜像:hub.docker.comubuntu
阿里云的docker仓库:dev.aliyun.comcentos
例如:docker pull busyboxbash
$ docker images
不能删除镜像的状况:网络
1)有容器使用镜像已经被建立app
2)此镜像是其余镜像的父镜像dom
查看当前跑起来的镜像:
$ docker ps -a
查看镜像的信息:
$ docker inspect app:1.0 //app是镜像名,1.0是镜像版本
删除镜像:
$ docker rmi IMAGE_ID // IMAGE_ID 是image的惟一id
官方网站(缺点网速慢):docker hub
私有仓库(须要维护网速快):
上传到官方docker hub实例:
1)进入docker hub官网网站建立帐号
2)docker login // 输入用户名密码
3)docker push carson/alpine // carson/alpine是镜像名
$ docker -run -d -p 5000:5000 --restart=always --name registry -v /data/registry:/var/lib/registry registry:2
说明:
dockcer run 建立容器
-d:建立后,进程启动到后台
-p:端口映射。前面宿主机,后面容器
--restart=always:有异常自动启动
--name:容器名字
-v:容器的目录映射
registry:2 : 要启动的镜像名字
run/create:建立
start:启动
stop/kill:中止
restart:重启
pause:暂停
unpause:恢复
logs:查看容器
stats:使用的容量等
top:看到容器跑了多少进程
port:端口映射信息
exec/attach:docker exec -it app bash //登陆容器中 exit退出
diff:
inspect:查看容器详细信息
update:更新容器信息
例如:docker update -h //查看帮助
docker update -m 256m app //app这个容器使用内容更新到256m
cp:拷贝文件。宿主机和容器间
例如:docker cp app:/usr/share/nginx/html/index.html .
export:把容器保存到tar文件
import:把tar文件导出到镜像列表
rm:删除。-f强制
镜像是只读的,容器是执行起来的镜像。
容器之间有同样的文件是可共用的,省资源。
commit:把容器commit成镜像
docker commit -h
save:把镜像保存成tar文件
load:把镜像tar文件导入到镜像列表
history:查看镜像的操做历史
pull:下载镜像
search:查找镜像源
默认的状况下,容器中的数据只有本次启动可见,若是容器重启数据不会保留。若想让数据持久化,须要使用volume参数来挂载一个本地路径以保留数据。
docker run -v把数据挂在到宿主机
容器间数据共享,至关于挂载:
例子:
第一个容器:docker run -d -v /web-data:/tmp:ro --name data-container demos
第二个容器:docker run -d --volumes-from data-container --name web-container domos
第三个容器:docker run -d --volumes-from data-container --name web-container-2 domos
dockerfile用于制做一个用户自定义的镜像。须要使用FROM、RUN、WORKDIR、CMD等语法格式进行编写。
dockerfile文件内容:
FROM centos:7 RUN yum -y install epel-release && \ yum -y install nginx && \ yum clean all EXPOSE 80 443 CMD ["nginx","-g","deamon off;"]
制做docker镜像
$ docker build -t app .
nat(默认):每一个容器有个网卡,每次启动都会给容器分配一个私有ip。每次启动ip会变
host:固定ip,跟主机ip相同,比较危险宿主机容易被攻击。docker run -d --name app --net=host nginx:1.11.1
container:两个容器使用同样的ip。docker run -it --name app --net:container:app1 app sh
none:不建立网络。