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
注:因本地測試環境爲虛擬機,所以外網遠程連接功能尚未測試