Docker

初步理解

由于我在用docker的时候通常是用docker镜像安装python包或者实验依赖的环境包,所以对docker的理解并没有那么深刻,就是停留在可以帮助我成功搭建环境即可。

docker container我理解的是打开了一个新的终端,建立了一个新的环境,在这里运行程序的语法是和在终端直接运行程序的语法一致的。镜像是生成container的入口,镜像是静态的,container是将镜像run之后的结果,如果将一个镜像run很多次,那么就会得到很多名字一样但是ID不同的container。所以如果你run了很多次镜像,并且在生成的不同container中分别进行了不同的操作,那么一定要记住对应的ID,以便于区分它们。

docker的方便之处在于

  • 在github上可以将别人代码的环境直接copy过来,无需担心自己在安装包的时候与别人的版本不一致导致无法跑通别人的代码。
  • 除此之外,我理解docker container是一个类似于conda env的一个“与世隔绝”的环境,就是docker container里面发生的事情不会干扰到整个系统的其他内容,也就是说如果不小心安装或者误删的神秘东西对整个系统没有影响,比较安全。
  • 另外,docker container比较方便的地方在于:程序在运行时你还想用终端做别的,你可以退出container,但是保持这个container的运行状态,之后可以再次进入container。(后面会介绍这种操作)

docker操作的常用语句

  • 通过dockerfile安装docker镜像

    安装过程基本上都会在github的readme文件中给出

  • 从docker 镜像到docker container

    • docker 镜像:静态的

    • docker container:镜像运行之后得打container

    • 创建一个container并开始运行:

      docker run相当于执行了两步操作:将镜像放入容器中(docker create),然后将容器启动,使之变成运行时容器(docker start)。

      docker run -t -i <dockerimagesname:TAG> /bin/bash
      
  • 查看镜像或者container

    • 镜像:

      docker images
      
    • container:

      docker ps #查看正在运行的container
      docker container ls #与上面意思一致
      docker ps -a#查看正在运行的container以及结束了的container
      docker container ls -a#与上面意思一致
      
  • 如何保持container的运行状态

    打开container:

    • 打开正在运行的docker container(进入container):

      • attach:

        docker attach <container name>
        

        使用“docker attach”命令进入container(容器)有一个缺点,那就是每次从container中退出到前台时,container也跟着退出了。

      • exec:

        docker exec -it <container name> /bin/bash
        

        要想退出container时,让container仍然在后台运行着,可以使用“docker exec -it”命令。每次使用这个命令进入container,当输入“exit”或者按键“Ctrl + C”退出container时,这个container仍然在后台运行。

    • 打开已经结束的docker container(打开container):

      docker start -ia <container ID>
      

    结束container:

    • 退出(结束running):

      如果不想继续运行:按【ctrl+d】或输入exit

    • 退出(保持running):

      退出时如果想继续运行:按顺序按【ctrl+p】,【ctrl+q】

    删除container:

    可以使用"docker rm 容器id"来删除一个终止状态的容器;若要删除一个运行中的容器,需要加-f参数。

参考1

参考2

参考3

官网的参数说明

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐