docker- 容器

新建并启动容器命令 docker run

docker run = docker create image_id + docker start container_id
在这里插入图片描述

基本语法docker run --help

在这里插入图片描述
1,基础命令 docker run image
查看已有镜像
在这里插入图片描述
使用redis:1.0镜像运行容器
在这里插入图片描述
创建容器后,立即退出,仅仅是创建个容器,容器的状态是终止状态。
在这里插入图片描述
2,基础命令 docker run image command
在这里插入图片描述
创建容器后,运行命令,后立即退出,就像执行完一个php脚本一样

[Options简介:]

  • -d = ‘detach’ 分离模式| Run container in background and print container ID | 在后台运行容器并打印容器ID
  • -i = 'interactive’互动 | Keep STDIN open even if not attached | STDIN=standard(标准),in即input(输入);标准输入,一般就是指键盘输入到缓冲区里的东西 | 保持输入流开放即使没有附加输入流
  • -t = Allocate a pseudo-TTY | 分配一个伪造的终端输入 | 这里的参数-t 和 docker build -t含义是不同的。-i -t启动一个终端,允许用户进行交互。
    在这里插入图片描述

终端,用户访问计算机主机的硬件设备,可以理解为一个显示器和一个键盘的组合。
伪终端,即在键盘(输入)、显示器(读取)与 cli模式 之间,同屏运行多个终端模拟器、并实现远程登录,还可以为输入与显示控制和辅助。(课题太大,临时了解的,错误之处请谅解)

  • --name = Assign a name to the container | 为容器分配一个名称
  • --network = Connect a container to a network (default"default") | 将容器连接到网络(默认为“default”) | 默认bridge

docker network --help查看网络有关命令。
在这里插入图片描述
bridge:桥接网络
每次Docker容器重启时,会按照顺序获取对应的IP地址,这个就导致重启下,Docker的IP地址就变了
host: 主机网络
-network=host,此时,Docker 容器的网络会附属在主机上,两者是互通的。例如,在容器中运行一个Web服务,监听8080端口,则主机的8080端口就会自动映射到容器中.
none:无指定网络
–network=none ,docker 容器就不会分配局域网的IP

  • --ip = IPv4 address (e.g.,172.30.100.104) | IPv4地址(例如,172.30.100.104)
  • -p小写 = port | Publish a container’s port(s) to the host | 将指定的容器的端口发布到主机 | 可以多次使用来绑定多个端口
  • -P大写 = port | Publish all exposed ports to random ports | 随机映射一个49000~49900 的端口到内部容器开放的网络端口
  • --rm 当容器退出时自动删除它

[option:详解]

  • -d 后台运行

    -d参数与不加-d,区别在于不加-d,执行命令的结果输出在当前宿主机。当运行的命令耗时比较长时,会长期占用窗口。而-d后台运行后,不会影响当然窗口继续其他操作,它是通过docker container logs中查看结果的。

    注: 容器是否会长久运行,是和 docker run 指定的命令有关,和 -d 参数无关。

  • -i 交互模式

标准输入,一般就是指键盘输入到缓冲区里的东西 | 保持输入流开放即使没有附加输入流。演示一下。

-i模式下,也是命令行模式,只不过不像我们常见的linux命令行的样子
在这里插入图片描述

  • -t 分配一个伪造的终端

在这里插入图片描述
进入了这个容器,但是输入完全没有反应,是因为缺少交互参数-i的缘故。

  • -i -t通常同时使用,既能进入容器,又能交互。

    和我们熟悉的linux命令行一样了。
    在这里插入图片描述

  • --network 将容器连接到网络(默认为“default”) | 默认bridge

    docker network --help
    在这里插入图片描述
    docker network ls 列出网络名称
    在这里插入图片描述
    docker network inspect network_id
    在这里插入图片描述
    在这里插入图片描述
    新建两个容器并不退出,它默认就是桥接模式
    在这里插入图片描述
    重点来了,回到上文所说:
    每次Docker容器重启时,会按照顺序获取对应的IP地址,这个就导致重启下,Docker容器的IP地址就变了。什么意思呢?

    把这两个容器停止。然后与上次启动的顺序不同,先启动redis2再启动redis1,对照上图发现
    在这里插入图片描述
    原来docker是按照启动顺序分配ip的,也就是说容器的ip会随着重启而改变,所以当一些应用依赖某些容器时,或者容器与容器之间保持连接,需要解决这个问题。

  • --ip 指定容器ip

在这里插入图片描述
报错:“来自守护进程的错误响应:仅在用户定义的网络上支持用户指定的IP地址。”

原因:桥接网络的特点,按照顺序分配ip,所以不能指定ip。

所以只能在用户自定义的网络的容器上使用--ip参数。
  • -p小写 -P大写 将指定的容器的端口发布到主机

    在这里插入图片描述
    比如我的镜像redis:1.0 开放的端口是6379(在Dockfile中的EXPOSE),-P 会随机映射一个端口到6379,而-p则可以指定映射的端口,通常使用-p。

    新建立一个容器,指定映射端口6380到6379:
    在这里插入图片描述
    可以用docker inspect container_id or image_id 命令查看详情
    在这里插入图片描述
    在这里插入图片描述
    自定义网络和指定ip 容器互联 在下一节介绍

进入容器

如果这个容器是停止的,那么docker没有给它分配进程和进程空间,是无法进入的。
则需要docker start container_id启动容器,然后进入容器进行操作。这里的要点主要是-it的理解,-i只交互但不直观操作不方便,-t不能交互,-it其实就是打开一个我们常见的Linux命令行的模式,就这么简单。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值