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