Network / Dockerfile (Network tools)
===
###### tags: `OS / Ubuntu / Network`
###### tags: `OS`, `Ubuntu`, `linux`, `command`, `network`, `docker`, `Dockerfile`, `containerd`, `curl`, `dig`, `nslookup`, `tcpdump`
<br>
[TOC]
<br>
## (for K8s 網路除錯)
| 工具 | 套件名稱 | 用途 |
|-----------|------------------|---------------------------------------|
| `ifconfig` | `net-tools` | 傳統網路資訊工具 |
| `route` | `net-tools` | 傳統路由表查詢 |
| `ip` | `iproute2` | 現代化網路工具組(建議優先使用)|
| `ping` | `iputils-ping` | 測試 ICMP 連通性 |
| `traceroute` | `traceroute` | 查封包的跳數與路徑 |
| `dig` | `dnsutils` | DNS 查詢 |
| `nslookup` | `dnsutils` | 簡單 DNS 查詢(也包含在 `dnsutils`) |
| `curl` | `curl` | 測試 HTTP/HTTPS 可達性 |
| `wget` | `wget` | 同上,備用工具 |
| `tcpdump` | `tcpdump` | 抓封包用,非常有用 |
| `telnet` | `telnet` | 測試 TCP 連線 |
| `nmap` | `nmap` | 簡易 port 掃描、檢查防火牆 |
| `netcat` | `netcat` 或 `ncat` | 檢查 TCP/UDP port,建 socket(類似 telnet)|
| `vim`/`nano` | `vim` 或 `nano` | 編輯設定檔(可選)|
| `iproute2` | `iproute2` | 新版網路管理工具組,取代 `net-tools` |
| `net-tools` | `net-tools` | 傳統工具組(包含 ifconfig、route)|
<br>
## Dockerifle
```dockerfile=
# base image
FROM ubuntu:22.04
# [Software Repository]
#
# update the Ubuntu software repository
#
# - for the 'tzdata' package, or you will meet:
# E: Unable to locate package tzdata
#
# - for the 'software-properties-common' package, or you will meet:
# E: Unable to locate package software-properties-common
#
RUN apt-get update \
&& apt-get install -y curl wget nano
# [Net Tools]
RUN apt-get update && apt-get install -y \
iproute2 \
net-tools \
iputils-ping \
traceroute \
dnsutils \
curl \
wget \
tcpdump \
telnet \
netcat \
vim \
&& apt-get clean
CMD [ "bash" ]
```
- ### Build Image
```
$ docker build -t ubuntu22.04-net-tools .
```
- ### Run Image
```
$ docker run --rm -it ubuntu22.04-net-tools
- ### 儲存成 tar 檔
```
$ docker save ubuntu22.04-net-tools -o ubuntu22.04-net-tools.tar
```
- ### 載入到 containerd
```
$ sudo ctr -n k8s.io image import ubuntu22.04-net-tools.tar
$ sudo ctr -n k8s.io image list | grep ubuntu22.04
```
<br>
{%hackmd vaaMgNRPS4KGJDSFG0ZE0w %}