一、從遠端倉庫查詢需要的映象
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客戶端登入