Docker操作总结

导读:本篇文章讲解 Docker操作总结,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

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创建镜像:

  1. mkdir testDocker 创建文件夹
  2. touch Dockerfile 创建一个Dockerfile
  3. 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
  1. $ 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
..........
  1. build成功后可以docker images查看到刚生成的镜像
  2. $ 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

(0)
Java光头强的头像Java光头强

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!