-
docker run -d -p 80:80 xbf/hello-nginx (这次成功了,返回了容器的id)
curl http://localhost 测试一下,输出了index.html的内容
Dockerfile语法小结
FROM 用途 base image(指定基础镜像名,从哪里开始)
RUN 执行命令(在容器内执行命令)
ADD 添加文件(往容器里面添加文件,还可以将远程的文件添加到容器里面去)
COPY 拷贝文件 (往容器里面添加文件)
CMD 执行命令(给容器指定执行的入口,通常和engine point来做这个事情)
EXPOSE 暴露端口
WORKDIR 指定路径(指定我们运行命令的路径)
MAINTAINER 维护者
ENV 设定环境变量(为容器里面设置环境变量)
ENTRYPOINT 指定容器入口(在没有指定engine point的时候用cmd启动,如果指定了engine point,cmd所指定的字串就变成entry point后面的一些 arguments(参数))
USER 指定用户(指定执行该命令的用户,通常不会用root在容器里面执行)
VOLUME 用途mount point (指定容器挂在的卷)
查看全部 -
第二个Dockerfile
FROM ubuntu //基础镜像
MAINTAINER xbf
RUN apt-get update //ubuntu命令
RUN apt-get install -y nginx //ubuntu命令,安装nginx
COPY index.html /var/www/html //拷贝一个本地的文件到这个里面去
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"] //给出一个入口
EXPOSE 80
实际操作
mkdir dockerfile2
cd docker dockerfile2
touch Dockerfile
vim Dockerfile
在文件里面编辑
FROM ubuntu
MAINTAINER xbf
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list //使用国内镜像
RUN apt-get update //更新ubuntu程序的库
RUN apt-get install -y nginx //安装nginx -y 不要提醒
COPY index.html /var/www/html //拷贝文件到容器里面去。这丫是容器?不同版本的ubuntu这个文件夹的位置是不一样的
ENTRYPOINT ["/usr/sbin/nginx", "-g", "daemon off;"] //将nginx在前台执行,而不是作为守护进程执行
EXPOSE 80 //暴露一个80端口,普通的http服务器监听的端口
保存文件。
touch index.html
vim index.html //然后随便填点东西用来显示。保存退出
docker build -t xbf/hello-nginx .
docker run -d -p 80:80 xbf/hello-nginx //-d 守护进程化
报错了,原因可能很久以前运行过了监听80端口的程序
docker ps
docker stop big_shannon
查看全部 -
docker commit 是创建了一个新的镜像(新的image),这是说image被叫做镜像?
Docker file
通过编写简单的文件自创docker镜像
FROM alpine:latest //创建基础镜像
MAINTAINER xbf //说明是谁创建的镜像
CMD echo 'hello docker' //运行一个docker命令
mkdir d1
cd d1
touch Dockerfile
vim Dockerfile
在Dockerfile里面编辑
FROM alpine:latest // alpine是针对docker做的极小的Linux环境,image非常小
MAINTAINER xbf
CMD echo "Hello Docker"
保存,退出文件
使用docker命令构建新的image
docker build -t hello_docker . (-t 是给个tag 标签,. 是一个路径名,把这个路径底下的所有内容都送给docker engine,让它产生image)
这就完成了,成功的通过Docker创建了自己的image。
docker images hello_docker 查看这个image
docker run hello_docker 运行这个docker(输出了Hello Docker)
查看全部 -
Doctor的架构
Doctor命令
doctor run ubuntu echo hello docker (使用ubuntu这个image运行echo hello docker)
docker images (查看本机所有的Image,这个Image该怎么解释呢)
docker run -p 8080:80 -d daocloud.io/nginx -p端口映射,将nginx的80端口映射到本地的host的8080端口 -d允许这个程序直接返回,就是把这个continer当作守护进程来执行。在本地8080端口开启了nginx服务
docker ps 查看当前正在运行的container
cat index.html (然后编辑了一个简单的html内容)
docker cp index.html 容器id://usr/share/nginx/html 把这个文件拷贝到容器里面去,容器id后面跟的是文件在容器内部的路径。浏览器localhost:8080 显示了index.html的内容。这就是容器里面的一个网页被我们替换了?
docker stoop 容器id 停止容器
再次执行上面的黑体命令,浏览器访问localhost:8080 没有显示html的内容,不是我们想要的。原因:docker在容器内做的改动都是暂时的,都是缺省没有被保存下来的,要保存下来需要做另外的操作。
docker ps 查看容器id,这个id应该是每次重启后都会变。
然后把index.html文件又拷贝进了容器(同上)
docker commit -m '备注' 容器id nginx-fun(保存,好像git提交)。提交后产生了一个新的imageid,这个image究竟该怎么翻译?nginx-fun是这个新产生的image的名字,不添加名字的话 image的repository和tag都是空的。
docker rmi image的id 删除image
docker ps (显示正在运行的容器)
docker stop 容器id 停止正在运行的容器
docker ps -a (显示所有的容器)
运行过的docker在系统里面还是有历史,就像刚才运行过的容器就在里面
docker rm 容器id 容器id 这两个就被删除了
命令小结:
docker pull 获取image
docker build 创建image
docker images 列出image
docker run 列出container
docker ps 列出container
docker rm 删除container
docker rmi 删除Image
docker cp 在host和container之间拷贝文件
docker commit 保存改动为新的image
查看全部 -
Doctor安装
linux下:sudo wget -qO- https://get.doctor.com/ | sh (安装doctor)
sudo usermod -aG docker 用户名 (允许非root用户使用doctor)
查看全部 -
Doctor:可以粗糙的理解为轻量级的虚拟机,开挂的chroot。
查看全部 -
根据现有的 image 生成一个一模一样的镜像,只是name 不一样
docker tag docker/whalesay xibeifeng/whalesay
将本地的镜像共享到 docker 中心
docker push xibeifeng/whalesay
查看全部 -
运行 nginx:
docker run -d --name nginx -v /usr/share/nginx/html nginx
-d 是运行方式(Daemon守护进程)
使用 inspect 检查 nginx:
docker inspect nginx
inspect 是检查的意思
查看全部 -
Docker结构
查看全部 -
docker file里面的内容
FROM alpine:latest MAINTAINER XBF CMD echo "Hello Docker!"
构建 docker的images
docker build -t ImagesName .
查看全部 -
常用的 docker 命令
查看全部 -
创建新的 image
docker commit -m 'fun' 容器ID 镜像名称 docker commit -m 'fun' e7c34 nginx-func
查看全部 -
// 将文件拷贝到 docker 容器中 docker cp index.html 容器ID://usr/share/nginx/html
查看全部 -
Dockerfile 语法
查看全部 -
docker命令2
查看全部
举报