Docker学习(1)

Docker是一个工具,可以帮助解决安装、拆卸、升级、分发和管理软件等常见问题。而这一切都是通过容器所实现的。使用Docker运行一个软件其实是在一个容器内运行,容器可以隔离所有的资源,做到更可靠的安全性。

Docker与传统的虚拟机不同,虚拟机也可以提供需要的资源隔离,但是虚拟机需要维持一个操作系统的副本,带来了显著的资源开销。而Docker不使用硬件虚拟化,运行在Docker容器中的程序接口直接和Linux内核进行交互,没有额外的中间层,减少了资源开销。容器可以理解为将原有的应用程序进行包装的外壳,每个容器内的程序只能访问自己壳内的东西。

使用Docker创建的容器运行在用户空间中,每一个运行的容器只能访问属于自己容器内的内存空间和资源。容器是通过镜像进行生成的。镜像就是Docker通过打包和分发的软件,它是一个容器中运行程序的所有文件的捆绑快照,一个镜像可以生成多个容器,而每个容器之间是不能进行文件共享的。镜像在Docker生态系统中是可交付的基本单位。

Docker可以使得机器内的软件组织更加有序,同时提高了可移植性,保护了机器安全。

Docker安装地址:https://docs.docker.com/installation/

Docker容器的其中流程:
每次使用docker run xxx启动一个容器时,Docker首先在本地寻找镜像xxx,如果安装了则直接启动镜像,否则Docker将在Docker Hub上查找镜像xxx,如果在Docker Hub上找到了镜像xxx,下载镜像xxx并在本机中安装,Docker创建一个新容器并启动该程序。


启动容器
  1. 使用Docker启动一个Nginx容器:
    docker run --detach --name web nginx:latest
    首先在Docker Hub上的Nginx仓库下载、安装nginx:latest镜像,然后运行软件。--detach选项表示在后台启动该程序,程序启动但不会附着到终端。这样的进程成为守护式进程,适合那些在后台静默运行的程序。可以缩写为-d--name选项对已知值的进程进行重写。
  2. 运行一个交互式容器:
    docker run --interactive --tty --link web:web --name web_test busybox:latest /bin/sh
    通过Docker运行的交互式容器,将部分终端绑定到正在运行的容器的输入或输出上。--interactive选项告诉Docker保持标准输入流对容器开发。--tty选项告诉Docker为容器分配一个虚拟终端,可以允许发送信号给容器。可以缩写为-it。同时运行一个叫sh的shell程序,这样就可以在容器内运行任何程序。
  3. 检查正在运行的容器:docker ps
  4. 查看每个容器的日志:docker logs xxx

容器的PID命名空间

每一个运行的程序或进程,在Linux机器上都有一个唯一编号,叫做进程表示符(PID)。一个PID命名空间是一组识别进程的数字,Linux可以创建多个PID命名空间,每个命名空间都有一套完整的PID(每个PID命名空间都将包含自己的PID1、PID2等等)。为每个容器创建一个命名空间是Docker的关键特征

如果没有PID命名空间,容器无法区分其他主机或容器上运行的具有相同ID的空间。可以通过命令docker create(该容器是被停止状态创建的)或docker run中设置--pid=host来尝试创建没有PID命名空间的容器。


容器标识

Docker会给每个容器分配一个唯一的标识符,这一个16进制编码的1024位数字。当容器以守护模式启动时,其标识符将被打印到终端,这个标识符可以在任何命令中使用。这个ID在极高的概率下是唯一的,不空能发生冲突,所以ID的前十二个字符在同一个计算机上发生冲突几乎不可能,所以大多数Docker界面使用前12个字符标识容器。

  1. 在shell命令中,可以将结果分配给一个shell变量,以后再次使用:
    CID=$(docker create nginx:latest)
    echo $CID
  2. 获得最后创建的那个容器的截断ID:
    CID=$(docker ps --latest --quite)CID=$(docker ps -l -q)

容器状态

Docker容器有四个状态:运行中暂停中已退出重新启动中


构建与环境无关的系统
  1. 只读文件系统
    只读文件系统可以保证容器不能更改它所包含的文件产生的信息。同时,容器中的攻击者无法破坏文件。--read-only标志可以标示一个容器是只读文件系统。
    docker run -d --name wp --read-only Wordpress:4
  2. 环境变量的注入
    环境变量是通过其执行上下文提供给程序的健值对。可以在改变一个程序的配置时,无需修改任何文件或更改用于启动该程序的命令。Docker提供了一个机制,可将环境变量注入到一个新的容器中。使用命令显示当前执行上下文(终端)中的所有环境变量。
    docker run --env busybox:latest env
  3. 存储卷
    建立持久化容器。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值