Docker安装、练习与使用
docker优点:快速部署整套环境和通过集成搭建复杂环境
centos7※安装docker
[root@SHELL2 ~]# yum -y install docker
[root@SHELL2 ~]#systemctl start docker.service
开机自启
[root@SHELL2 ~]# systemctl enable docker.service
[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
[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
[root@SHELL2 ~]# docker-machine version
[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
[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
[root@SHELL2 ~]# /sbin/vboxconfig
[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
[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 ‘’
[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
[root@a61f4d491c73 /]# systemctl enable sshd
[root@a61f4d491c73 /]# passwd root
[root@a61f4d491c73 /]# exit
由容器(ID:a61)生成新的镜像(名为centos-ssh)
[root@SHELL2 ~]# docker commit a61 centos-ssh
[root@SHELL2 ~]# docker images
[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 ~]#
[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 ~]#
[root@SHELL2 ~]# docker commit 3cd centos-hadoop
[root@SHELL2 ~]# docker run -ti centos-hadoop /usr/sbin/sshd -D
[root@SHELL2 ~]# docker run -ti centos-hadoop /usr/sbin/sshd -D
[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
[root@SHELL2 ~]# systemctl daemon-reload
重新启动docker服务(正在运行的docker容器会退出)
[root@SHELL2 ~]# systemctl restart docker
[root@SHELL2 ~]# ps -ef|grep docker
注:因本地测试环境为虚拟机,所以外网远程连接功能尚未测试