Docker使用Dockerfile創(chuàng)建支持ssh服務(wù)自啟動(dòng)的容器鏡像
本文實(shí)例為大家分享了Dockerfile創(chuàng)建支持ssh服務(wù)自啟動(dòng)的容器鏡像,供大家參考,具體內(nèi)容如下
1. 首先創(chuàng)建一個(gè)Dockerfile文件,文件內(nèi)容如下
# 選擇一個(gè)已有的os鏡像作為基礎(chǔ) FROM centos:centos6 # 鏡像的作者 MAINTAINER Fanbin Kong "kongxx@hotmail.com" # 安裝openssh-server和sudo軟件包,并且將sshd的UsePAM參數(shù)設(shè)置成no RUN yum install -y openssh-server sudo RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config # 添加測(cè)試用戶admin,密碼admin,并且將此用戶添加到sudoers里 RUN useradd admin RUN echo "admin:admin" | chpasswd RUN echo "admin ALL=(ALL) ALL" >> /etc/sudoers # 下面這兩句比較特殊,在centos6上必須要有,否則創(chuàng)建出來(lái)的容器sshd不能登錄 RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key # 啟動(dòng)sshd服務(wù)并且暴露22端口 RUN mkdir /var/run/sshd EXPOSE 22 CMD ["/usr/sbin/sshd", "-D"]
Dockerfile文件有自己的語(yǔ)法和命令,具體可以參考Docker的官方文檔。
2. 有了Dockerfile文件以后,就可以根據(jù)Dockerfile來(lái)創(chuàng)建image文件了,在Dockerfile所在的目錄下,運(yùn)行下面的命令
sudo docker build -t centos6-ssh .
命令成功后,就會(huì)創(chuàng)建一個(gè)名字為centos6-ssh的image,可以使用“sudo docker images”來(lái)查看。
3. 此時(shí)就可以根據(jù)上面創(chuàng)建出來(lái)的image文件來(lái)創(chuàng)建自己的容器了,下面的命令會(huì)創(chuàng)建一個(gè)名字為“mytest”的容器。
sudo docker run -d -P --name=mytest centos6-ssh
4. 有了容器,就可以測(cè)試我們的ssh服務(wù)了。
4.1 運(yùn)行“sudo docker inspect mytest”,查看當(dāng)前啟動(dòng)容器IP地址,然后運(yùn)行下面的命令來(lái)測(cè)試
ssh admin@<容器IP>
4.2 另外,也可以通過(guò)docker的端口映射來(lái)訪問(wèn), 使用“sudo docker port mytest 22”查看當(dāng)前容器的22端口對(duì)應(yīng)的宿主機(jī)器的端口,然后通過(guò)下面的命令來(lái)訪問(wèn)
ssh admin@<宿主機(jī)器IP> -p <宿主機(jī)器端口>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
如何解決IDEA無(wú)法連接docker中的數(shù)據(jù)庫(kù)的問(wèn)題
這篇文章主要介紹了如何解決IDEA無(wú)法連接docker中的數(shù)據(jù)庫(kù)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
docker啟動(dòng)mysql及-e MYSQL_ROOT_PASSWORD=my-secret-pw問(wèn)題解決
本文主要介紹了docker啟動(dòng)mysql及-e MYSQL_ROOT_PASSWORD=my-secret-pw問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
解決Docker之mysql容器數(shù)據(jù)庫(kù)更改不生效的問(wèn)題
這篇文章主要介紹了解決Docker之mysql容器數(shù)據(jù)庫(kù)更改不生效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11
docker鏡像拉取過(guò)程和遠(yuǎn)程代理配置過(guò)程
Docker鏡像拉取過(guò)程涉及客戶端、守護(hù)進(jìn)程、注冊(cè)表和網(wǎng)絡(luò)通信,客戶端發(fā)送請(qǐng)求,守護(hù)進(jìn)程處理并從注冊(cè)表下載鏡像層,配置包括Docker守護(hù)進(jìn)程的代理、TLS設(shè)置和防火墻規(guī)則,確保網(wǎng)絡(luò)策略和安全措施到位,以優(yōu)化鏡像拉取和保護(hù)傳輸過(guò)程2024-11-11
Docker的安裝以及更換倉(cāng)庫(kù)源詳細(xì)圖文教程
Docker是一個(gè)開(kāi)源的應(yīng)用容器引擎,它允許開(kāi)發(fā)者打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,下面這篇文章主要給大家介紹了關(guān)于Docker的安裝以及更換倉(cāng)庫(kù)源的相關(guān)資料,需要的朋友可以參考下2024-07-07
解讀Dockerfile中CMD和ENTRYPOINT是否可以混著用
在Dockerfile中,CMD和ENTRYPOINT可以混著用,CMD指定默認(rèn)命令,ENTRYPOINT指定啟動(dòng)命令,CMD可以被docker run命令的參數(shù)覆蓋2025-03-03
Docker啟動(dòng)RabbitMQ實(shí)現(xiàn)生產(chǎn)者與消費(fèi)者的詳細(xì)過(guò)程
這篇文章主要介紹了Docker啟動(dòng)RabbitMQ,實(shí)現(xiàn)生產(chǎn)者與消費(fèi)者,通過(guò)Docker拉取鏡像并啟動(dòng)RabbitMQ,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-02-02

