關于Docker
版本
Docker版本
- Docker Community Edition(CE)-社群版
- Docker Enterprise Edition(EE)-企業版
Docker Engine版本
- Docker Engine Enterprise
- Docker Engine Community。
平台支援
桌面版
平台 | x86_64 |
---|---|
Docker Desktop for Mac (macOS) | 是 |
Docker Desktop for Windows (Microsoft Windows 10) | 是 |
伺服器版
Platform | x86_64 / amd64 | ARM | ARM64 / AARCH64 | IBM Power (ppc64le) | IBM Z (s390x) |
---|---|---|---|---|---|
CentOS | |||||
Debian | |||||
Fedora | |||||
Ubuntu |
Docker Toolbox
docker在linux下直接安裝Docker Engine即可。但是在Windows、MacOS下需要用Docker Toolbox提供的Docker Machine建立虛拟機(boot2docker)。
安裝教程
為Windows和MacOS提供的docker安裝器,包含以下工具:
- Docker Machine,提供docker-machine指令
- Docker Engine,提供docker指令
- Docker Compose,提供docker-compose指令
- Kitematic,Docker GUI
- Shell,提供Docker指令行環境的
- Oracle VirtualBox
Kitematic提供圖形界面,友善容器的管理,使用教程
問題彙總
容器時區設定
在使用Docker Toolbox時,用docker-machine建立的boot2docker虛拟機時區為UTC,導緻其中運作的容器時區與本地時區也不一緻。
解決方案如下:
docker-compose模式
environment:
- TZ=Asia/Shanghai
docker run模式
docker run -e "TZ=Asia/Shanghai"
容器網絡設定
容器預設是動态IP,有時我們需要靜态IP。
docker-compose模式
指定子網網關、網段,及容器靜态IP。下例會自動建立名稱為 docker-hadoop_net
的網絡。
version: "2"
services:
namenode:
image: mysql
container_name: mymysql
environment:
- TZ=Asia/Shanghai
networks:
net:
ipv4_address: 172.18.100.101
networks:
net:
ipam:
config:
- subnet: 172.18.100.0/24
gateway: 172.18.100.1
docker run模式
docker run -e TZ="Asia/Shanghai" --privileged -itd -h hadoop01.com --name hadoop01 --network=mynet --ip 172.18.12.1 centos /usr/sbin/init
主機直連容器
MacOS
在Docker Desktop for Mac、Docker Machine環境中均不能ping通容器。按照網上的方法添加route,将容器ip路由到docker machine,沒有響應。
虛拟機(CentOS)
!!!虛拟機添加Host-Only網卡,并将混雜模式設定為全部允許。
1、安裝VirtualBox,添加CentOS7虛拟機,安裝Docker CE。
2、配置虛拟機網絡,與主控端互通。
3、管理-主機網絡管理器,添加虛拟網卡vboxnet0
vboxnet0在主控端添加虛拟網卡,為虛拟機配置設定IP,主控端與虛拟機在同一網段。
4、VirtualBox-偏好設定-網絡
NatNetwork為VirtualBox中安裝的虛拟機配置設定IP,與主控端隔離。
5、配置虛拟機網卡1(NAT網絡)
6、配置虛拟機網卡2(僅主機網絡)
!!!混雜模式設定為全部允許
7、主控端添加路由表
在虛拟機中檢視docker容器IP,步驟如下:
# 檢視network
~ docker network ls
NETWORK ID NAME DRIVER SCOPE
8c4e3d387a7a bridge bridge local
# 檢視network網段和容器ip
~ docker inspect 8c4e3d387a7a
[
{
"Name": "bridge",
"Id": "8c4e3d387a7a5c",
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
}
]
},
"Containers": {
"46cba393befd1f6": {
"Name": "registry",
"EndpointID": "3530fa3f129c7b6",
"MacAddress": "02:42:ac:11:00:02",
"IPv4Address": "172.17.0.2/16",
"IPv6Address": ""
}
}
}
]
# 例如:network網段為172.17.0.0/16,虛拟機IP為192.168.56.102
~ route -n add 172.17.0.0/16 192.168.56.102
8、至此大功告成
看,ping成功了
~ ping 172.17.0.2
PING 172.17.0.2 (172.17.0.2): 56 data bytes
64 bytes from 172.17.0.2: icmp_seq=0 ttl=63 time=0.365 ms
64 bytes from 172.17.0.2: icmp_seq=1 ttl=63 time=0.428 ms
64 bytes from 172.17.0.2: icmp_seq=2 ttl=63 time=0.392 ms