Docker安裝、練習與使用

Docker安裝、練習與使用

docker的三個主要概念:

鏡像:系統的只讀模板(Image格式)

容器:鏡像的運行實例(多一個可寫層)

倉庫:管理鏡像(分公有和私有)

docker優點:快速部署整套環境和通過集成搭建複雜環境

centos7※安裝docker

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

啓動docker

[root@SHELL2 ~]#systemctl start docker.service

開機自啓

[root@SHELL2 ~]# systemctl enable docker.service

查看docker版本

[root@SHELL2 ~]# docker version

docker操作練習

下載鏡像

[root@SHELL2 ~]# docker pull centos

查看鏡像

[root@SHELL2 ~]# docker images

創建容器

[root@SHELL2 ~]# docker run -it —name=test-centos docker.io/centos:latest /bin/bash

登出容器(若無運行的服務則容器會自動退出)

[root@a61f4d491c73 /]# exit

查看已退出的容器

[root@SHELL2 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a61f4d491c73 docker.io/centos:latest “/bin/bash” About an hour ago Up About a minute test-centos1

開啓容器(a61爲ID:a61f4d491c73的簡寫,輸入的ID確定容器唯一即可)

[root@SHELL2 ~]# docker start a61

//進入容器(非生產環境)

//[root@SHELL2 ~]# docker attach a61

進入容器(生產環境)

[root@SHELL2 ~]# docker exec -it a61 /bin/bash

查看容器ip

[root@a61f4d491c73 /]# cat /etc/hosts

登出容器(自動退出)

[root@a61f4d491c73 /]# exit

docker集羣管理工具docker-machine(未完)

安裝wget功能(爲了下載文件,也可通過下述網址在windows瀏覽器上下載好拷貝到linux中)

[root@SHELL2 ~]# yum -y install wget

下載二進制docker集羣管理工具並重命名爲docker-machine並添加到PATH環境變量(這裏爲方便直接添加到了$JAVA_HOME/bin下面……)

[root@SHELL2 ~]# wget -O $JAVA_HOME/bin/docker-machine https://github.com/docker/machine/releases/download/v0.16.0/docker-machine-Linux-x86_64

賦予可執行權限

[root@SHELL2 ~]# chmod +x docker-machine

查看docker-machine版本

[root@SHELL2 ~]# docker-machine version

下載virtualbox驅動

[root@SHELL2 ~]# wget http://download.virtualbox.org/virtualbox/rpm/rhel/7/x86_64/VirtualBox-5.1-5.1.20_114628_el7-1.x86_64.rpm

安裝virtualbox驅動

[root@SHELL2 ~]# yum -y install VirtualBox-5.1-5.1.20_114628_el7-1.x86_64.rpm

嘗試啓動

[root@SHELL2 ~]# /sbin/vboxconfig
Running the following commands should set the system up correctly:
yum install gcc make
yum install kernel-devel-3.10.0-862.el7.x86_64

按提示安裝缺少的依賴

[root@SHELL2 ~]# yum -y install gcc make
[root@SHELL2 ~]# yum -y install kernel-devel-3.10.0-862.el7.x86_64

啓動virtualbox

[root@SHELL2 ~]# /sbin/vboxconfig

用集羣管理工具創建docker

[root@SHELL2 ~]# docker-machine create —d virtualbox test
Error with pre-create check: “This computer doesn’t have VT-X/AMD-v enabled. Enabling it in the BIOS is mandatory”
提示需要在開機時進入BIOS,找到 Intel Virtualization Technology這個配置,設置爲enabled,此功能先放着吧…

應用:

1、配置外網xshell連接訪問虛擬機中docker的22端口(虛擬機)

啓動容器

[root@SHELL2 ~]# docker exec -it a61 /bin/bash

安裝ssh服務

[root@a61f4d491c73 /]# yum -y install openssh-server

生成私鑰

[root@a61f4d491c73 /]# ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ‘’
[root@a61f4d491c73 /]# ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ‘’
[root@a61f4d491c73 /]# ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ‘’

修改sshd的配置文件

[root@a61f4d491c73 /]# sed -i “s/#UsePrivilegeSeparation./UsePrivilegeSeparation no/g” /etc/ssh/sshd_config
[root@a61f4d491c73 /]# sed -i “s/UsePAM.
/UsePAM no/g” /etc/ssh/sshd_config

設置ssh服務開機自啓

[root@a61f4d491c73 /]# systemctl enable sshd

設置root密碼

[root@a61f4d491c73 /]# passwd root
[root@a61f4d491c73 /]# exit

由容器(ID:a61)生成新的鏡像(名爲centos-ssh)

[root@SHELL2 ~]# docker commit a61 centos-ssh

查看鏡像列表

[root@SHELL2 ~]# docker images

刪除之前開啓的容器(ID:a61)

[root@SHELL2 ~]# docker rm -f a61

由鏡像centos-ssh後臺(-d)啓動新的容器,指定容器的22端口爲外部的10022端口(-p 10022:22),並重啓ssh服務(/usr/sbin/sshd -D)

[root@SHELL2 ~]# docker run -d -p 10022:22 centos-ssh /usr/sbin/sshd -D

打開xshell或winscp等連接22端口的軟件,連接配置中ip爲linux主機ip,端口爲10022(啓動容器時所配置的22端口),可連接到docker命令交互界面

[root@3cdffad519c8 ~]#

或在原xshell界面直接ssh進入docker

[root@SHELL2 ~]# ssh [email protected].2
[email protected].2’s password:
Last login: Fri Nov 30 02:05:00 2018 from 172.17.0.1
[root@3cdffad519c8 ~]#

2、搭建hadoop集羣(虛擬機&服務器)

繼續使用剛剛創建的容器

配置好jdk,安裝配置單節點的hadoop

配置環境變量並生效

打開新的xshell連接

生成新的鏡像(3cd爲新容器ID簡寫)

[root@SHELL2 ~]# docker commit 3cd centos-hadoop

運行兩個鏡像容器

[root@SHELL2 ~]# docker run -ti centos-hadoop /usr/sbin/sshd -D

再打開一個xshell連接

[root@SHELL2 ~]# docker run -ti centos-hadoop /usr/sbin/sshd -D

分別輸入hostname查看主機名

修改三個docker的hosts文件和slaves文件

配置三個docker的免密登陸

主節點上執行namenode格式化並啓動集羣

各節點jps查看進程

3、配置docker遠程訪問(服務器)

修改docker配置文件

[root@SHELL2 ~]# sed ‘/Install/i\ExecStart=’ /usr/lib/systemd/system/docker.service
[root@SHELL2 ~]# sed ‘/Install/i\ExecStart=\/usr\/bin\/dockerd -H tcp:\/\/0.0.0.0:2375 -H unix:\/\/var\/run\/docker.sock’ /usr/lib/systemd/system/docker.service

docker重新讀取配置文件

[root@SHELL2 ~]# systemctl daemon-reload

重新啓動docker服務(正在運行的docker容器會退出)

[root@SHELL2 ~]# systemctl restart docker

查看端口

[root@SHELL2 ~]# ps -ef|grep docker

注:因本地測試環境爲虛擬機,所以外網遠程連接功能尚未測試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章