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

                                   然后 推送镜像到本地仓库

                                   

                                     

                   

                 

  • 相关阅读:
    nullnullConnecting with WiFi Direct 与WiFi直接连接
    nullnullUsing WiFi Direct for Service Discovery 直接使用WiFi服务发现
    nullnullSetting Up the Loader 设置装载机
    nullnullDefining and Launching the Query 定义和启动查询
    nullnullHandling the Results 处理结果
    装置输出喷泉装置(贪心问题)
    数据状态什么是事务?
    停止方法iOS CGD 任务开始与结束
    盘文件云存储——金山快盘
    函数标识符解决jQuery与其他库冲突的方法
  • 原文地址:https://www.cnblogs.com/labtabhub/p/12164197.html
Copyright © 2011-2022 走看看