日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

宿主机-免密登录Docker容器

發布時間:2024/6/21 综合教程 31 生活家
生活随笔 收集整理的這篇文章主要介紹了 宿主机-免密登录Docker容器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CentOS7 安裝Docker

討論QQ:1586558083

目錄

一、檢查系統內核
二、安裝Docker

2.1 安裝
2.2 查看docker版本
2.3 啟動docker

三、建立docker用戶和組

3.1 創建用戶及組
3.2 使用新創建的用戶運行helloworld
3.3 解決報錯

四、安裝centos鏡像

4.1 下載鏡像
4.2 查看擁有的鏡像
4.3 運行容器
4.4 在容器中運行命令
4.5 查看鏡像、容器、數據卷所占用的空間
4.6 容器退出再次進入報錯

五、運行容器

5.1 使用命令運行容器
六、剛安裝的系統非常純凈,需要安裝必備的軟件
6.1 安裝vim
6.2 升級及安裝sshd
6.3 修改root密碼
6.4 宿主機能登錄本機(容器中的主機)
6.5 配置ssh無密碼登錄

七、上傳軟件到容器里面
八、保存鏡像

正文

回到頂部

一、檢查系統內核

Docker 要求 CentOS 系統的內核版本高于 3.10 ,查看本頁面的前提條件來驗證你的CentOS 版本是否支持 Docker 。

通過uname -r命令查看你當前的內核版本

[root@bigdata ~]# uname -r

回到頂部

二、安裝Docker

2.1 安裝

Docker 軟件包和依賴包已經包含在默認的 CentOS-Extras 軟件源里,安裝命令如下:

[root@bigdata ~]# yum -y install docker

2.2 查看docker版本

[root@bigdata ~]# docker version

2.3 啟動docker

方式一:

[root@bigdata ~]# service docker start
Redirecting to /bin/systemctl start docker.service
[root@bigdata ~]# 

方式二:

[root@bigdata ~]# systemctl start docker.service
[root@bigdata ~]# ps aux | grep docker

回到頂部

三、建立docker用戶和組

3.1 創建用戶及組

默認情況下,docker 命令會使用 Unix socket 與 Docker 引擎通訊。而只有 root 用戶和 docker 組的用戶才可以訪問 Docker 引擎的 Unix socket。出于安全考慮,一般 Linux 系統上不會直接使用 root 用戶。因此,更好地做法是將需要使用 docker 的用戶加入 docker 用戶組。

[root@bigdata ~]# groupadd docker
[root@bigdata ~]# useradd -g docker docker

vim /etc/sudoers

把docker 加入sudoers里面

$sudo gpasswd -a ${USER} docker


cat /etc/group | grep ^docker

sudo systemctl restart docker

3.2 使用新創建的用戶運行helloworld

[docker@bigdata ~]$ docker run hello-world

[docker@bigdata ~]$ docker run hello-world
Unable to find image 'hello-world:latest' locally
Trying to pull repository docker.io/library/hello-world ... 
latest: Pulling from docker.io/library/hello-world
9bb5a5d4561a: Pulling fs layer 
/usr/bin/docker-current: error pulling image configuration: Get https://dseasb33srnrn.cloudfront.net/registry-v2/docker/registry/v2/blobs/sha256/e3/e38bc07ac18ee64e6d59cf2eafcdddf9cec2364dfe129fe0af75f1b0194e0c96/data?Expires=1525823399&Signature=SjqbSNVW5X~uDhy9jXvuLqv22jC3auyGRx4JCRE1ceXkdh0Qpsc21VmhIXwAO6XcxwyJ1gGNVQhnJWYozOWXjysL8taJFBCxKNqAD9Cy~TCt-iMi06z9dHX6-WxxIU3WJ4LbCT7RxsWIKArTVKmPvyQdD4Djkgr~rWzoL6eyTfg_&Key-Pair-Id=APKAJECH5M7VWIS5YZ6Q: net/http: TLS handshake timeout.
See '/usr/bin/docker-current run --help'.
[docker@bigdata ~]$ 

3.3 解決報錯

如上圖報錯/usr/bin/docker-current: error pulling image configuration。。。

出現這個問題,一般的原因是無法連接到 docker hub通過(使用root用戶執行以下命令):

[root@bigdata ~]# cat /etc/sysconfig/docker

在文件中添加以下內容:

--registry-mirror=http://f2d6cb40.m.daocloud.io

重啟docker

[root@bigdata ~]# service docker restart

再次運行helloworld(docker用戶)

[docker@bigdata ~]$ docker run hello-world

由于本地沒有hello-world這個鏡像,所以會下載一個hello-world的鏡像,并在容器內運行。

回到頂部

四、安裝centos鏡像

4.1 下載鏡像

從 Docker 鏡像倉庫獲取鏡像的命令是 docker pull。其命令格式為:

docker pull [選項] [Docker Registry 地址[:端口號]/]倉庫名[:標簽]  

可以直接使用docker pull centos:7命令安裝鏡像

[docker@bigdata ~]$ docker pull centos:7

4.2 查看擁有的鏡像

[docker@bigdata ~]$ docker image ls

一個是centos鏡像,另一個是我們之前使用dockerrunhello-world命令下載的鏡像。

鏡像(Image)和容器(Container)的關系,就像是面向對象程序設計中的 類 和 實例 一樣,鏡像是靜態的定義,容器是鏡像運行時的實體。容器可以被創建、啟動、停止、刪除、暫停等。

4.3 運行容器

有了鏡像后,我們就能夠以這個鏡像為基礎啟動并運行一個容器。

[docker@bigdata ~]$ docker run -it --rm centos bash

docker run 就是運行容器的命令,說明一下上面用到的參數。

-it:這是兩個參數,一個是 -i:交互式操作,一個是 -t 終端。我們這里打算進入 bash 執行一些命令并查看返回結果,因 此我們需要交互式終端。
--rm:這個參數是說容器退出后隨之將其刪除。默認情況下,為了排障需求,退出的容器并不會立即刪除,除非手動 docker rm。我們這里只是隨便執行個命令,看看結果,不需要排障和保留結果,因此使用 --rm 可以避免浪費空間。
centos:這是指用centos 鏡像為基礎來啟動容器。
bash:放在鏡像名后的是命令,這里我們希望有個交互式 Shell,因此用的是 bash。

4.4 在容器中運行命令

[root@cb55b5f51685 /]# cat /etc/os-release 

進入容器后,我們可以在 Shell 下操作,執行任何所需的命令。這里,我們執行了 cat /etc/os-release,這是 Linux 常用的查看當前系統版本的命令,從返回的結果可以看到容器內是 CentOS Linux 系統。
最后我們可以通過 exit 退出了這個容器。

4.5 查看鏡像、容器、數據卷所占用的空間

[docker@bigdata ~]$ docker system df

4.6 容器退出再次進入報錯

[docker@bigdata ~]$ docker run -it -v /home/docker/build:/root/build --privileged -h hadoop1 --name hadoop1 centos /bin/bash
/usr/bin/docker-current: Error response from daemon: Conflict. The container name "/hadoop1" is already in use by container a094bdef9e1cac62a17022e568fe9b1eb021e13adf8ed2624a71be5a2e42c618. You have to remove (or rename) that container to be able to reuse that name..
See '/usr/bin/docker-current run --help'.
[docker@bigdata ~]$ 

docker ps: 查看當前運行的容器
docker ps -a:查看所有容器,包括停止的。

標題含義:

CONTAINER ID:容器的唯一表示ID。
IMAGE:創建容器時使用的鏡像。
COMMAND:容器最后運行的命令。
CREATED:創建容器的時間。
STATUS:容器狀態。
PORTS:對外開放的端口。
NAMES:容器名。可以和容器ID一樣唯一標識容器,同一臺宿主機上不允許有同名容器存在,否則會沖突。

使用命令停止并刪除這個容器就可以

回到頂部

五、運行容器

5.1 使用命令運行容器

[docker@bigdata ~]$ docker run -it -v /home/docker/build:/root/build --privileged -h hadoop1 --name hadoop1 centos /bin/bash

以centos鏡像啟動一個容器,容器名是hadoop1,主機名是hadoop1,并且將基于容器的centos系統的/root/build目錄與本地/home/docker/build共享。

參數解釋:

-v 表示基于容器的centos系統的/root/build目錄與本地/home/hadoop/build共享;這可以很方便將本地文件上傳到Docker內部的centos系統;
-h指定主機名為hadoop1
–-name 指定容器名
/bin/bash 使用bash命令

六、剛安裝的系統非常純凈,需要安裝必備的軟件

6.1 安裝vim

[root@hadoop1 /]# yum install vim

6.2 升級及安裝sshd

6.2.1 安裝

[root@hadoop1 /]# yum -y update
[root@hadoop1 /]# yum -y install openssh-server
[root@hadoop1 /]# yum -y install openssh-clients

編輯sshd的配置文件/etc/ssh/sshd_config,將其中的UsePAM yes改為UsePAM no

[root@hadoop1 /]# vi /etc/ssh/sshd_config 

6.2.2 啟動

[root@hadoop1 /]# /usr/sbin/sshd -D

報錯如圖,解決方案為:創建公私密鑰,輸入命令后,直接按兩次enter鍵確認就行了

[root@hadoop1 /]# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key 

[root@hadoop1 /]# ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key

[root@hadoop1 /]# ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key

再次啟動SSH服務

[root@hadoop1 /]# yum -y install lsof
[root@hadoop1 /]# lsof -i:22

6.3 修改root密碼

[root@hadoop1 /]# passwd

測試

[root@hadoop1 /]# ssh localhost

上圖中可以看到已經登錄到本機了,也就說容器中的主機擁有了ssh遠程登錄其它主機的能力,當然你也可以登錄其他主機。要退出的話,輸入命令exit即可。

6.4 宿主機能登錄本機(容器中的主機)

[root@hadoop1 ~]# vi /etc/hosts

得到容器中的主機的ip地址172.17.0.2(可能和你得到的不一樣)

然后在宿主機中開啟一個新的終端輸入命令

[docker@bigdata ~]$ ssh root@172.17.0.2

6.5 配置ssh無密碼登錄

[root@hadoop1 ~]# ssh-keygen -t rsa

[root@hadoop1 ~]# cd .ssh/
[root@hadoop1 .ssh]# cat id_rsa.pub >> authorized_keys

輸入完后,這時再輸入命令

[root@hadoop1 .ssh]# ssh localhost

回到頂部

七、上傳軟件到容器里面

將JDK上傳到Linux系統,,然后將其移動到/home/docker/build文件夾下面,注意:這里需要使用root用戶

[root@bigdata docker]# mv jdk-8u73-linux-x64.tar.gz build/

進入容器里面的/root/build文件夾下面進行查看

[root@hadoop1 /]# cd /root/build/
[root@hadoop1 build]# ls

5.2.3 安裝JDK

在容器/root下面建一個apps文件夾

[root@hadoop1 ~]# mkdir apps

解壓JDK的安裝包到apps文件夾下面

[root@hadoop1 build]# tar -zxvf jdk-8u73-linux-x64.tar.gz -C /root/apps/

修改環境變量

[root@hadoop1 ~]# vi .bashrc
#JAVA
export JAVA_HOME=/root/apps/jdk1.8.0_73
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib 
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin 

保存使其立即生效

[root@hadoop1 ~]# source .bashrc

回到頂部

八、保存鏡像

基于已有的docker容器,做一新的dokcer image.

$ docker commit <container_id> <image_name>

另開一個窗口

舉例:

總結

以上是生活随笔為你收集整理的宿主机-免密登录Docker容器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。