本文共 4699 字,大约阅读时间需要 15 分钟。
用docker images来查看镜像。
可以通过docker search命令来查找所有Docker Hub上公共的可用镜像。
字段含义:仓库名、镜像描述、用户评价(Stars)、是否官方、自动构建
[root@dst6 containers]# docker loginUsername: harboursidePassword: Email: hhfc_qq@163.comWARNING: login credentials saved in /root/.docker/config.jsonLogin Succeeded
创建Dokcer镜像可以想象为我们是在往版本控制系统里提交变更。先创建一个容器,并在容器里做出修改,最后再将修改提交为一个新镜像。
[root@dst6 containers]# docker run --net host --name test_dev -t -i centos /bin/bash
这里安装vim然后发布为镜像。
[root@dst6 ~]# docker commit a11bc8f23aa0 harbourside/bigdata
也可以加参数来制定更多的描述。
docker commit -m=”a new image” --author=”bigdata” a11bc8f23aa0 harbourside/yongyou:test
-m来制定新创建的镜像的提交信息,--author选项用来列出该镜像的作者信息。harbourside/yongyou指定了镜像的用户名和仓库名,并为该镜像增加了一个test标签。
[root@dst6 ~]# docker push harbourside/bigdata 上传到镜像仓库。
(#Version:0.01FROM centosMAINTAINER bigdata "79021218@qq.com"RUN yum install -y tomcatEXPOSE 80)#Version:0.01FROM centosMAINTAINER bigdata "79021218@qq.com"RUN yum -y install wgetRUN wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpmRUN rpm -ivh epel-release-6-8.noarch.rpmRUN rpm -Va --nofiles --nodigestRUN yum install -y nginx --skip-brokenEXPOSE 80
解释:
Dockerfile支持注释,用#去注释。
每条指令,必须大写,例如FROM。
每条指令都会创建一个新的镜像层并对镜像金星提交。
每个Dockerfile的第一条指令都应该是FROM,指定一个已经存在的镜像,后续指令将基于该镜像进行。
指令MAINTAINER,指定镜像的作者和邮件联系方式。
之后进行RUN指令,RUN指令会在镜像中运行指定的指令,RUN指令会在shell里使用命令包装器/bin/sh –c来执行,也可以使用RUN[“yum”,”install”,”-y”,”nginx”]。
之后设置了EXPOSE指令,告诉Docker该容器内的应用程序将会使用容器的指定端口。
使用docker build命令来构建镜像。
进入目录,执行 docker build -t="harbourside/dockertest" . 该命令返回一个新镜像,命令中-t设置了仓库和名称。也可以添加标签,例如:docker build -t="harbourside/dockertest:v1" .
构建缓存:由于docker如果构建失败,下次构建的时候会利用缓存接着上次的过程构建。如果不想利用缓存,从头开始构建那么设置参数。
docker build --no-cache -t="harbourside/dockertest" .
也可以用ENV变量来设置缓存。例如:
#Version:0.01FROM centosMAINTAINER bigdata 79021218@qq.comENV REFRESHED_AT 2017-11-28RUN yum -y install wgetRUN wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpmRUN rpm -ivh epel-release-6-8.noarch.rpmRUN rpm -Va --nofiles --nodigestRUN yum install -y nginx --skip-brokenEXPOSE 80
这个ENV里面的 REFRESHED_AT变量用来表明镜像模板的最后更新时间。如果想重新构建,值需要更改REFRESHED_AT的值,再重新build就可以。
[root@dst6 dockerfile]# docker history 7b2ba77fb644 查看镜像的构建过程
为了方便演示,直接从docker hub下载tomcat的镜像:
docker pull tomcat:7.0![image](https://github.com/csy512889371/learnDoc/blob/master/image/2018/docker/22.png)
后台运行启动tomcat:
[root@dst6 ~]# docker run -d -p 8080 --name tomcatstart tomcat:7.0
查看启动容器:
[root@dst6 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES8a615d73bcc9 tomcat:7.0 "catalina.sh run" 5 seconds ago Up 4 seconds 0.0.0.0:32781->8080/tcp tomcatstart
这里使用了-p标志,该标志用来控制Docker在运行时应该公开哪些网络端口给外部。运行一个容器时,Docker可以通过两种方式来在宿主机上分配端口。
1、Docker可以在宿主机上随机选择一个比较大的端口号来映射到容器的8080端口。
2、可以在Docker宿主机中指定一个具体的端口号来映射到容器中的8080端口上。
可以用docker port 容器id 端口号 查看容器端口的映射情况
也可以指定宿主机端口进行映射,将8080端口映射到宿主机的80端口上。
docker run -d -p 80:8080 --name tomcatstart tomcat:7.0
进入容器查看
[root@dst6 ~]# docker exec -i -t 474e2570f557 /bin/sh
转载地址:http://aqonn.baihongyu.com/