1 简单命令: 列出: images ,拉取 :pull 查找:search (在 docker hub上找) ,删除: rmi
2 构建:A :commit B:用build和dockerfile (推荐)
3 本地镜像存在:/var/lib/docker/container 从docke公司的Registry(docker hub) 上pull 下来的镜像是放在本地仓库的,类似git
4 dockerfile: dokcerfile 所在的目录为构建镜像的上下文,,构建镜像时,docker会把上下文传给docker守护进程。这样docker就可以访问镜像中存储的任何代码和文件
dockerfile命令:
CMD:容器启动时候的命令
RUN:要运行的命令,每一个RUN都会创建一个新的镜像层
MIANTAINER :作者
EXPOSE :公开的端口数
ENTRYPOINT: docker run 指定的参数都会传递给ENTRYPOINT 指定的命令,他提供的命令则不容易再启动的时候被覆盖 ,也可以用--entrypoint 标志覆盖ENTRYPOINt指令
WORKDIR:创建镜像时,设置的工作目录
ENV 创建过程中设置环境变量
太多了。。。。
用dokcerfile构建镜像: docker build -条“resposity_name/image_name” d .
root@devstack:~/docker/mydockerbuild# docker build -t="ljw_rep/ljw" . Sending build context to Docker daemon 2.048 kB Sending build context to Docker daemon Step 0 : FROM docker/whalesay:latest ---> fb434121fc77 Step 1 : MAINTAINER ljw "[email protected]" ---> Using cache ---> 29588c6a4c6c Step 2 : RUN apt-get -y update ---> Using cache ---> a7fdadfdf773 Step 3 : RUN echo "ljw , i love you so much !" ---> Using cache ---> 29862c271b1f Step 4 : EXPOSE 80 ---> Using cache ---> 65275e9b9581 Successfully built 65275e9b9581每一步都会在一个独立的容器内运行,如果哪一步出现了问题,可以启动"debug"
sudo run -t -i 29862c271b1f /bin/bash,docker 会将之前镜像作为缓存,如果哪一步有变化,只会从发生变化的命令开始执行,,可以用--no-cache 来忽略缓存功能
查看构架历史:history 展示镜像的每一层
在对构建的镜像进行命名的时候,有这样的要求,需要符合如下的正则表达式:
repository name component must match "[a-z0-9](?:-*[a-z0-9])*(?:[._][a-z0-9](?:-*[a-z0-9])*)*"
可以用小写字母或者数字开头,中间允许下划线和连字符。
镜像删除: rmi [image id] ;rm [container id ] ,删除镜像之前,先要把所有依赖于这个镜像的全部容器
5 push镜像
先登录:docker login 如果写成docker push image_name 那么docker 认为你要push到root仓库 ,会遭到残忍拒绝,因为root仓库是docker公司自己玩的