docker image makeing

#启动镜像

sudo docker run --name webserver -d -p 80:80 nginx

#查看镜像和启动镜像区别

sudo docker diff webserver

#直接提交镜像

sudo docker commit \

--author "allenhaozi@gmail.com"

--message "add new feature"

webserver \

nginx:v2

 #清理所有出于终止态的容器

sudo docker rm $(sudo docker ps -a -q)

#进入docker

sudo exec -it <container_name> bash 

#docker file

 

FROM reg.docker.inc.com/centos
COPY local /home/admin/local
RUN yum install vim-minimal.x86_64 -y \
&& yum install openssl-libs.x86_64 -y \ 
&& yum install net-tools -y \
&& ln -s /usr/lib64/libssl.so.1.0.2k /usr/lib64/libssl.so.6 \
&& ln -s /usr/lib64/libcrypto.so.1.0.2k /usr/lib64/libcrypto.so.6 \
&& ln -s /home/admin/local/luajit/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2 
EXPOSE 8010
WORKDIR /home/admin
CMD ["/home/admin/local/tengine/sbin/nginx","-g","daemon off;"]

 

#编写好Dockerfile后, build镜像

sudo docker build -t reg.docker.master.com/name:version . 

注意到最后的一个 " . "    .   表示当前目录, 而Dockerfile就在当前目录

docker build的工作原理: docker 引擎(服务端守护进程)和客户端工具

docker 的引擎提供一组REST API被称为 Docker Remote API,

而如 docker 命令这样的客户端工具,则是通过这样组API与Docker引擎交互,

从而完成各种功能,

镜像的build 并非在本地构建, 而是在服务端,

命令得知这个路径后,会将路径下的所有内容打包,然后上 传给 Docker 引擎。这样 Docker 引擎收到这个上下文包后,展开就会获得构建镜 像所需的一切文件。

 

#镜像标记tag

#镜像打标格式为 docker tag IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]

sudo docker tag <image-name> reg.docker.master.com/name:version

举例: 使用docker tag 将ba58 这个镜像标记为 192.168.7.26:5000/test 

$sudo docker tag ba58 192.168.7.26:5000/test

 

#上传镜像

sudo docker push reg.docker.master.com/name:version

#加载非remote的镜像

 sudo docker load -i nginx.tar.gz 

#导出本地镜像到tar文件

sudo docker -o nginx.tar nginx:v.1.1.1

 

 

posted @ 2017-12-29 20:41  hao.ma  阅读(213)  评论(0编辑  收藏  举报