美文网首页Kubernetes
docker镜像制作和更新.md

docker镜像制作和更新.md

作者: 棒打萝卜爱吃鱼 | 来源:发表于2018-03-05 17:13 被阅读0次

    使用非root用户操作DOCKER

    docker默认使用root操作。
    1.创建docker组:

    sudo groupadd docker
    

    2.将当前用户加入docker组:

    sudo gpasswd -a ${USRE} docker
    

    3.重新启动docker服务:#

    sudo service docker restart 或
    sudo systemctl restart docker(视平台而定)
    

    4.当前用户退出系统,重新登陆

    构建镜像:commit方式或build方式

    1.commit方式:基础镜像运行生成容器,容器中安装需要工具,提交镜像。

    注意:官方python镜像中的python版本默认为3,要使用python2需要使用python2命令。
    我们用commit方式构建python2基础镜像。

    1. docker search centos
      从docker Hub搜索centos官方镜像
     docker pull docker.io/centos
    

    /之前表示仓库名,之后表示镜像名。docker.io是国内daocloud加速镜像。

    docker run -it --name my_centos docker.io/centos /bin/bash
    

    运行centos镜像,-it表示启动终端交互界面 --name是自定义的容易名字 /bin/bash表示容器启动时候执行的命令
    Linux提示符会变成类似[root@9cabea476573 /]字样,表示进入容器。

    Centos7.4带的python默认版本为2.7.5
    安装python开发工具

    yum install -y python-devel
    

    如果提示没有python-pip,需要先执行

    yum -y install epel-release
    

    提交生成的容器为镜像,命令执行结束后,会输出一行sha256的字符串,表示镜像ID

    docker commit -m 'my python 2.7.5' my_centos python2:v0.1
    

    -m:镜像描述
    my_centos:上一步生成镜像的名称
    python2:生成的镜像保存的仓库名
    v0.1:生成镜像的版本号

    查看刚生成的镜像

    docker image
    

    build方式构建镜像(Dockerfile):

    1. 通过写Dockerfile来生成image,有点事逻辑清晰,便于管理

      创建存放Dockerfile的目录,后续操作将在这个目录下进行。

    mkdir ~/imagedir
    cd ~/imagedir
    
    1. 创建Dockerfile,使用任何文本编辑器,创建名为Dockerfile的文件,文件名固定不可变。
    1. docker build -t myimage .

    构建镜像, -t表示将镜像命名为myiamge . 表示在当前目录下的Dockerfile文件
    注意:依据Dockerfile内容,这一命令将分多步骤执行,每一步骤会生成一个中间镜像,作为下一步骤的基础。在镜像创建后,中间镜像会销毁。

    1. 运行上一部生成的镜像

      docker run -it myimage
      
    2. build 镜像过程中发生错误会生成一个名字是none镜像,修改完Dockerfile之后可以继续建立生成,之后会删除none中间镜像

      <none>               <none>              1c4ac682f895        5 weeks ago         915 MB
      
    Dockerfile介绍:
    FROM python2:v0.1
    
    from表示从那个基础镜像开始构建镜像。基础镜像来自仓库python2,版本v0.1
    from必须作为dockerfile的第一行,若本地仓库没有相关镜像,默认从远程仓库获取。如果不执行版本号,默认使用latest基础镜像。
    
    MAINTAINER YouShow
    镜像维护者个人信息
    
    RUN pip install flask
    RUN pip install git+http://username:password@gitlab.maixunbytes.com/zhangxiaopeng/pipelines.git
    RUN pip install git+http://username:password@gitlab.maixunbytes.com/zhangxiaopeng/mxspider.git
    RUN pip install git+http://username:password@gitlab.maixunbytes.com/zhangsheng/dateformatting.git
    安装项目需要的依赖,如果从git仓库安装,要用到git账号和密码
    
    WORKDIR /src/spiders/app_zxp_week_2/
    容器启动后,切换到指定目录作为工作目录
    
    COPY ./spiders /src/spiders
    从源系统的文件复制到容器系统上。示例中复制当前目录下的spiders文件夹到容器系统src文件夹下。要把构建进镜像的文件放到Dockefile文件目录或者子目录下。
    ADD 和COPY使用类似
    
    USER dingyong
    容器执行操作用哪个账户
    
    ENTRYPOINT bash bbs_funcs.sh run_spider siku
    entrypoint用来说明当使用docker run启动容器时候要执行的命令
    
    CMD
    CMD用来表示镜像要运行的默认命令,以及想要传递给它的选项。如果没有指定ENTRYPOINT,当容器启动的时候默认运行的就是CMD的值所指定的命令。若有ENTRYPOINT,ENTRYPOINT是要运行的命令,CMD的值当作ENTRYPOINT的选项。
    CMD 命令会被docker run --it name /command 中command命令覆盖,而ENTRYPOINT不会
    CMD [“cat”, “/etc/hosts”, “/etc/os-release”]注意:RUN指令设置的命令仅在构建镜像的时候会被使用,CMD和ENTRYPOINT会在执行docker run的时候被使用。
    
    ENV DB_USER=root
    设置环境变量
    
    注意:编写Dockerfile时候,根据需求填写,不需要填写所有命令。
    

    删除镜像和container

    rm Remove one or more containers
    rmi Remove one or more images
    

    docker rmi image-id
    如果删除失败说明在containers中有需要先删除container中的内容

    更新镜像

    commit来更新 还有重新build更新

    相关文章

      网友评论

        本文标题:docker镜像制作和更新.md

        本文链接:https://www.haomeiwen.com/subject/hyihfftx.html