使用docker執行CentOS容器

sxb_sunday發表於2024-04-24

一、從遠端倉庫查詢需要的映象

1.是透過Docker Hub網站搜尋(https://hub.docker.com/

2.是透過docker search命令來查詢映象

PS D:\learning\CentOS7> docker search centos
NAME                               DESCRIPTION                                      STARS     OFFICIAL
centos                             DEPRECATED; The official build of CentOS.        7721      [OK]
kasmweb/centos-7-desktop           CentOS 7 desktop for Kasm Workspaces             43
bitnami/centos-base-buildpack      Centos base compilation image                    0
dokken/centos-7                    CentOS 7 image for kitchen-dokken                10
spack/centos7                      CentOS 7 with Spack preinstalled                 2
dokken/centos-stream-8             CentOS Stream 8 image for use with Test Kitc…   5
dokken/centos-8                    CentOS 8 image for use with Test Kitchen's k…   6
dokken/centos-6                    EOL: CentOS 6 image for kitchen-dokken           0
dokken/centos-stream-9             CentOS Stream 9 image for use with Test Kitc…   10
atlas/centos7-atlasos              ATLAS CentOS 7 Software Development OS           3
ustclug/centos                     Official CentOS Image with USTC Mirror           0
spack/centos6                      CentOS 6 with Spack preinstalled                 1
eclipse/centos_jdk8                CentOS, JDK8, Maven 3, git, curl, nmap, mc, …   5
corpusops/centos-bare              https://github.com/corpusops/docker-images/      0
corpusops/centos                   centos corpusops baseimage                       0
eclipse/centos_go                  Centos + Go                                      0
spack/centos-stream                                                                 2
fnndsc/centos-python3              Source for a slim Centos-based Python3 image…   0
eclipse/centos_spring_boot         Spring boot ready image based on CentOS          0
openmicroscopy/centos-systemd-ip   centos/systemd with iproute, for testing mul…   0
eclipse/centos                     CentOS based minimal stack with only git and…   1
eclipse/centos_vertx               CentOS + vertx                                   0
eclipse/centos_wildfly_swarm       CentOS, WildFly, Swarm                           0
eclipse/centos_nodejs              CentOS based nodejs4 stack                       0
dockette/centos                    My Custom CentOS Dockerfiles                     1

二、拉取映象並執行容器

1.拉取指定的版本,這裡我用的是官方映象的centos7指定版本,除了指定釋出源,還可以透過tag指定歷史版本,不指定預設是latest

docker pull centos:centos7.9.2009

2.等待拉取完之後,透過docker images命令可以檢視到已經存在相應的映象了

PS D:\learning\CentOS7> docker images
REPOSITORY   TAG              IMAGE ID       CREATED       SIZE
centos       centos7.9.2009   eeb6ee3f44bd   2 years ago   204MB

3.啟動一個docker容器並執行image

docker run -itd --name centos-container -p 1022:22 centos:centos7.9.2009

-itd實際是-i:以互動模式執行容器。通常與-t 同時使用。這允許與容器進行互動,例如在容器內執行命令或檢視輸出。-t為容器重新分配一個偽輸入終端。通常與-i同時使用。-d後臺執行容器,並返回容器 ID。使用此引數時,容器會在後臺執行,不會阻塞終端。但要注意,如果容器內的主命令在後臺執行,容器會立即停止。解決方法是透過 -i-t-d 提供一個偽終端,或者將 tail -f /dev/null 新增到命令中,以保持容器執行。-p 1022:22指定將宿主機的1022埠對映到容器的22埠,22埠是遠端ssh連線使用的埠。

4.進入容器內部

docker exec -it centos-container /bin/bash

執行後發現,我們似乎以root許可權登入進了Linux終端,但注意,這裡的root使用者不是真正具有root許可權,這應該是處於容器安全考慮,防止容器中以root許可權執行的某些操作影響宿主機,實際操作中也應該避免使用root許可權。

比如用下面命令檢視防火牆服務狀態,會發現沒有許可權(Desktop-Bus沒有啟動)

[root@00f003f51d2f /]# systemctl status firewalld
Failed to get D-Bus connection: Operation not permitted

三、設定ssh遠端連線

1.為了初期設定centos的ssh連線,執行下列命令退出容器並關閉,然後追加--privileged引數使我們進入容器後有root許可權。

# 退出容器內部
exit
# 停止容器
docker stop centos-container
# 刪除容器
docker rm centos-container
# 重新以特權模式啟動一個容器執行映象--privileged會賦予容器完全的特權,並設定entrypoint為/usr/sbin/init
docker run -itd --name centos-container -p 1022:22 --privileged=true centos:centos7.9.2009 /usr/sbin/init
# 進入容器內部
docker exec -it centos-container /bin/bash

2.安裝ssh服務並重啟

yum install net-tools.x86_64 -y
yum install -y openssh-server
systemctl restart sshd

3.設定root使用者密碼

[root@2a792e360945 /]# passwd
Changing password for user root.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

4.使用ssh客戶端登入

相關文章