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

注:因本地测试环境为虚拟机,所以外网远程连接功能尚未测试

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