CENTOS7.2下DOCKER入门二 镜像制作

首页dockerCENTOS7.2下DOCKER入门二 镜像制作(2017年09月25日)

查看依赖某镜像的镜像

docker images -f since=mongo:3.2

查询包含某名字的镜像

docker images ubuntu

删除虚悬镜像

docker rmi $(docker images -q -f dangling=true)

启动一个NGINX服务器

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

进入NGINX服务器命令行

docker exec -it webserver bash

替换文件内容

echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html

查看容器的改变内容

docker diff webserver

把镜像的修改保存为新镜像

docker commit --author "xiaocaotongxue" --message "modify index.html" webserver nginx:v2

查看镜像的制作历史

docker history nginx:v2

运行刚创建的镜像

docker run --name web2 -d -p 81:80 nginx:v2

用DOCKER FILE方式创建新镜像

$ mkdir mynginx
$ cd mynginx
$ touch Dockerfile

FROM nginx
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html

//FROM scratch   如果是这个则代表不从任何镜像开始创建
//RUN ["可执行文件", "参数1", "参数2"]
//每一个RUN 代表创建一层 所以多命令的正确姿势是 使用&& 连接 全放在一个RUN里 因为有层数限制127
// \为换行  #为注释行

构建镜像

docker build -t nginx:v3 .    //后面的.表示当前目录  也是上下文路径 指把这个目录的文件打包上传到服务器构建DOCKER镜像
//.dockerignore 文件可以像.gitignore一样过滤需要上传的文件
//COPY ./package.json /app/    复制上下文件目录的package.json文件  可使用通配符 * ?
//ADD 和COPY一样 但是源可以是URL   而且自动解压 有时并不好用  还有很多缺点 不推荐用

docker build https://github.com/twang2218/gitlab-ce-zh.git#:8.14  //从GIT上构建

进入镜像的BASE

docker run -it ubuntu      //默认进入BASE

执行命令的方式 直接执行 而不是像虚拟机启动服务一样

shell 格式: CMD <命令>
exec 格式: CMD ["可执行文件", "参数1", "参数2"...]
CMD是和RUN FROM 同一级的 执行镜像时 就会执行  如:CMD [ "curl", "-s", "http://ip.cn" ]


CMD service nginx start               //错误
CMD ["nginx", "-g", "daemon off;"]    //正确

启动镜像时 顺便执行命令

docker run myImage curl -s http://ip.cn -i

ENTRYPOINT [ "curl", "-s", "http://ip.cn" ]  //DOCKER FILE使用ENTRYPOINT  那么就可以直接把上面这条命令变为 docker run myImage -i

标签: none

评论已关闭