一:简介:你是否经历过“我本地运行没问题啊!““哪个哥们有写死循环了““完了,服务器撑不住了“等等问题,docker就是这么帮你解决问题的工具,它可以帮你把web应用自动化打包和发布,在服务型环境下进行部署和调整数据库或其他的后台应用。
二:核心技术
1:命名空间:命名空间(namespaces)是 Linux 为我们提供的用于分离进程树、网络接口、挂载点以及进程间通信等资源的方法。在日常使用 Linux 或者 macOS 时,我们并没有运行多个完全分离的服务器的需要,但是如果我们在服务器上启动了多个服务,这些服务其实会相互影响的,每一个服务都能看到其他服务的进程,也可以访问宿主机器上的任意文件,这是很多时候我们都不愿意看到的,我们更希望运行在同一台机器上的不同服务能做到完全隔离,就像运行在多台不同的机器上一样。
在这种情况下,一旦服务器上的某一个服务被入侵,那么入侵者就能够访问当前机器上的所有服务和文件,这也是我们不想看到的,而 Docker 其实就通过 Linux 的 Namespaces 对不同的容器实现了隔离。
Linux 的命名空间机制提供了以下七种不同的命名空间,包括 CLONE_NEWCGROUP、CLONE_NEWIPC、CLONE_NEWNET、CLONE_NEWNS、CLONE_NEWPID、CLONE_NEWUSER 和 CLONE_NEWUTS,通过这七个选项我们能在创建新的进程时设置新进程应该在哪些资源上与宿主机器进行隔离。
2:网络:Docker的网络,介绍一种网桥的机制。在这种模式下,除了分配隔离的网络命名空间之外,Docker 还会为所有的容器设置 IP 地址。当 Docker 服务器在主机上启动之后会创建新的虚拟网桥 docker0,随后在该主机上启动的全部服务在默认情况下都与该网桥相连。
Build 构件镜像(镜像):
Ship 运输镜像(仓库):
Run 运行镜像(容器):
三:centOS安装Docker:
1:安装
yum install -y docker
2:启动:systemctl start docker
systemctl start docker
3:查看状态
systemctl status docker
4:查看版本
docker version
5:查看信息
docker info
五:重要开发软件配置及使用
CentOS下使用Docker部署Mysql:
1:拉取Docker Hub官方提供的mysql镜像
dokcer pull mysql:5.7
2:运行容器
docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p : -d mysql:5.7
- --name mysql 创建的容器名称
- -e MYSQL_ROOT_PASSWORD=root 使用root作为root账号的密码
- -p 3306:3306 容器的3306端口映射到宿主机器
- -d 后台运行容器
- mysql:5.7 镜像名称
3:查看
docker ps
4:连接数据库操作
CentOS下使用Docker安装Redis
1:拉取Docker Hub官方镜像
docker pull redis
2:启动redis镜像
docker run redis --name myredis -p : -d redis-server
3:查看
4:连接操作
CentOS下使用docker部署Tomact服务器:
1:拉取Docker Hub官网镜像
docker pull tomact
2:查看所有镜像
docker images
3:启动tomact
docker run --name tomcat8080 -d -p : tomcat
4:部署war包到tomact下
CentOS下部署Nginx
1:拉取Docker Hub官网镜像
docker pull nginx
2:查看所有镜像
1 docker images
3:启动nginx
1 docker run -p 80:80 --name nginx_web -it nginx:v1.0.2
4:部署war包到nginx下
111111111111