• 操作Docker容器


    操作Docker容器

    容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用。

    启动容器:

    启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动。因为Docker容器是在太轻量级了,很多时候用户都是随时删除和新创建容器。

     

    新建并启动:主要命令为 docker run

    docker run ubuntu:18.04 /bin/echo 'Hello world'

    如果镜像存在就直接启动了,如果不存在就是自动从官方仓库拉取下载之后并启动,我本机是有这个镜像,直接就输出 Hello world 了。

    下面的命令则启动一个bash终端,允许用户进行交互。

    docker run -t -i ubuntu:18.04 /bin/bash

    启动-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,-i 则让容器的标准输入保持打开。在交互模式下,可以通过所有创建的终端来输入命令。

     

    当利用docker run 来创建容器时,Docker在后台运行的标准操作包括:

    1. 检查本地是否存在指定的镜像,不存在就从公有仓库下载
    2. 利用镜像创建并启动一个容器
    3. 分配一个文件系统,并在制度的镜像层外面挂载一层可读写层
    4. 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
    5. 从地址池配置一个ip地址给容器
    6. 执行用户指定的应用程序
    7. 执行完毕后容器被终止

    启动已终止容器Docker container start  (或者直接docker start)

    停止和关闭是stop和restar

     

    后台运行

    更多时候,需要让docker在后台运行而不是直接把执行结果输出在当前宿主机下,通过-d参数实现。

    例子:

    不使用-d参数

    docker run ubuntu:18.04 /bin/sh -c "while true; do echo hello world;sleep 1; done"

     

    容器会把输出的结果(STDOUT)打印到宿主机上面,直接强制退出的话,容器就退出了。

    如果使用-d的话

    docker run -d ubuntu:18.04 /bin/sh -c "while true; do echo hello world;sleep 1; done"

    9a615ec487e9dfd4d246d391fb804e786610a45239cda2e8687e43a70580566d

    不会有输出,就直接输出容器的id,此时容器会在后台运行并不会把输出结果(STDOUT)打印到宿主机上面(输出结果可以用docker logs 查看)

     

    使用-d 参数启动后会返回一个唯一的id,也可以通过docker container ls命令来查看容器信息。

     

    进入容器

        在使用-d参数时,容器启动后会进入后台。

        某些时候需要进入容器进行操作,包括使用docker attach命令或者docker exec 命令,推荐使用exec,因为attach可能导致容器退出。

     

    attach命令

    docker run -dit ubuntu

    docker container ls

    docker attach 655bdc811cd8

    此时已经进入了终端 exit,后容器就会直接停止,可以通过docker container ls再看下,发现退出了。

     

    exec命令

    -i -t 参数,docker exec 后边可以跟多个参数,这里是-i -t参数。(交互+伪终端)

     

    exit退出后不会跟attach一样导致容器直接也退出了。

     


    导出和导入容器

    导出:docker export

    例子:

    docker container ls -a

    docker export 0e172d70f90e > ubuntu.tar

     

    那个红色的就是容器导出来的快照文件。

     

    导入快照 docker import

    cat ubuntu.tar | docker import - test/ubuntu:v1.0

     

    也可以通过指定 URL 或者某个目录来导入

    docker import http://example.com/exampleimage.tgz example/imagerepo

    ps:用户即可以使用docker load 来导入镜像存储文件到本地镜像库,也可以使用docker import来导入一个容器快照到本地镜像库。区别是容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也大。从容器快照文件导入是可以重新制定标签等元数据信息。


    删除容器

    Docker container rm删除终止状态的容器。如果是删除运行中的容器 可以添加-f,Docker会发送SIGKILL信号给容器。如果是一次性清理所有终止状态的容器可以直接

    docker container prune

     

     

  • 相关阅读:
    JS 获取浏览器窗口大小方面的
    可以直接拿来用的15个jQuery代码片段
    JS 键盘方面的
    JAVA 实现DES MD5加密
    Spring SpringMvc Hibernate整合
    easyUI comboselector使用
    页面中嵌套html代码显示
    在IntelliJ上操作GitHub
    Maven项目配置第三方jar包
    JSP自定义标签
  • 原文地址:https://www.cnblogs.com/csnd/p/12061838.html
Copyright © 2020-2023  润新知