zoukankan      html  css  js  c++  java
  • Docker 入门笔记

    Docker 可以理解为一个轻量化的虚拟机, 启动速度快,本身占的资源小


    [重要], 容器里是不能保存数据的,容器只要一停止, 所有的数据都会丢失,所以如果重要的数据, 都需要通过配制,把数据保存在 host 机器上。
    根据 Docker 内的文件系统设计情况。Docker 镜像被存储在一系列的只读层。当我们开启一个容器,Docker 读取只读镜像并添加一个读写层在顶部。
    如果正在运行的容器修改了现有的文件,该文件将被拷贝出底层的只读层到最顶层的读写层。在读写层中的旧版本文件隐藏于该文件之下,但并没有被不破坏 - 它仍然存在于镜像以下。
    当Docker的容器被删除,然后重新启动镜像时,将开启一个没有任何更改的新的容器 - 这些更改会丢失, 此只读层及在顶部的读写层的组合被Docker称为Union File System(联合文件系统)

    官方镜像网站: hub.docker.com
    官方网站在国外, 下载镜像的时候,可能会比较慢, 使用 阿里云加速器, 需要申请才可以使用。

    常用命令

    docker -v
    查看 docker 的当前版本

    docker pull [imageName]
    从仓库里下载一个指定的镜像名称到本地

    docker run
    这个是创建一个容器,并启动, 可以通过 --name 参数指定容器的名称,
    -d 参数, 让容器在后台运行, 不加此参数, 命令行将一直处于工作状态,不参进行其他操作

    docker start [container name]
    运行一个已经存在的容器, container name 就是通过 docker run 命令创建的容器

    docker restart [container name]
    重启一个容器

    docker stop [container name]
    停止一个正在运行的容器

    docker stop $(docker ps -q)
    停止所有正在运行的容器

    docker diff [container name]
    查看容器相对镜像修改了哪些文件

    docker rm [container name]
    删除一个已经存在的容器, 如果容器正在运行,则删除失败

    docker inspect [container name]
    查看容器的详细信息

    docker ps -a
    列表所有容器, 如果不指定参数 -a, 则只会列表正在运行的容器

    docker images
    列表所有的镜像

    docker rmi [image name]
    从本地删除一个指定的镜像

    数据卷(Volumn)

    有些情况下, 容器里的应用需要保存数据,如数据库应用,数据库里的内容是需要保存起来,这个时候, 需要把主机中的某个目录映射到容器中去,使用 -v 参数,如 MYSQL, 通过 使用 -v 参数, 为容器映射一个目录到 host 上来: docker run -d -p 3306:3306 -v /my/own/datadir:/var/lib/mysql mysql
    官方提供的 mysql 镜像, 默认把数据文件放在了 /var/lib/mysql 目录,这样就把容器中的数据保存到主机上来了。
    在 windows 里, 使用 /d/own/datadir 或 d:/own/datadir 都可以。

    进入容器操作

    容器在运行这后, 如果我们需要修改或查看容器中的内容,需要进行入容器中,
    有四种方法:
    1、docker attach containerid, 这种方法试了, 没效果
    2、通过 ssh 连接到容器中去, 但是好像说不推荐使用这种方式
    3、nsenter 工具, https://github.com/jpetazzo/nsenter, 没用过
    4、使用 docker exe -it containerid bash 这样最简单了, 执行后当前命令行工具就切换到了容器内部,可以在这里执行相关的命令,最后使用 exit 退出。

    容器互联

    当一个主机上有两个容器, 一个放 web 应用, 一个放数据库应用,那么 web 应用怎么访问另一个容器中的数据库呢? 通过 --link 参数来设置
    docker run -d --name web --link db:dbserver nginx

    --link 参数的格式为 --link name:alias,其中 name 是要链接的容器的名称,alias 是这个连接的别名。 通过这样处理后, web 应用连接数据库字符串的 server 就是 dbserver 了。

    其他相关资料

    https://www.jianshu.com/p/cf6e7248b6c7?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

  • 相关阅读:
    Ubuntu的启动配置文件grub.cfg(menu.lst)设置指南zz
    Qt/E客户端服务期间通信数据串行化
    开源协议简介BSD、 Apache Licence、GPL、LGPL、MIT转载
    Qt/E服务器到客户端的消息传递
    解决 Windows 和 Ubuntu 时间不一致的问题转载
    Qt/E服务器客户端架构
    Qt/E中的键盘设备管理
    Qt/E服务器客户端的通信机制
    解决 ssh 登录慢 转载
    c# 扩展方法奇思妙用变态篇一:由 Fibonacci 数列引出 “委托扩展” 及 “递推递归委托”
  • 原文地址:https://www.cnblogs.com/kuku/p/8428447.html
Copyright © 2011-2022 走看看