1) Docker官网要求部署Docker引擎(虚拟化软件)的底层Host OS的Linux系统内核版本3.8+,最早期Windows操作系统不支持Docker虚拟化部署,新版的Windows系统可以支持Docker;
2) Docker虚拟化建议部署至Linux操作系统平台(稳定、高效、开源、免费的),生产环境推荐Linux内核版本3.10+,对应的Linux操作系统发行版:RHEL7.x和CentOS7.x;
3) 基于CentOS6.x(6.5+)部署Docker引擎服务,指令如下:
yum install docker-io lxc cgroup device-mapper* -y
rpm -qa|grep docker
service docker restart
ps -ef|grep docker
4) 基于CentOS7.x(7.0+)部署Docker引擎服务,指令如下:
yum install docker* -y
rpm -qa|grep docker
service docker restart
systemctl restart docker.service
ps -ef|grep docker
如果出错要更换yum源,阿里云的不行,要换清华源:
清华大学CentOS 镜像使用帮助
请注意,CentOS 8 (非 Stream 版)已提前进入 EOL 停止服务阶段,因此镜像已被官方移动。如果您正在寻找关于这些系统的镜像,请参考 centos-vault 的帮助。
该文件夹只提供 CentOS 7 与 8,架构仅为 x86_64 ,如果需要较早版本的 CentOS,请参考 centos-vault 的帮助,若需要其他架构,请参考 centos-altarch 的帮助。
建议先备份 /etc/yum.repos.d/ 内的文件。
然后编辑 /etc/yum.repos.d/ 中的相应文件,在 mirrorlist= 开头行前面加
以上步骤可以被下方的命令一步完成
sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://mirror.centos.org|baseurl=https://mirrors.tuna.tsinghua.edu.cn|g' \
-i.bak \
/etc/yum.repos.d/CentOS-*.repo
sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://mirror.centos.org/$contentdir|baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos|g' \
-i.bak \
/etc/yum.repos.d/CentOS-*.repo
注意其中的*通配符,如果只需要替换一些文件中的源,请自行增删。
注意,如果需要启用其中一些 repo,需要将其中的 enabled=0 改为 enabled=1。
最后,更新软件包缓存
sudo yum makecache
5) 如上步骤Docker引擎服务配置完毕,并且启动完成,如图所示:
6) Docker虚拟化属于C/S(Client/Server)模式,Server-Engine服务,Client-Docker命令工具,查看docker客户端和服务端版本号:docker version;
7) Docker虚拟化技术实施之前,了解三个概念:Docker镜像、Docker容器、Docker仓库;
Docker镜像
Docker镜像类似Linux ISO镜像文件,底层模板,镜像中存储的各种软件、程序、LIB库、依赖环境等,Docker镜像结构分层(层次)的结构,每一层存储不同的软件和功能,镜像是只读的,不能被修改;
Docker容器
Docker容器基于Docker镜像运行之后实体,Docker容器的底层是镜像,Docker容器所需文件、软件可以从镜像层中读取,没有镜像,就没有Docker容器,镜像是静止的,容器是活动的(进程和程序的关系);
Docker仓库
Docker仓库是用于存储Docker镜像文件的地方,仓库分为公共和私有仓库,企业生产环境推荐自建私有仓库(安全、稳定、速度快);
8) 如果通过Docker引擎运行Docker容器,首先从公共仓库下载Docker镜像,基于Docker镜像再启动容器(默认Docker引擎从Docker国外官网下载镜像文件);
docker images
docker search tomcat
docker search nginx
docker search redis
docker pull docker.io/tomcat
docker pull docker.io/nginx
docker pull docker.io/redis
Docker run -–privileged –name=yeng-web01 –itd –p 80:80 docker.io/tomcat:latest
Privileged是超级管理权限意思,--name改名
Docker exec –it id或名称 passwd root
直接执行命令改密码等
Cp /etc/skel/.bash* /root/
这样解决容器里面的centos机器名称问题老是显示bash-4.1
Docker history docker.io/nginx
查看镜像到底是怎么做的,可以看到一些初始密码之类的东西
docker run -itd docker.io/tomcat:latest
docker ps
docker inspect 0499058becea |grep -i ipaddr
wget 172.17.0.2:8080
docker run -p 8080:8080 -itd docker.io/tomcat:latest
http://47.98.151.187:8080/
1、Docker虚拟化技术实战一(容器和镜像概念)
Docker镜像
Docker镜像类似Linux ISO镜像文件,底层模板,镜像中存储的各种软件、程序、LIB库、依赖环境等,Docker镜像结构分层(层次)的结构,每一层存储不同的软件和功能,镜像是只读的,不能被修改;
容器系统:
基于底层镜像启动,并且在镜像最上层添加一层(容器层)读写层,容器层可以支持修改和读取的,对容器所有的写操作只作用于容器层,容器层需要的软件或者文件可以从镜像层去读取,没有镜像就不会有容器。(只写-容器层)
Docker容器
Docker容器基于Docker镜像运行之后实体,Docker容器的底层是镜像,Docker容器所需文件、软件可以从镜像层中读取,没有镜像,就没有Docker容器,镜像是静止的,容器是活动的(进程和程序的关系);
Docker仓库
Docker仓库是用于存储Docker镜像文件的地方,仓库分为公共和私有仓库,企业生产环境推荐自建私有仓库(安全、稳定、速度快);
2、Docker虚拟化技术实战二(容器和镜像实战)
1)Docker命令行指令实战:
docker images
docker rmi 6759d91a032b
docker ps
docker ps -a
docker exec -it 4f3a529813ce /bin/bash
docker stop 4f3a529813ce
docker start 4f3a529813ce
Docker rm 4f3a529813ce(-f强制删除运行中的容器);
for i in `docker ps|awk 'NR>=2 {print $1}'`;do docker rm -f $i ;done
docker ps -aq|xargs docker rm -f
docker rm -f `docker ps -aq`
docker rm -f $(docker ps -aq)
3、Docker虚拟化技术实战三(1台Nginx均衡2台Tomcat)
1) 基于一台物理机,部署1台Nginx均衡2台Tomcat,通过访问Host OS的80端口,能够访问Tomcat容器中的测试页面;
2) 基于Docker引擎启动3个Docker容器,首先下载Nginx和Tomcat镜像,下载的指令如下:
docker pull docker.io/nginx
docker pull docker.io/tomcat
3) 其中一个为Nginx容器,并且对外映射80:80端口规则,启动Nginx容器并且映射80端口的指令如下:
docker run -itd -p 80:80 docker.io/nginx:latest
docker ps -a
docker inspect 9ac1f1f9cdf4|grep -i ipaddr
4) 另外两台为Tomcat容器,启动Tomcat容器(无需映射端口)的指令如下:
docker run -itd docker.io/tomcat
docker run -itd docker.io/tomcat
5) 查看2台Tomcat容器的IP地址,并且记录IP地址;
docker inspect `docker ps -a|grep tomcat|awk '{print $1}'`|grep -i ipaddr|grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}"|sort|uniq
6) 配置Nginx均衡2台Tomcat,实现负载均衡+反向代理,操作方式如下:
docker exec -it 9ac1f1f9cdf4 /bin/bash
cd /etc/nginx/conf.d/
grep -vE "#|^$" default.conf
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
cat>default.conf<<EOF
upstream tomcat_web {
server 172.17.0.3:8080 weight=100 max_fails=2 fail_timeout=15;
server 172.17.0.4:8080 weight=100 max_fails=2 fail_timeout=15;
}
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
proxy_set_header Host \$host;
proxy_pass http://tomcat_web;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
EOF
sed -i 's/default.conf/\t/g' default.conf
nginx -t
nginx -s reload
for i in `seq 1 99`;do docker run -itd -p 80$i:80 docker.io/nginx;done
4、Docker虚拟化技术实战四(Docker启动CentOS容器)
1) 从Docker仓库下载CentOS6系统镜像;
docker pull docker.io/lemonbar/centos6-ssh
2) 基于CentOS6系统镜像启动CentOS6.x Docker容器,启动指令如下:(映射宿主机80和6022至容器中:80和22);
docker run -itd -p 80:80 -p 6022:22 docker.io/lemonbar/centos6-ssh:latest
3) 基于CentOS6.5容器部署各种软件、应用程序,部署方法跟物理机部署方法,完全一样,没有什么区别;
Docker exec 容器ID 命令行
Dokcer exec 65898f50bb44 ifconfig //直接操作容器系统
4) Docker虚拟化在生产环境有两种使用方式:
基于Docker Engine直接启动应用APP(软件)容器;(管理和使用不方便)
基于Docker Engine启动CentOS容器-容器中部署APP软件;(管理和使用方便),生产环境推荐方案;
5) Docker宿主机跟容器拷贝资源或者共享资源操作指令:
docker cp zabbix-3.2.6.tar.gz 1ccbd29c12c5:/tmp/
docker cp 1ccbd29c12c5:/tmp/zabbix-3.2.6.tar.gz .
docker run -itd -v /var/www/html/:/usr/share/nginx/html/ docker.io/nginx