2
3

More than 3 years have passed since last update.

Docker(docker-compose)でCentOS8のコンテナを利用する(ERROR: No container found forの解消)

Posted at

はじめに

docker docker-compose centos8などのキーワードを利用して、Google先生に尋ねると、大体出てくる記事はCentOSdockerとかdocker-composeをインストールする方法が出てくる。

CentOS8からはyumではなくdnfコマンドによってパッケージ管理を行う仕組みが導入されているのだとか。
そんな話しを2020年になるまで知らなかった。。。(正確には知っていても試してみなかった。。。)

なので、せっかくdockerを少しずつ勉強しているので、お手軽にCentOS8の環境を用意して試してみようと思ったところで、いきなり少しつまずいたので、その部分も踏まえて新年(2020年)一発目のQiita記事としてまとめました。

最小の設定でCentOS8を起動して試してみる

ディレクトリ構成と各設定内容

最小の設定とはいえ、後々yum -y updateみたいなものと同じであろうdnf -y updateみたいなこともDockerfile内で指定しようと思っているので、Dockerfileは作成する。

ディレクトリ構成
.
├── Dockerfile
└── docker-compose.yml
docker-compose.yml
version: '3'
services:
  centos8:
    container_name: "centos8"
    build: ./
Dockerfile
FROM centos:8

動作検証

とりあえずBuild

$ docker-compose build --no-cache

up

$ docker-compose up -d

コンテナにアクセスしてみる

$ docker-compose exec centos8 bash
ERROR: No container found for centos8_1

・・・ん?

エラーが出てしまい、コンテナにアクセスできない状況となっている。
ログを確認してみる。

$ docker-compose logs
Attaching to centos8

ログにはエラーが出ていないように見える。
プロセスを確認してみる。

$ docker-compose ps
 Name      Command    State    Ports
------------------------------------
centos8   /bin/bash   Exit 0        

正常に終了しています。みたいなステータスになっている。
どうやらdocker-compose.ymlファイルのオプションにttytrueで設定を追加する必要があるようです。

docker-compose up したコンテナを起動させ続ける方法の記事を参考にしました。

docker-compose.yml
version: '3'
services:
  centos8:
    container_name: "centos8"
    build: ./
    tty: true  # ← 追記

再度コンテナを起動し直して、コンテナにアクセスしなおしてみる。

$ docker-compose down
$ docker-compose up -d
$ docker-compose exec centos8 bash
$ docker-compose exec centos8 bash
[root@ac4fc975a84d /]# cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core) 

確認できました。
とりあえず、これでCentOS8の確認ができる準備が整ったので、yumが使えなくなっているのかぐらいは検証してみようと思います。

yumは使えないのか?

# yum -y update
Failed to set locale, defaulting to C
CentOS-8 - AppStream                                                        1.3 MB/s | 6.3 MB     00:04    
CentOS-8 - Base                                                             2.8 MB/s | 7.9 MB     00:02    
CentOS-8 - Extras                                                           515  B/s | 2.1 kB     00:04    
Dependencies resolved.
============================================================================================================
 Package                    Arch             Version                              Repository           Size
============================================================================================================
Upgrading:
 bash                       x86_64           4.4.19-8.el8_0                       BaseOS              1.5 M
 bind-export-libs           x86_64           32:9.11.4-17.P2.el8_0.1              BaseOS              1.1 M
 dracut                     x86_64           049-10.git20190115.el8_0.1           BaseOS              361 k
 dracut-network             x86_64           049-10.git20190115.el8_0.1           BaseOS               96 k
 dracut-squash              x86_64           049-10.git20190115.el8_0.1           BaseOS               52 k
.......
Installed:
  libxkbcommon-0.8.2-1.el8.x86_64        diffutils-3.6-5.el8.x86_64        hardlink-1:1.3-6.el8.x86_64    
  kbd-2.0.4-8.el8.x86_64                 kpartx-0.7.8-7.el8_0.2.x86_64     pigz-2.4-2.el8.x86_64          
  xkeyboard-config-2.24-3.el8.noarch     kbd-legacy-2.0.4-8.el8.noarch     kbd-misc-2.0.4-8.el8.noarch    

Complete!

yumは使えるみたいですね。
どうやらyumが使えるのはdnfへのシンボリックリンクになっているため、CentOS8でも使えるんだとか。
本当にそうなのか念のため確認してみようと思います。

# which yum
bash: which: command not found

今度はwhichコマンドが無い。。。さすがDocker
無駄なものを省いた最小構成のイメージだけはある。
whichコマンドをyumでインストールしてから確認してみると、確かにyum -> dnf-3となっていて、シンボリックリンクになっていることが分かります。

# yum -y install which
Failed to set locale, defaulting to C
Last metadata expiration check: 0:09:38 ago on Tue Dec 31 20:35:39 2019.
Dependencies resolved.
....

# which yum
/usr/bin/yum

# ls -la | grep yum
lrwxrwxrwx 1 root root       5 May 13  2019 yum -> dnf-3

と、ここでyum -y install ...コマンドの実行直後の行にFailed to set locale, defaulting to Cが出ているのに気付きました。

これは日本語の言語パッケージがインストールされていないことが原因とのこと。
https://qiita.com/takizawafw6o2o/items/d6a15b5ae05d85ae1f41#%E5%8E%9F%E5%9B%A0

なので同じようにインストールしてみる。
もうここまででyumdnfのシンボリックリンクであることがわかったため、今後慣れていくためにもdnfコマンドを利用するようにします。

# dnf -y install langpacks-ja
...
Installed:
  langpacks-ja-1.0-12.el8.noarch                   glibc-langpack-ja-2.28-42.el8.1.x86_64                  

Complete!

言語パッケージをインストールしたのでyum listFailed to set locale, defaulting to Cが出ないことを確認する。あ、dnf listですね。

# dnf list
Failed to set locale, defaulting to C

なおらない。
http://tihiro.hatenablog.com/entry/2017/10/12/075555
この記事を参考にLC_ALLを設定してみます。

# export LC_ALL=C
# dnf list

これで出なくなるみたいです。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3