docker run -itd --privileged -p 2222:22 --name almalinux --hostname almalinux almalinux:latest /sbin/init
docker >> docker run -itd --privileged -p 2222:22 --name almalinux --hostname almalinux almalinux:latest /sbin/init
Unable to find image 'almalinux:latest' locally
latest: Pulling from library/almalinux
28130cb29ede: Pull complete
Digest: sha256:d7f8aa1c5ff918565fa1114d16e27b03fe10944a422e2943a66f6f4a275fa22c
Status: Downloaded newer image for almalinux:latest
6222c9fdd54bd7ead2d17d17a3c30eb5a8a0234772959cdea028cccc09884b44
docker >> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6222c9fdd54b almalinux:latest "/sbin/init" 5 seconds ago Up 4 seconds 0.0.0.0:2222->22/tcp almalinux
docker >>
コンテナ内のシェルを動作させる
-itオプションをつける事で対話モードとなります。
docker exec -it almalinux /bin/bash
docker >> docker exec -it almalinux /bin/bash
[root@almalinux /]#
[root@almalinux /]# cat /etc/redhat-release
AlmaLinux release 9.3 (Shamrock Pampas Cat)
[root@almalinux /]# passwd root
bash: passwd: command not found
[root@almalinux /]# which passwd
bash: which: command not found
[root@almalinux /]# dnf install -y passwd
:
Installed:
libuser-0.63-13.el9.x86_64 passwd-0.80-12.el9.x86_64
Complete!
[root@almalinux /]# dnf install -y which
:
Installed:
which-2.21-29.el9.x86_64
Complete!
[root@almalinux /]#
[root@almalinux /]# which passwd
/usr/bin/passwd
[root@almalinux /]# passwd root
Changing password for user root.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@almalinux /]#
opensshサーバをインストール
dnf install -y openssh-server
[root@almalinux /]# dnf install -y openssh-server
:
Installed:
openssh-8.7p1-34.el9.x86_64 openssh-server-8.7p1-34.el9.x86_64
Complete!
[root@almalinux /]#
--
-- sshの起動
--
[root@almalinux /]# systemctl start sshd
--
-- sshデーモンの自動起動を設定
--
[root@almalinux /]# systemctl enable sshd
--
-- 状態確認
--
[root@almalinux /]# systemctl status sshd
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: enabled)
Active: active (running) since Sun 2024-03-03 01:49:25 UTC; 14s ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 154 (sshd)
CGroup: /docker/28425398b03d6cdb99468bbb1102e90849bf5c74a2d9dc314b9a471e394cba60/system.slice/sshd.service
└─154 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"
Mar 03 01:49:25 almalinux systemd[1]: Starting OpenSSH server daemon...
Mar 03 01:49:25 almalinux sshd[154]: Server listening on 0.0.0.0 port 22.
Mar 03 01:49:25 almalinux sshd[154]: Server listening on :: port 22.
Mar 03 01:49:25 almalinux systemd[1]: Started OpenSSH server daemon.
[root@almalinux /]#
これでホストマシン(私はWindows)からteratarmを使って接続する事が可能になります。ホスト名はlocalhost、接続ポートは上記指定した2222を使います。
おまけ
-- 他にも以下のパッケージを入れました。
-- (sshデーモンを上げるだけなら不要ですがあると何かと便利なものです)
-- epel-release :Extra Packages for Enterprise Linux (EPEL) リポジトリのリポジトリファイルをインストール
-- これでpython3もインストールされます。
dnf install -y epel-release
[root@almalinux /]# which python3
/usr/bin/python3
[root@almalinux /]# which python
which: no python in (/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin)
[root@almalinux /]# ln -sf /usr/bin/python3 /usr/bin/python
[root@almalinux /]# python -V
Python 3.9.18
-- procps-ng : ps やtopコマンドなとシステムユーティリティが含まれています。
dnf install -y procps-ng
-- diffコマンドも入っていなかったのでこちらも入れました
--
dnf install -y diffutils
この状態でdocker commit
ここまでの設定をDockerイメージとして保存する。次回からは今回保存したイメージからコンテナを上げる事でsshデーモンが立ち上がった状態となります。以下はコンテナ名「almalinux」で動作しているコンテナをリポジトリ名(almalinux):タグ名(9.3)のイメージを作成しています。
docker commit almalinux almalinux:9.3
docker >> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6222c9fdd54b almalinux:latest "/sbin/init" 11 minutes ago Up 11 minutes 0.0.0.0:2222->22/tcp almalinux
docker >> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
almalinux latest 7407e03f7ffc 3 months ago 184MB
public.ecr.aws/lambda/python 3.11-rapid-x86_64 84df53513e60 4 months ago 765MB
public.ecr.aws/lambda/python 3.11-x86_64 e34e3e59cb88 4 months ago 749MB
postgres 15.3 f0ff6ef79497 8 months ago 412MB
docker >> docker commit almalinux almalinux:9.3
sha256:a361adcb857848bf073255155beb4940d0f0c5cdbb98fadaa93454cd77bed109
docker >> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
almalinux 9.3 a361adcb8578 3 seconds ago 228MB
almalinux latest 7407e03f7ffc 3 months ago 184MB
public.ecr.aws/lambda/python 3.11-rapid-x86_64 84df53513e60 4 months ago 765MB
public.ecr.aws/lambda/python 3.11-x86_64 e34e3e59cb88 4 months ago 749MB
postgres 15.3 f0ff6ef79497 8 months ago 412MB
docker >>
コンテナ停止
以下はコンテナ名で指定していますがコンテナIDで指定する事も可能です。
docker container stop almalinux
docker >> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ecff08544961 almalinux:latest "/sbin/init" 17 minutes ago Up 17 minutes 0.0.0.0:2222->22/tcp almalinux
docker >> docker container stop almalinux
almalinux
docker >> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
docker >>
コンテナ起動
docker run -itd --privileged -p 2222:22 --name almalinux9.3 --hostname almalinux almalinux:9.3 /sbin/init
--
-- -itd インタラクティブな実行モード(-it)と、デタッチド(バックグランド)モード(-d)
-- ちなみに -は単一文字のオプションの組み合わせ(今回はi,t,d)という意味があります。
-- --privileged コンテナーに特権モードを与えます。
-- 特権モードでは、ホストシステムの機能に制限なくアクセスできます。
-- -p 2222:22: ホストのポート2222をコンテナーのポート22にマッピングします。
-- --name almalinux9.3 コンテナー名を almalinux9.3 とする
-- --hostname almalinux コンテナー内のホスト名を almalinuxとする
-- almalinux:latest 起動するイメージを指定
--
docker >> docker run -itd --privileged -p 2222:22 --name almalinux9.3 --hostname almalinux almalinux:latest /sbin/init
0de3bb82095859c53c5ec90f6f4ec53ee8d1bf589aa061110ffe4fe9efa66e5e
docker >>
docker >> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0de3bb820958 almalinux:latest "/sbin/init" 50 seconds ago Up 49 seconds 0.0.0.0:2222->22/tcp almalinux9.3
docker >> docker exec -it almalinux9.3 /bin/bash
[root@almalinux /]# ps -ef | grep ssh
root 24 1 0 05:19 ? 00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root 49 27 0 05:19 pts/1 00:00:00 grep --color=auto ssh
[root@almalinux /]#