docker國內鏡像庫推薦「docker鏡像是什麼」

有些時候需要多台機器去測試腳本,利用傳統的虛擬機技術,不僅開銷大,而且一台物理機虛擬出的機器是有限的。採用Docker技術不僅開銷小,而且虛擬出的主機比利用虛擬機虛擬的更多。

Docker實戰:通過兩種方式構建鏡像方式

今天通過兩種為容器添加SSH服務並保存為鏡像的方式。

docker commit

commit命令,支持用戶提交自己對容器的修改,從而生成一個新的鏡像。

1、啟動基礎鏡像

[root@izt4nh30l604g7q40vzsglz /]# docker run -it centos:7

-i 以交互模式運行容器,通常與 -t 同時使用;

-t 為容器重新分配一個偽輸入終端,通常與 -i 同時使用;

2、容器中安裝openssh-server net-tools

[root@462b591af4a6 /]# yum install -y openssh-server net-tools

3、修改root用戶密碼

[root@462b591af4a6 /]# echo '123123456' | passwd --stdin root

4、生成密鑰

[root@462b591af4a6 /]# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
[root@462b591af4a6 /]# ssh-keygen -t rsa -f /etc/ssh/ssh_host_ecdsa_key
[root@462b591af4a6 /]# ssh-keygen -t rsa -f /etc/ssh/ssh_host_ed25519_key

7、編寫啟動腳本

[root@462b591af4a6 /]# vi /run.sh
[root@462b591af4a6 /]# chmod +x /run.sh 

其中 run.sh的內容為

#!/bin/bash
/usr/sbin/sshd -D

8、退出容器,保存鏡像

[root@462b591af4a6 /]# exit
[root@462b591af4a6 /]# docker ps -al 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
46d6949f23b3        centos              "/bin/bash"         11 minutes ago      Exited (0) 47 seconds ago                       practical_kilby
​
[root@462b591af4a6 /]#docker commit -m 'openssh-server'  46d6949f23b3  sshd:centos7
sha256:fa665548b8186c9b656a145ff9beaae1847d183dd405eba25888066e85ca10fc

9、啟動容器

[root@izt4nh30l604g7q40vzsglz ~]#  docker run -d --name ssh -p 10022:22 sshd:centos /run.sh
334c4330a56bfe5d9e87c35747ef604da60c5aa84fdae427ca30bbdab2592d37
[root@izt4nh30l604g7q40vzsglz ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                   NAMES
334c4330a56b        sshd:centos7         "/run.sh"           55 seconds ago      Up 54 seconds       0.0.0.0:10022->22/tcp   ssh

10、遠程連接測試

[root@izt4nh30l604g7q40vzsglz ~]# ssh root@192.168.0.3 -p 10022
The authenticity of host '[192.168.0.3]:10022 ([192.168.0.3]:10022)' can't be established.
RSA key fingerprint is e1:95:09:40:48:8e:13:94:ca:73:15:e7:7b:37:2d:6c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[192.168.0.3]:10022' (RSA) to the list of known hosts.
root@192.168.0.3's password: 
[root@334c4330a56b ~]# logout
Connection to 192.168.0.3 closed.

Dockerfile

使用docker commit 手動構建一個新的鏡像,雖然步驟清晰,但是鏡像分發起來比較不方便。Dockerfile 就是最優替代方案。

1、創建Dockerfile文件。

[root@izt4nh30l604g7q40vzsglz home]# cat Dockerfile 
FROM centos:7
MAINTAINER 972479352@qq.com
ENV ROOTPASSWORD  123456
RUN yum install -y openssh-server net-tools
    && ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key 
    && ssh-keygen -t rsa -f /etc/ssh/ssh_host_ecdsa_key 
    && ssh-keygen -t rsa -f /etc/ssh/ssh_host_ed25519_key 
    && echo $ROOTPASSWORD | passwd --stdin root 
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"]

2、構建鏡像文件

[root@izt4nh30l604g7q40vzsglz home]# docker build -t sshd:dockerfile .
[root@izt4nh30l604g7q40vzsglz home]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
sshd                dockerfile          c619f06bde24        3 minutes ago       313MB
sshd                centos7             2f4be89a1626        5 hours ago         313MB
centos              7                   5e35e350aded        3 months ago        203MB
mysql               5.7.17              9546ca122d3a        2 years ago         407MB
[root@izt4nh30l604g7q40vzsglz home]# 

3、啟動容器

[root@izt4nh30l604g7q40vzsglz home]# docker run  -d  -e ROOTPASSWORD='09876543' -p 10023:22 sshd:dockerfile

-e 為環境變量賦值

-d 後台運行容器,並返回容器ID;

-p 指定端口映射,格式為:主機(宿主)端口:容器端口

Dockerfile遇到的問題

【Q1】沒有解決在啟動容器時通過環境變量賦值的方式,動態設置root密碼

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/256112.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-15 12:33
下一篇 2024-12-15 12:33

相關推薦

發表回復

登錄後才能評論