Swoft+Docker
Docker
以下纯属个人理解:
- Docker就是一种虚拟机,将环境打包成镜像,等于做了一个Linux系统裁剪。
- 镜像就是我们安装系统的镜像,里面包含了你的代码和环境。
- 容器就是一个虚拟机,你可以用一个镜像创建多个容器,等于就是安装了多个虚拟机。
- 然后用docker exec就可以进入容器执行命令,等于就是开了一个shell。但是有点不同的是,你在前台跑的命令,哪怕你关掉当前“页面”(可能是shell或者cmd,看在哪里运行的docker),命令还是在执行。
- 当你将代码和环境都弄好了,就可以打包成镜像发布了,可以公开也可以私用,随便你,可以理解为就是一个iso文件。
下面来看下基本操作:(基于Swoft的)
安装docker
yum install docker
service docker start
docker run hello-world的时候报错:
# docker run docker.io/hello-world
container_linux.go:247: starting container process caused "process_linux.go:258: applying cgroup configuration for process caused \"Cannot set property TasksAccounting, or unknown property.\""
/usr/bin/docker-current: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "process_linux.go:258: applying cgroup configuration for process caused \"Cannot set property TasksAccounting, or unknown property.\"".
解决:主要原因还是centos系统版本兼容性问题,如果将系统做更新升级,即可解决。
yum update
搭建环境
docker run -d -p 80:80 --name swoft swoft/swoft
这里就是利用swoft/swoft镜像运行一个名为swoft 的容器,然后-d表示后台运行,-p表示端口映射。
为什么要端口映射?我们写的web代码大多数都是要请求80端口,但是这是虚拟机,实际上还是只有一个80端口,所以可以映射比如81端口,别人访问81端口的时候就会映射去访问docker里面的80端口,而不用去特意在代码里面改成81端口。
如果成功了:
docker images #查看所有镜像,会看到一个名为swoft/swoft的镜像。
docker ps -a #查看所有容器,可以看到一个名为swoft且正在运行的容器。
# 进入容器
docker exec -it swoft /bin/bash
#停止容器
docker stop swoft
#启动容器
docker start swoft
写代码
此时我们运行的是官方的代码,那我自己要写代码怎么操作?
我们在某个地方git代码,比如/home/www/myswoft
然后写代码,写完之后:
docker run -it --rm -p 81:80 -v /home/www/myswoft/ swoft/swoft /bin/bash
#--rm表示我退出容器后就删掉容器。
然后就会进入容器里面
php bin/swoft start #将swoft运行起来
此时docker ps -a会看到一个正在跑的容器,然后执行的就是你写代码。
exit #退出容器。
注意:如果用本机的数据库和redis需要开IP可访问。
MySQL:
例如,你想root使用123456从任何主机连接到mysql服务器的话。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123546' WITH GRANT OPTION;
如果你想允许用户root从ip为192.168.1.3的主机连接到mysql服务器,并使用123456作为密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;
Redis:
注释掉bind 127.0.0.1可以使所有的ip访问redis
若是想指定多个ip访问,但并不是全部的ip访问,可以bind
protected-mode no
/etc/init.d/redis-server stop
/etc/init.d/redis-server start
/etc/init.d/redis-server restart
打包代码
功能什么的都写好了,想换个服务器运行,这个时候就可以直接打包:
docker build -t myswoft:v1 .
在/home/www/myswoft,也就是放代码的位置运行,swoft已经将dockerfile写好了,直接用。
注意最后的点不要掉了,表示当前目录。myswoft就是镜像的名字,v1就是版本号。
然后docker ps -a可以看到自己打包的镜像,如果不满意可以:
docker rmi ID #根据ID删镜像
接下来可以试着运行一下试试:
docker run -p 81:80 --name myswoft myswoft:v1
不满意:
docker rm imagename #根据名字删容器
调试:
docker start/stop imagename
docker exec -it /bin/bash
都弄好了, 要发布或者下载下来:
docker save -o /home/myswoft myswoft:v1
在别的服务器导入镜像:
docker load < /home/myswoft
docker添加域名
先运行docker镜像
- 进入 docker 容器 mynginx 是容器名
docker exec -i -t mynginx /bin/bash - 安装vim
apt-get install vim - 修改 hosts 文件
vi /etc/hosts - 添加域名解析规则
192.168.99.100 example.test
Swoft+Docker的更多相关文章
- docker swoft
docker swoft 安装并运行docker docker run -d -p 80:80 --name swoft swoft/swoft docker ps 查看正在运行的容器 docker ...
- swoft| 源码解读系列一: 好难! swoft demo 都跑不起来怎么破? docker 了解一下呗~
title: swoft| 源码解读系列一: 好难! swoft demo 都跑不起来怎么破? docker 了解一下呗~description: 阅读 sowft 框架源码, swoft 第一步, ...
- Swoft 新手向教程 - 通过 Docker 搭建一个开发环境
本系列文章将从使用层面介绍 Swoft 框架的使用及业务开发,面向初中级的 PHPer Swoft首个基于 Swoole 原生协程的新时代 PHP 高性能协程全栈组件化框架,内置协程网络服务器及常用的 ...
- 如何通过Docker搭建一个swoft开发环境
本篇文章给大家分享的内容是关于如何通过Docker搭建一个swoft开发环境 ,内容很详细,有需要的朋友可以参考一下,希望可以帮助到你们. Swoft首个基于 Swoole 原生协程的新时代 PHP ...
- [手把手教你] 用Swoft 搭建微服务(TCP RPC)
序言 Swoft Framework 基于 Swoole 原生协程的新时代 PHP 全栈式协程框架 Swoft 是什么? Swoft 框架是首个基于Swoole 原生协程的新时代 PHP高性能协程全栈 ...
- swoft| 源码解读系列二: 启动阶段, swoft 都干了些啥?
date: 2018-8-01 14:22:17title: swoft| 源码解读系列二: 启动阶段, swoft 都干了些啥?description: 阅读 sowft 框架源码, 了解 sowf ...
- 如何使用Docker部署PHP开发环境
本文主要介绍了如何使用Docker构建PHP的开发环境,文中作者也探讨了构建基于Docker的开发环境应该使用单容器还是多容器,各有什么利弊.推荐PHP开发者阅读.希望对大家有所帮助. 环境部署一直是 ...
- docker——容器安装tomcat
写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...
- Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境
首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...
随机推荐
- Sentry 监控 - Search 搜索查询实战
系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...
- csv或excel的utf-8乱码问题
方法1.数据导入 打开 Excel,执行"数据"->"自文本",选择 CSV 文件,出现文本导入向导,选择"分隔符号",下一步,勾选& ...
- git 操作 :从远程仓库gitLab上拉取指定分支到本地仓库;git如何利用分支进行多人开发 ;多人合作代码提交实践
例如:将gitLab 上的dev分支拉取到本地 git checkout -b dev origin/dev 在本地创建分支dev并切换到该分支 git pull origin dev 就可以把git ...
- linux mint 18.1 安装备忘录
本次全新安装mint18.1,遇到一些问题,全部解决,怕日后忘记,再捣鼓琢磨,浪费时间,特记录在此: 一.楷体字体问题 安装完后的mint18.1,显示都是楷体,经请教薄荷论坛高手,可用以下办法解决: ...
- Matrix Analysis and Application
Chap 1: Linear Equations and Matrix Linear equations Gaussian elimination Pivot; Triangularize; Back ...
- Spring面试复习整理
Spring Spring核心分为三方面: 控制反转(IoC): 就是将创建对象的权利交给框架处理/控制,不需要人为创建,有效降低代码的耦合度,降低了开发成本. 依赖注入(DI): 容器动态地将将某种 ...
- 解决安装mysql 到start service出现未响应问题
mysql下载地址 链接: https://pan.baidu.com/s/1vYpsNkVjUHqOKPQl9Y9A9A 提取码: wngn 安装可以参考 今天下载了MySql5.5,没想到的是前面 ...
- [洛谷日报#204] StackEdit——Markdown 编辑器的功能介绍
本文同时发表于洛谷日报,您也可以通过洛谷博客进行查看. 1.介绍与开始使用 1.1 这是什么? StackEdit是基于PageDown.Stack Overflow和其他堆栈交换站点使用的Markd ...
- 微服务Cloud整体聚合工程创建过程
1.父工程创建及使用 使用idea开发工具,选择File-new- project ,在选项中选择Maven工程,选择jdk版本1.8,勾选maven-archetype-site,点击next,输入 ...
- redis学习笔记-01 string类型命令
一.set key value set joker 123456 #设定key为joker,value为123456的数据 二.keys * keys * #用于查看该数据库中所有的key值 三.se ...