关于Docker
前提 tí)
我会写下我学到的有关Docker的知识。
这个问题
基本指令
使用Dockerfile的信息构建容器镜像。
构建
↓
读取指定目录中的Dockerfile并构建容器镜像。
↓
构建的容器镜像将会保存在运行该命令的机器上。
可以通过-t标签添加一个保存时的名称。
显示保存在本地的Docker容器内容
用最新版本的dockerdemo镜像,以守护进程方式在后台运行,并将主机的8080端口映射到容器的80端口上。
実行中のコンテナの出力
docker container ls
停止容器
docker container stop 容器ID
容器网络是什么?
服务器上有一个LAN端口。
有几个物理上连接着LAN电缆的网络接口卡(NIC)。
虚拟服务器像EC2也是一样。
EC2只是对这样的NIC进行了虚拟化,工作原理与物理服务器相同。
传入Eth0的通信由内核控制。
在Linux中,可以使用iptables等工具来控制通信。
Docker可以很好地在内核级别运行,并为容器和外部通信做桥接。
Eth0のような物理的なレイヤーを通過
↓
Dockerネットワークのレイヤーに到着
↓
Dockerデーモンが物理レイヤーとDockerレイヤーのネットワークを接続する
↓
コンテナはDockerデーモンを通じて外部のネットワークと通信している
↓Dockerレイヤーの中身
もっともよく使われているシンプルなネットワーキングBridge
↓
Bridgeという仮想的なネットワークの接続ポイントを使用した方法
↓
コンテナを3つ立ち上げた場合
↓
vethをかいして、それぞれのコンテナはBridgeに接続している
↓
Bridgeはネットワーク機器でいうとスイッチのような役割で、Bridge自体は独立したネットワーク領域
↓
Bridgeに応じたIPアドレスがコンテナに割り当てられる
↓
Bridgeは複数作成することができる
显示当前Docker网络的信息。
查看网桥的网络地址是什么。
创建一个名为greenbridge的可附加的docker网络,网络类型为bridge,子网为10.99.0.0/16。
容器的容量是多少?
在默认情况下,容器内部生成的数据将保存在容器内部。
→如果删除容器,所有数据都会完全消失。
容器是一种不可变且临时的执行进程,是双刃剑。
数据库容器需要永不消失的数据。
不要将定制数据保存在容器内。
通过使用Docker的挂载功能,可以实现容器和主机之间的文件共享。
这个区别是指文件共享区域是由Docker控制还是由主机控制的。
如何与容器和Docker区域进行协作
绑定挂载
Docker中卷的管理和挂载方式
编辑Dockerfile文件
VOLUME /var/www/html
VOLUME用于指定容器端的挂载点
使用Bind mount实现文件共享的方法:
docker容器运行命令:–name bindmount1 -d -p 80:80 -v /root/bindmount:/var/www/html volumdemo:latest
在主機上指定要掛載的目錄位於左側。
使用冒號分隔,指定右側容器要掛載的區域。
在中国本地化的方式之一:
docker容器运行命令:docker container run –name bindmount1 -d -p 80:80 -v ${pwd}:/var/www/html volumdemo:latest
当前目录将自动替换为${pwd}。