ubuntu 18.04 裏面沒有 rc.local ubuntu 18.04 容器中沒有 systemctl,只有 service ubuntu 18.04 想要設置 sshd 開機啓動,折騰了很多時間也沒有成功 ubuntu 18.04 想要設置開機啓動不是不能夠,實在好睏難!等之後熟練以後再來處理! 本次學習簡化 ssh 鏈接,容許 root 登陸,不使用 PAM 忽略防火牆設置
docker run -itd -p 10023:22 --name ubuntu-ssh rastasheep/ubuntu-sshd /bin/bash 這個是 18.04,沒有自動啓動 sshd sudo docker run -d -p 10022:22 rastasheep/ubuntu-sshd:16.04 這個是 16.04 ,自動啓動了 sshd
http://blog.51cto.com/12943999/2087906docker
docker pull ubuntu docker run -itd --name ubuntu ubuntu /bin/bash
docker exec -it ubuntu bash 確認 sshd 服務是否開啓 ps -ef |grep ssh 沒有 sshd 安裝 openssh-server apt update apt install vim apt install openssh-server 確認安裝包 dpkg -l |grep ssh ii openssh-client 1:7.6p1-4ubuntu0.1 amd64 secure shell (SSH) client, for secure access to remote machines ii openssh-server 1:7.6p1-4ubuntu0.1 amd64 secure shell (SSH) server, for secure access from remote machines ii openssh-sftp-server 1:7.6p1-4ubuntu0.1 amd64 secure shell (SSH) sftp server module, for SFTP access from remote machines ii ssh-import-id 5.7-0ubuntu1.1 all securely retrieve an SSH public key and install it locally 確認 sshd 位置,一下子執行 sshd 服務可能用到 which sshd /usr/sbin/sshd 修改 sshd 配置 vim /etc/ssh/sshd_config 增長一行 PermitRootLogin yes 修改一處 UsePAM no 開啓 sshd 服務 systemctl restart sshd System has not been booted with systemd as init system (PID 1). Can't operate. ** 沒有 systemctl 換一個方式啓動服務 service ssh start ** 若是還不支持,直接進入 sshd 目錄去執行 /usr/sbin/sshd 再次確認 sshd 服務是否開啓 ps -ef |grep ssh root 4006 1 0 02:38 ? 00:00:00 /usr/sbin/sshd root 4199 10 0 02:56 pts/1 00:00:00 grep --color=auto ssh ** 如今能夠從宿主機 ssh 到 Docker 容器了! ** exit 退出容器,或者再打開一個 Terminal ,ssh到宿主機 192.168.1.192
docker inspect ubuntu-ssh ... "Gateway": "172.17.0.1", "IPAddress": "172.17.0.3", ... ssh root@172.17.0.2 ** 若是報錯 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! vim /home/dhbm/.ssh/known_hosts,刪除以前的 ssh 記錄以後從新 ssh 鏈接 仍是出現錯誤! The authenticity of host '172.17.0.2 (172.17.0.2)' can't be established. ECDSA key fingerprint is SHA256:DLhQdo4eKOPNmpKIyR5VUFhsNiTdXqqe6+Omiu7c+uY. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '172.17.0.2' (ECDSA) to the list of known hosts. root@172.17.0.2's password: Permission denied, please try again. root@172.17.0.2's password: Permission denied, please try again. root@172.17.0.2's password: ** 必須重設密碼! ubuntu 18.04 沒有設置 root 密碼! 回到前一個已經進入 容器的 Terminalm,設置 root 密碼 ** 若是剛纔是 exit 退出了容器,再次 docker exec -it ubuntu bash 進入容器 passwd root
ok!可是,ip,ifconfig ,ping 都沒有 安裝這幾個基本的工具 apt-get install net-tools apt-get install iputils-ping apt-get install iproute2
docker commit -a "wzh.2019" -m "message 20190107 ssh docker" ubuntu ubuntu-ssh:v1 sha256:5638786e4005b4a1c743e2b5edcbc651c6342efbd80fa07b46e6febfe0d9d81b
docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu-ssh v1 5638786e4005 About a minute ago 264MB ...
docker run -itd -p 10022:22 --name ubuntu-ssh2 ubuntu-ssh:v1 /bin/bash 06621aed44e0987fb7ccd69e1900630ebbe97d50de7dd22537ba359c76ded411
docker inspect ubuntu-ssh2 ... "Gateway": "172.17.0.1", "IPAddress": "172.17.0.3", ... 從宿主機測試 ssh,悲劇了!仍是不行! ssh root@172.17.0.3 ssh: connect to host 172.17.0.3 port 22: Connection refused 進入容器看看! docker exec -it ubuntu-ssh2 bash 檢查 sshd 服務,仍是沒有! 哪裏不對呢 docker stop ubuntu-ssh2 和 docker stop ubuntu-ssh2 來回從新啓動,也是枉然! ** 結論:ubuntu-ssh2 容器啓動時,沒有自動開啓 sshd ** 簡單紀錄一下個人嘗試 打開/etc/rc.local文件,在exit 0語句前加入: vim /etc/rc.local 加入 /etc/init.d/ssh start; 或者 /usr/sbin/sshd 結論:ubuntu 18.04 容器 死活就不自動啓動 sshd ! 網上找了幾個都是關於 Centos 7 容器的 在docker run 的時候運行/usr/sbin/init https://blog.csdn.net/u012814856/article/details/80493760 https://blog.csdn.net/cxin917/article/details/79410984 centos 容器的 init 在 /usr/sbin/init 個人 ubuntu 18.04 容器裏面找找 init which init /sbin/init docker run -itd --name ubuntu-ssh --privileged ubuntu-ssh:v3 /sbin/init 第一次 run 以後,哈哈哈!立刻檢查 sshd 服務,確實有了! 後來關機以後,從新 docker stop ubuntu-ssh3 ,又沒有了!白高興了! 結論: ubuntu 18.04 容器的init 只在第一次建立的時候會執行init 後續在 start 時,再也不執行 init (我的猜想,沒有仔細去分析) 只有在 run 的時候,直接讓他執行shell,啓動 sshd 重複以上過程,到 commit 只一步
進入到以前的 ubuntu 基礎容器 (前面已經安裝過 sshd 的) docker exec -it ubuntu bash 創建一個 start.sh 文件,加入一條 shell 命令 vim start.sh #!/bin/bash # by wzh 20190108 /usr/sbin/sshd -D root@20fca9c46e82:/# ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv start.sh sys tmp usr var
docker commit -a "wzh.2019" -m "message 20190108 ssh docker by start.sh " 20fca9c46e82 ubuntu1804-ssh:v1 新建一個容器,名字 ubuntu1804-ssh,端口 10024 docker run -itd -p 10024:22 --name ubuntu1804-ssh ubuntu1804-ssh:v1 /run.sh 檢查確認 docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 87d09b047e4c ubuntu1804-ssh:v1 "/start.sh" 29 hours ago Exited (137) 22 hours ago ubuntu1804-ssh ```
docker inspect ubuntu-ssh2 ... "Gateway": "172.17.0.1", "IPAddress": "172.17.0.4", ... ssh root@172.17.0.4 ok !
從個人工做電腦仔打開一個 Terminal ssh -p 10024 root@192.168.1.192 ok!