zoukankan      html  css  js  c++  java
  • 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

                                   然后 推送镜像到本地仓库

                                   

                                     

                   

                 

  • 相关阅读:
    php笔记小结
    php知识总结(二)
    php知识点总结(一)
    js冒泡排序及计算其运行时间
    空中飘动的云动画
    网站建设教程:WordPress如何在虚拟主机上安装
    网站建设教程之PageAdmin建站系统的安装
    免费CMS建站系统哪个比较好?如何选择?
    网站建设之自助建站系统的选择?
    企业外贸网站制作的要求及注意事项
  • 原文地址:https://www.cnblogs.com/labtabhub/p/12164197.html
Copyright © 2011-2022 走看看