Docker操作的总结
host本机与container容器之间拷贝文件:
~$ docker cp index.html 4f17cbaacfb8://usr/share/nginx/html
index.html为本机的文件
4f17cbaacfb8为容器的ID
://usr/share/nginx/html指copy到容器中的路径
如果对镜像中的文件进行修改,提交保存改动生成新的镜像:
docker commit -m '自定义' 4f17cbaacfb8 nginxName
(若未指定镜像名字,则会代替原来相同的镜像名,另一个镜像名变成none)
dockerfile创建镜像:
- mkdir testDocker 创建文件夹
- touch Dockerfile 创建一个Dockerfile
- vim Dockerfile 编辑内容,添加内容如下两个栗子:
简单的:
FROM alpine:latest
MAINTAINER wy
CMD echo "this is content!"
较为复杂的:
FROM ubuntu
MAINTAINER wy
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y nginx
COPY insex.html /var/www/html
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]
EXPOSE 80
- $ docker build -t testdocker . (创建一个dockerfile,-t指定标签,标签名不能是大写,还有后面的.表示当前目录作为上下文)
parkin@parkindeMacBook-Air:~/testDocker$ docker build -t mydockerfile .
Sending build context to Docker daemon 4.096kB
Step 1/8 : FROM ubuntu
---> 7698f282e524
Step 2/8 : MAINTAINER wangyan
---> Running in 509556e69806
Removing intermediate container 509556e69806
---> c24c9ead5fe2
Step 3/8 : RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
---> Running in 8e7519e9e5b9
Removing intermediate container 8e7519e9e5b9
---> 904b6b7b4d64
Step 4/8 : RUN apt-get update
..........
- build成功后可以docker images查看到刚生成的镜像
- $ docker run testdocker 跑这个镜像
注意:
如果在同一目录下有多个dockerfile,默认build的是名称为Dockerfile的文件.
Docker语法:
FROM 基础镜像
RUN 根据命令跑一些东西
ADD 添加一些东西(比较强大,可添加一些远程的东西)
COPY 复制一些东西,比如文件和目录
CMD 执行命令,设置容器入口
EXPOSE 暴露端口
WORKDIR 指定运行路径
MAINTAINER 作者
ENV 设置环境变量
ENTRYPOINT 设置容器入口(这个命令和CMD都是设置容器入口的,如果没有设置该命令,就执行CMD设置容器入口,如果该命令和CMD同时存在,CMD就会作为该命令的一个参数去执行)
USER 指定执行该命令的用户
VOLUME mount point(容器所挂载的)
镜像分层:
- Dockerfile中每一行都会产生一个层
- 已经存在images中的层是只读的。
在容器中运行imags时会产生一个新层,叫做容器层,该层可读可写。 - $ curl http://localhost
parkin@parkindeMacBook-Air:~/testDocker$ docker run -d -p 80:80 mydockerfile
d80e44f76d09edd9fad9c5d3a66e2ce67af32d6ace9d54ddd586d67f15d3da36
parkin@parkindeMacBook-Air:~/testDocker$ curl http://localhost
hello wy加油!
分层的好处:层共享,减小压力。
docker存储技术Volume:
提供独立于容器之外的持久化存储。
$ docker run -d --name volumetest -v /usr/share/nginx/html nginx
what ??虚拟层 运行alpine主机,里面运行docker,俺找不到这个目录,就下面这个命令,嘤嘤嘤。
$ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
- $ docker run -p 80:80 -d -v $PWD/testhtml:/usr/share/nginx/html nginx
仅有数据的容器:
1. $ docker create -v $PWD/data:/var/mydatas --name mydata ubuntu
2. $ docker run -it --volumes-from mydata ubuntu /bin/bash
3. root@81116e0444d9:/# mount(可以查看详情)
通过容器中目录下创建文件,退出容器,在主机挂载自定义目录下也会看到文件生成。
root@81116e0444d9:/# cd /var/mydatas
root@81116e0444d9:/var/mydatas# ls
root@81116e0444d9:/var/mydatas# touch sureIsMe.txt
root@81116e0444d9:/var/mydatas# ls
sureIsMe.txt
root@81116e0444d9:/var/mydatas# exit
exit
parkin@parkindeMacBook-Air:~/testDocker/vo3$ ls
data
parkin@parkindeMacBook-Air:~/testDocker/vo3$ cd data
parkin@parkindeMacBook-Air:~/testDocker/vo3/data$ ls
sureIsMe.txt
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/115822.html