テックブログ

Dockerの導入

お久しぶりです。mnakamuraです。

今回はDockerの導入にチャレンジです。

機会があればZabbixやPrometheus、Grafana等との連携についても記事にしたいと思いますが、

今回は基礎的な部分から触れていきます。

Almalinuxに導入します…環境は下記。

[root@mnakamura-alma-trial ~]# uname -a
Linux mnakamura-alma-trial 4.18.0-348.20.1.el8_5.x86_64 #1 SMP Thu Mar 10 11:31:47 EST 2022 x86_64 x86_64 x86_64 GNU/Linux

[root@mnakamura-alma-trial ~]# cat /etc/redhat-release
AlmaLinux release 8.5 (Arctic Sphynx)

まずはレポジトリの追加から…

[root@mnakamura-alma-trial ~]# dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
repo の追加: https://download.docker.com/linux/centos/docker-ce.repo

[root@mnakamura-alma-trial ~]# ll -A /etc/yum.repos.d/
合計 60
-rw-r--r--  1 root root  951 12月 22  2021 almalinux-ha.repo
-rw-r--r--  1 root root  893 12月 22  2021 almalinux-plus.repo
-rw-r--r--  1 root root  971 12月 22  2021 almalinux-powertools.repo
-rw-r--r--  1 root root 1049 12月 22  2021 almalinux-resilientstorage.repo
-rw-r--r--. 1 root root 2867  5月 27  2021 almalinux.repo
-rw-r--r--. 1 root root 2804  5月 26  2021 almalinux.repo.orig
-rw-r--r--  1 root root 2690 12月 22  2021 almalinux.repo.rpmnew
-rw-r--r--  1 root root 1919  7月 11 09:03 docker-ce.repo
-rw-r--r--  1 root root 1395  3月 15 06:53 epel-modular.repo
-rw-r--r--  1 root root 1494  3月 15 06:53 epel-testing-modular.repo
-rw-r--r--  1 root root 1431  3月 15 06:53 epel-testing.repo
-rw-r--r--  1 root root 1332  3月 15 06:53 epel.repo
-rw-r--r--  1 root root 1825  2月 15 19:40 remi-modular.repo
-rw-r--r--  1 root root  810  2月 15 19:40 remi-safe.repo
-rw-r--r--  1 root root 1448  2月 15 19:40 remi.repo


レポジトリが追加されている事を確認したら、必要なものを導入していきます。


[root@mnakamura-alma-trial ~]# dnf -y install docker-ce docker-ce-cli containerd.io
~略~
アップグレード済み:
  audit-3.0.7-2.el8.2.x86_64                             audit-libs-3.0.7-2.el8.2.x86_64                             libsemanage-2.9-8.el8.x86_64                             policycoreutils-2.9-19.el8.x86_64
インストール済み:
  checkpolicy-2.9-1.el8.x86_64                                   container-selinux-2:2.179.1-1.module_el8.6.0+2878+e681bc44.noarch     containerd.io-1.6.6-3.1.el8.x86_64                          docker-ce-3:20.10.17-3.el8.x86_64
  docker-ce-cli-1:20.10.17-3.el8.x86_64                          docker-ce-rootless-extras-20.10.17-3.el8.x86_64                       docker-scan-plugin-0.17.0-3.el8.x86_64                      fuse-common-3.3.0-15.el8.x86_64
  fuse-overlayfs-1.8.2-1.module_el8.6.0+2878+e681bc44.x86_64     fuse3-3.3.0-15.el8.x86_64                                             fuse3-libs-3.3.0-15.el8.x86_64                              libcgroup-0.41-19.el8.x86_64
  libslirp-4.4.0-1.module_el8.6.0+2878+e681bc44.x86_64           policycoreutils-python-utils-2.9-19.el8.noarch                        python3-audit-3.0.7-2.el8.2.x86_64                          python3-libsemanage-2.9-8.el8.x86_64
  python3-policycoreutils-2.9-19.el8.noarch                      python3-setools-4.3.0-3.el8.x86_64                                    slirp4netns-1.1.8-2.module_el8.6.0+2878+e681bc44.x86_64

完了しました!


次にステータス確認を実施します。コマンドは docker info[root@mnakamura-alma-trial ~]# docker info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Docker Buildx (Docker Inc., v0.8.2-docker)
  scan: Docker Scan (Docker Inc., v0.17.0)

Server:
ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
errors pretty printing info


おや?エラーが出ますね。
導入直後はサービスが立ち上がっていないので、systemctlで立ち上げましょう。


[root@mnakamura-alma-trial ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: https://docs.docker.com

[root@mnakamura-alma-trial ~]# systemctl start docker

[root@mnakamura-alma-trial ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2022-07-11 09:08:49 JST; 1s ago
     Docs: https://docs.docker.com
 Main PID: 909123 (dockerd)
    Tasks: 8
   Memory: 36.3M
   CGroup: /system.slice/docker.service
           mq909123 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

 7月 11 09:08:48 mnakamura-alma-trial dockerd[909123]: time="2022-07-11T09:08:48.586851839+09:00" level=warning msg="Your kernel does not support cgroup blkio weight"
 7月 11 09:08:48 mnakamura-alma-trial dockerd[909123]: time="2022-07-11T09:08:48.586873271+09:00" level=warning msg="Your kernel does not support cgroup blkio weight_device"
 7月 11 09:08:48 mnakamura-alma-trial dockerd[909123]: time="2022-07-11T09:08:48.587039856+09:00" level=info msg="Loading containers: start."
 7月 11 09:08:49 mnakamura-alma-trial dockerd[909123]: time="2022-07-11T09:08:49.417931813+09:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred >
 7月 11 09:08:49 mnakamura-alma-trial dockerd[909123]: time="2022-07-11T09:08:49.544447379+09:00" level=info msg="Firewalld: interface docker0 already part of docker zone, returning"
 7月 11 09:08:49 mnakamura-alma-trial dockerd[909123]: time="2022-07-11T09:08:49.650250273+09:00" level=info msg="Loading containers: done."
 7月 11 09:08:49 mnakamura-alma-trial dockerd[909123]: time="2022-07-11T09:08:49.669960772+09:00" level=info msg="Docker daemon" commit=a89b842 graphdriver(s)=overlay2 version=20.10.17
 7月 11 09:08:49 mnakamura-alma-trial dockerd[909123]: time="2022-07-11T09:08:49.670078155+09:00" level=info msg="Daemon has completed initialization"
 7月 11 09:08:49 mnakamura-alma-trial systemd[1]: Started Docker Application Container Engine.
 7月 11 09:08:49 mnakamura-alma-trial dockerd[909123]: time="2022-07-11T09:08:49.696252962+09:00" level=info msg="API listen on /var/run/docker.sock"


再度確認すると…


[root@mnakamura-alma-trial ~]# docker info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Docker Buildx (Docker Inc., v0.8.2-docker)
  scan: Docker Scan (Docker Inc., v0.17.0)

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
 Server Version: 20.10.17
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runtime.v1.linux runc io.containerd.runc.v2
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
 runc version: v1.1.2-0-ga916309
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 4.18.0-348.20.1.el8_5.x86_64
 Operating System: AlmaLinux 8.5 (Arctic Sphynx)
 OSType: linux
 Architecture: x86_64
 CPUs: 2
 Total Memory: 1.931GiB
 Name: mnakamura-alma-trial
 ID: 7QHU:Q5S5:HELU:DPGS:OCE4:IN67:QBVA:Y4FS:EDDN:OLBR:WTAP:YINX
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false


このように、実行環境やコンテナ数などが表示されました。一覧表示便利ですね。
バージョンだけ確認するコマンドは下記。


[root@mnakamura-alma-trial ~]# docker --version
Docker version 20.10.17, build 100c701


自動起動設定も入れておきましょう。


[root@mnakamura-alma-trial ~]# systemctl list-unit-files --no-pager | grep -i docker
docker.service                                                   disabled
docker.socket                                                    disabled

[root@mnakamura-alma-trial ~]# systemctl enable docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
[root@mnakamura-alma-trial ~]# systemctl list-unit-files --no-pager | grep -i docker
docker.service                                                   enabled
docker.socket                                                    disabled

[root@mnakamura-alma-trial ~]# systemctl enable docker.socket
Created symlink /etc/systemd/system/sockets.target.wants/docker.socket → /usr/lib/systemd/system/docker.socket.
[root@mnakamura-alma-trial ~]# systemctl list-unit-files --no-pager | grep -i docker
docker.service                                                   enabled
docker.socket                                                    enabled

次は、Dockerを動かすユーザーをグループに追加します。
下記みたいな感じで必要なものをセカンダリに追加します。

[root@mnakamura-alma-trial ~]# grep -i docker /etc/passwd
[root@mnakamura-alma-trial ~]#

[root@mnakamura-alma-trial ~]# usermod -aG docker ${USER}
[root@mnakamura-alma-trial ~]# grep -i docker /etc/passwd
[root@mnakamura-alma-trial ~]#

[root@mnakamura-alma-trial ~]# id root
uid=0(root) gid=0(root) groups=0(root),985(docker)

[root@mnakamura-alma-trial ~]# id alma_mnakamura
uid=1000(alma_mnakamura) gid=48(apache) groups=48(apache)

[root@mnakamura-alma-trial ~]# usermod -aG docker alma_mnakamura
[root@mnakamura-alma-trial ~]# id alma_mnakamura
uid=1000(alma_mnakamura) gid=48(apache) groups=48(apache),985(docker)


次に、イメージを引っ張ってきます。
Dockerはイメージあってこそです。現在のイメージ一覧は下記のように確認可能です。


[root@mnakamura-alma-trial ~]# docker image ls
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE


コマンドのオプションは下記で確認出来ます。


[root@mnakamura-alma-trial ~]# docker image

Usage:  docker image COMMAND

Manage images

Commands:
  build       Build an image from a Dockerfile
  history     Show the history of an image
  import      Import the contents from a tarball to create a filesystem image
  inspect     Display detailed information on one or more images
  load        Load an image from a tar archive or STDIN
  ls          List images
  prune       Remove unused images
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rm          Remove one or more images
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE

Run 'docker image COMMAND --help' for more information on a command.


OSイメージをpullします。
今回はubuntuにするので、公式を確認してみましょう。

https://hub.docker.com/_/ubuntu

導入用のコマンドを確認可能です。バージョン指定なんかも出来たりしますが、
今回はシンプルに。


[root@mnakamura-alma-trial ~]# docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
405f018f9d1d: Pull complete
Digest: sha256:b6b83d3c331794420340093eb706a6f152d9c1fa51b262d9bf34594887c2c7ac
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

[root@mnakamura-alma-trial ~]# docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       latest    27941809078c   4 weeks ago   77.8MB


ubuntuのイメージが追加されましたね。
次はコンテナの中身を確認してみましょう。


[root@mnakamura-alma-trial ~]# docker container ls
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES


まだ何もないので、いくつか実行してみます。
IDやIMAGEで指定可能です。


[root@mnakamura-alma-trial ~]# docker container run 27941809078c

[root@mnakamura-alma-trial ~]# docker run ubuntu

[root@mnakamura-alma-trial ~]# docker run ubuntu:latest ls
bin
boot
dev
etc
home
lib
lib32
lib64
libx32
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var

[root@mnakamura-alma-trial ~]# docker run ubuntu:latest df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay          16G  5.7G  9.2G  39% /
tmpfs            64M     0   64M   0% /dev
tmpfs           989M     0  989M   0% /sys/fs/cgroup
shm              64M     0   64M   0% /dev/shm
/dev/vda3        16G  5.7G  9.2G  39% /etc/hosts
tmpfs           989M     0  989M   0% /proc/acpi
tmpfs           989M     0  989M   0% /proc/scsi
tmpfs           989M     0  989M   0% /sys/firmware


プロセスを確認してみると…

[root@mnakamura-alma-trial ~]# docker ps -a
CONTAINER ID   IMAGE           COMMAND   CREATED          STATUS                      PORTS     NAMES
7af4dfb78b5c   ubuntu:latest   "df -h"   32 seconds ago   Exited (0) 32 seconds ago             elated_easley
13c264b02fe2   ubuntu:latest   "ls"      57 seconds ago   Exited (0) 56 seconds ago             nice_merkle
d94519674c02   ubuntu          "bash"    2 minutes ago    Exited (0) 2 minutes ago              vigorous_rhodes
5b6a3912750d   ubuntu          "bash"    2 minutes ago    Exited (0) 2 minutes ago              zen_liskov
dc0f3afc1520   27941809078c    "bash"    3 minutes ago    Exited (0) 3 minutes ago              pedantic_lamarr


こんな風に、プロセスとして稼働してくれるのですね。
不要なものは削除も可能です。IDを指定して消してみましょう。


[root@mnakamura-alma-trial ~]# docker rm d94519674c02
d94519674c02
[root@mnakamura-alma-trial ~]# docker rm 5b6a3912750d
5b6a3912750d
[root@mnakamura-alma-trial ~]# docker rm dc0f3afc1520
dc0f3afc1520

[root@mnakamura-alma-trial ~]# docker ps -a
CONTAINER ID   IMAGE           COMMAND   CREATED         STATUS                     PORTS     NAMES
7af4dfb78b5c   ubuntu:latest   "df -h"   6 minutes ago   Exited (0) 6 minutes ago             elated_easley
13c264b02fe2   ubuntu:latest   "ls"      6 minutes ago   Exited (0) 6 minutes ago             nice_merkle


…まだ少ししか紹介していないのですが、長くなってしまいましたので続きは次回に。
これからもネットアシストをよろしくお願い致します。




この記事をシェアする

  • facebook
  • twitter
  • hatena
  • line
URLとタイトルをコピーする

実績数30,000件!
サーバーやネットワークなど
ITインフラのことならネットアシストへ、
お気軽にご相談ください