什么是Docker?
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
为什么要使用Docker?
1、无论是安装应用、搭建环境,还是部署应用,都十分的方便灵活
2、节省资源开销。
3、灵活迁移你开发的应用程序
如何安装Docker?
1、配置docker阿里云yum源 (直接执行下面的命令即可)
cat >>/etc/yum.repos.d/docker.repo<<EOF
[docker-ce-edge]
name=Docker CE Edge - \$basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/\$basearch/edge
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
EOF
2、yum方式安装docker
# yum安装
yum -y install docker-ce
### 查看docker版本
docker --version
### 启动docker
systemctl enable docker
systemctl start docker
Docker拉取Ubuntu镜像
#拉取ubuntu官方镜像
docker pull ubuntu
#制作容器
docker run -it -d -p 10122:22 --name hadoop_master ubuntu /bin/bash -D
(注意,如果使用ubuntu的话,是没有自带ssh的,需要重新安装,然后制作成镜像后,然按下面的做成容器)
docker run -it -d -p 10222:22 --name hadoop_3 moxi/ubuntu_ssh /usr/sbin/sshd -D
(使用上方 /usr/sbin/sshd,表示开机自动启动sshd脚本)
#将宿主机的hosts文件写入到容器中
docker run -d -h hadoop_master --name hadoop_master -p 10022:22 -p 50070:50070 $(cat /opt/software/hosts|awk -F ' ' '{if(NR>=0){print "--add-host "$2":"$1}}') moxi/ubuntu_hadoop
docker run -d -h hadoop_salve01 --name hadoop_salve01 -p 10122:22 $(cat /opt/software/hosts|awk -F ' ' '{if(NR>=0){print "--add-host "$2":"$1}}') moxi/ubuntu_hadoop
docker run -d -h hadoop_salve02 --name hadoop_salve02 -p 10222:22 $(cat /opt/software/hosts|awk -F ' ' '{if(NR>=0){print "--add-host "$2":"$1}}') moxi/ubuntu_hadoop
#进入容器
docker exec -it hadoop_master /bin/bash (注:/bin/bash指进入容器时,执行的命令)
制作CentOS容器
# 制作master
docker run --privileged -it -d --name master -h master -p 10022:22 -p 50070:50070 $(cat /opt/software/hosts|awk -F ' ' '{if(NR>=0){print "--add-host "$2":"$1}}') moxi/centos_hadoop /usr/sbin/init
# 制作slaver101
docker run --privileged -it -d --name slave101 -h slave101 -p 10122:22 $(cat /opt/software/hosts|awk -F ' ' '{if(NR>=0){print "--add-host "$2":"$1}}') moxi/centos_hadoop /usr/sbin/init
# 制作slaver102
docker run --privileged -it -d --name slave102 -h slave102 -p 10222:22 $(cat /opt/software/hosts|awk -F ' ' '{if(NR>=0){print "--add-host "$2":"$1}}') moxi/centos_hadoop /usr/sbin/init
### 注意最后最佳 /usr/sbin/init 是为了能够启动systemctl在容器中
制作蘑菇博客容器
docker run --privileged -d -it -h mogu_blog_2 --name mogu_blog_2 -p 11122:22 -p 15672:15672 -p 5672:5672 -p 8600:8600 -p 9527:9527 -p 9528:9528 -p 6379:6379 -p 3306:3306 -p 80:80 -p 8080:8080 -v /etc/localtime:/etc/localtime:ro moxi/mogu_blog_20191012 /usr/sbin/init
宿主机 /opt/software/hosts 文件
172.17.0.2 master
172.17.0.3 slave101
172.17.0.4 slave102
172.17.0.5 slave103
172.17.0.6 slave104
172.17.0.7 slave105
Ubuntu安装SSH
1、更新镜像源
# 更新apt源(注意:不更新有可能会出现安装错误)
apt-get update
# 安装SSH
apt-get install ssh -y
2、配置允许root用户远程访问
# 打开配置文件
vim /etc/ssh/sshd_config
将 PermitRootLogin后面的值,改成yes,如下图所示
保存退出后,重启SSH服务
# ubuntu用户
service ssh restart
# centos用户
systemctl restart sshd.service
通过 XShell即可进行远程登录
如果登录不了的话,那么我们需要开发宿主机对应的端口号,我的宿主机是centos,所以使用下面命令关闭防火墙
#关闭防火墙
systemctl stop firewalld.service
#开机禁用防火墙
systemctl disable firewalld.service
Docker将镜像提交到Dockerhub
1、什么是dockerhub
dockerhub就类似于github,是一个镜像托管网站
2、如何上传镜像
#首先将容器制作成相应的镜像
docker commit 0c27a8e124eb moxi/ubuntu_ssh
#通过docker login输入相应的账号密码(没有账号需要先注册 https://hub.docker.com/)
docker login
#登录成功后,通过push提交镜像
docker pull moxi/ubuntu_ssh
Docker的常用命令
#查看所有容器
docker ps -a
#关闭容器
docker stop 容器名
#启动容器
docker start 容器名
#删除容器(必须先关闭容器后才能删除)
docker rm 容器名
#查看所有镜像
docker images
#删除镜像
docker rmi 镜像ID