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






