zoukankan      html  css  js  c++  java
  • Docker 基础使用方法(三) Dockerfile基础和构建镜像

    前两章是基础,这一章,也差不多,因为这个东西本来就不复杂

    之前讲Docker有两种构建方式,一种是使用基础镜像运行,然后在commit,一种是使用Dockerfile

    第一种很简单,就是运行了镜像以后,比如:

    docker run -itd --name test ubuntu:latest /bin/bash

    使用这个命令进入镜像:

    docker exec -it test /bin/bash

    当然-it后面是使用的镜像的NAMES,也可以用ContainerID

    接下来就是执行自己的各种命令,什么apt-get install update了之类的,这个就不细讲了,反正就是自己定制完了,然后在执行:

    docker commit -a "onepoint onepoint@11.com" test myimages

    具体命令自己看help,test是容器的名称,也可以用container id替代,myimages意思就是最新提交的镜像了,如果有需要可以带上TAG,比如:

    docker commit -a "onepoint onepoint@11.com" test myimages:0.1

    跟着需求来,最后就到了Dockerfile了:

    我这有一个模板:

    FROM ubuntu:16.04
    
    MAINTAINER onepoint 'onepoint@ttt.com'
    
    
    # 更新源,安装ssh server
    RUN apt-get update && 
    apt-get install -y openssh-server vim git && 
    mkdir /var/run/sshd &&
    echo 'root:123qwe' | chpasswd  &&  
    sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config 

    ADD ./miniconda3 /root/ #容器开发SSH 22端口
    EXPOSE 22

     我还没掌握Dockerfile的精髓,没时间深入研究,基础嘛~

     FROM 意思就是使用哪个镜像作为母本,当然也可以使用你自己编辑好的镜像,看需求

     RUN 就是执行后面的命令,&&的意思就是,执行上一条,执行下一条,换行符就不用说了,为了好看~

    因为docker有个layer的概念,所以如果能在一条命令里面执行多个操作,尽量去执行,要不然分好多层也浪费,虽然不影响使用.

    在一个ADD就是添加本地的文件到镜像里面,格式的话类似于cp,但是文件夹也不用带r

    接下来写好了Dockerfile就是开始构建了,可以先创建一个空文件夹,然后在把Dockerfile 挪到这里面,然后在这个空文件夹里面使用下面的命令:

    docker build -t IMAGENAME:TAG .

    如果没有语法错误,和拉不下来软件的情况,这样就坐等完事就可以,

    接下来打出来的镜像就参考之前的命令去查看并运行就可以了

    还有一个push的操作,可以push到镜像仓库:

    docker push IMAGENAME:TAG

    EXPOSE就是默认打开的端口,如果你看到这了,代表你需要打开一些端口,前文也说过运行的时候可以做端口映射,这个镜像里面带这个命令就相当与开一个默认端口,没做映射的,你可以通过:

    docker inspect -f '{{.NetworkSettings.IPAddress}}' test
    docker inspect -f '{{.NetworkSettings.Ports}}' test
    docker inspect  test

    上面那个是查看IP,下面那个是查看已开启的端口号以及映射关系,如果不带-f的话就是全量的,和其他命令一样,可以是NAMES也可以是ContainerID

    下一章是镜像的导入导入

  • 相关阅读:
    20165309 Linux安装及学习
    20165309 技能学习经验与C语言
    20165309 我期望的师生关系
    20165317-我期望的师生关系
    20165308 学习基础和C语言基础调查
    20165308 我期望的师生关系
    20165320 结对编程学习第一周
    20165320 第七周学习总结
    20165320 第六周学习总结
    20165320 实验一 java环境的熟悉
  • 原文地址:https://www.cnblogs.com/dutu/p/8022721.html
Copyright © 2011-2022 走看看