docker学习笔记二 镜像和仓库的使用

一 镜像的基本操作

   1 镜像基本命令

       (1)拉取镜像 

                docker pull 镜像名 (:tag) 拉取镜像,如果在镜像名后加上:标签,就拉取指定标签的镜像

        (2) 查找镜像

                 docker search 镜像名   查找docker hub上的公共镜像

  2  容器基本命令

      (1)启动容器命令

            docker run -d -p 8080:80 --name 容器名 镜像    -d 守护式运行容器,-p 8080:80将宿主机8080端口映射到容器80端口

       (2) 查看容器端口映射情况

                  docker ps -l   查看容易和宿主机端口映射情况

       (3)查看容器端口和宿主机间的映射:
                docker port   容器名  容器端口        // 存在端口映射就会返回映射到的主机端口号

 3 dockerfile指令

     (1)CMD

              用于指定一个容器启动时要执行的指令。在docker run命令中指定的容器启动时的命令,会覆盖CMD指令。并且一个dockerfile中只能指定一条CMD指令。如果指定了多条,也只有最后一条会被使用

    (2)ENTRYPOINT

              和CMD命令类似,但是不同的是,docker run命令中指定的参数不会覆盖 ENTRYPOINT命令

     (3)WORKDIR

             用来创建镜像时,设置命令的执行路径             

WORKDIR  /opt/webapp/db  #设置执行目录为 /opt/webapp/db

RUN bundle install

WORKDIR /opt/webapp #设置执行目录为 /opt/webapp

ENTRYPOINT [ "rackup" ]

              (4) ENV 

                  用来在镜像构建过程中设置环境变量

                  例:ENV RVM_PATH /home/rvm/   这个设置的环境变量可以在后续的任何RUN指令中使用

                  ENV 设置的环境变量会被持久化到容器中。如果dockerfile中含有这条命令,在容器中输入env 就会输出RVM_PATH=/home/evm/

                也可以使用docker run命令行的-e标志来传递环境变量,这些变量将只会在运行时有效

                docker run -it -e "WEB_PORT=8080" test_env   然后输入env  可看到 WEB_PORT=8080

           (5) USER 

               USER指令用来指定镜像会以什么什么用户无运行。

               例如: USER nginx  会以nginx用户的身份来运行

         (6)VOLUME 

                 VOLUMN指令用来向基于镜像创建的容器添加卷。

                 例:VOLUMN ["/opt/project"] 这条指令会为基于此镜像的创建的容器创建一个名为/opt/project的挂载点

          (7)ADD

                  ADD命令用来将构建环境的上下文和目录复制到镜像中 

                 例:ADD software.lic /opt/application/software.lic   该命令会把构建目录下的software.lic文件复制到镜像的/opt/application/目录下。ADD命令指定的源文件还可以是文件的URL

       (8)COPY 

                COPY命令非常类似于ADD,根本的不同是COPY只关心在构建上下文中复制文件,而不会去做解压,提取等工作。用法与ADD一样

         (9)LABEL

               label用来为docker镜像添加元数据,元数据以键值对的形式展现。

               例: LABEL version="1.0"  location="china"  type="Data Center"   每一条指令中可以指定一个或多个元数据,元数据间用空格隔开

          (10) STOPSIGNAL 

                     设置停止容器时发送什么系统调用信号给容器。这个信号必须是内核系统调用表中合法的数

            (11) ARG 

                       用来定义可以在docker build明了运行时传递给构件运行时的变量。构建时使用--build-arg参数即可

                       例:dockerfile中有如下2条命令 

                              ARG build 

                              ARG webapp_user=user

                         第二条指令为 webapp_user=user指定了一个默认值,如果构建时没有为webapp_user指定值,就会使用默认值。docker build --build-arg build=1234 -t webapp_container . 使用该命令构建镜像时,build值为1234 webapp_user值为user

            (12)ONBUILD 

                       为镜像添加触发器。当一个镜像被用作其他镜像的基础镜像时,该镜像的触发器就会被执行。触发器会在构建过程中插入新指令。。我们可以认为这些指令是紧跟在FROM指令后面的。

                       例: ONBUILD ADD   . /app/src

                               ONBUILD RUN cd /app/src && make  

                     构建镜像时会先执行以上2条指令。

二  运行自己的Docker Registry 

                   搭建自己的docker镜像仓库有种方式

                   1 从容器中运行 Registry

                                  docker run -p 5000:5000 registry:2 

                                  该命令会启动一个运行Registry应用2.0版本的容器,并将5000端口绑定到宿主机。

                                  注: 从docker1.3开始,需要在启动docker守护进程的命令中添加-insecure-registry localhost:5000命令,并                                   重启守护进程,才能使用本地registry。

                                 接下来,尝试推送我们的镜像到本地仓库去。

                                先找个镜像打上标签:

                                docker tag test_env  docker.example.com:5000/test_env/test_env_img

                                为了指定新的仓库目的地址,需要在镜像前面家加上主机名和端口前缀。在这条命令中。我们的仓库主机名                                  为docker.example.com

                               然后 推送镜像到本地仓库

                               

                                 

               

             

posted @ 2019-01-26 15:07  lab_or_hub  阅读(38)  评论(0编辑  收藏  举报