Linuxコマンドとパッケージ名対応表

概要

Dockerイメージなどミニマルな環境だといつものコマンドが使えないときがある。
イメージ容量を考えると不要なパッケージが入っていないほうが良いのだが困るときもある。
そんなとき用のメモ

対応表

コマンド パッケージ名(CentOS) パッケージ名(Ubuntu)
ps procps
ping iputils iputils-ping
ip iproute iproute
ss iproute iproute
ifconfig net-tools net-tools
arp net-tools net-tools
netstat net-tools net-tools
route net-tools net-tools
traceroute traceroute inetutils-traceroute
dig bind-utils dnsutils
nslookup bind-utils dnsutils
vconfig vconfig vlan
brctl brigde-utils brigde-utils

Dockerのデーモン設定ファイルでコンテナのデフォルト/etc/resolv.conf設定

概要

Dockerコンテナの/etc/resolv.confはDockerホストのファイルがそのまま引き継がれる。
DockerホストとDockerコンテナで名前解決の設定を変更したい場合はdocker runのときに--dnsオプションを指定することで個別に変更が出来る。

とはいえ毎回docker runの度にオプション指定は面倒、しかしDockerホストの/etc/resolv.confは変更したくない。。。

そういった場合は/etc/docker/daemon.jsonに事前に設定を入れておくことで
Dockerホストの/etc/resolv.confを変更することなくそして--dnsオプションを指定する必要がなくなる。

設定

/etc/docker/daemon.json
{
  "dns": [
    "10.0.0.1", "10.0.0.2", "10.0.0.3"
  ],
  "dns-opts": [
    "timeout:1"
  ]
}

と書いてデーモンを再起動すると
各コンテナの/etc/resolv.confのデフォルトが

search example.com
nameserver 10.0.0.1
nameserver 10.0.0.2
nameserver 10.0.0.3
options timeout:1

になる。

search example.comは指定していないのでデフォルトのDockerホストの/etc/resolv.confから引き継がれてきた。

注意

jsonファイル中のdns-optsjsonファイルではdns-optsだがdocker run時のオプションではdns-optなので注意

Ubuntuはデフォルトでbackupユーザが存在する

LDAP上の「backup」というユーザ名の一般ユーザで各CentOSサーバーにログインして回りデータをリモートバックアップしていた。

ところがUbuntuサーバーに対して同様のリモートバックアップを行おうと思ったところLDAPの「backup」ユーザでログインできなかった。

「backup」ユーザでsshでログインしようとすると

This account is currently not available.

こういったメッセージが表示されてしまう。

調べたところUbuntuはデフォルトでローカルにbackupユーザが存在する。
そしてログインシェルがnologinだった。

CentOSはデフォルトでローカルにbackupユーザがいないので問題なかった。

# id backup
uid=34(backup) gid=34(backup) groups=34(backup)
#


/etc/passwd
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin


/etc/shadow
backup:*:17340:0:99999:7:::


/etc/group
backup:x:34:



こういう場合も考えユーザ名は慎重に考えるべきという教訓になった。