Docker操作总结

Docker操作总结:镜像、分层与存储
该博客主要总结了Docker操作,包括host与container间拷贝文件、修改镜像生成新镜像。详细介绍了用dockerfile创建镜像的步骤,提及Docker语法、镜像分层及好处,还阐述了docker存储技术Volume,它能提供独立于容器的持久化存储。

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值