docker入门到部署
1.简单描述docker
我理解的docker就是一艘货船,货船上有各种货柜(即docker中的容器),每一个货柜(容器)里面都做好了运行的程序和配置好环境,只需要访问这个容器就可以实现所需的功能。然而docker还可以将自己打包,移植到其他Linux机器上,就可以做到在任何机器上“即插即用”。
2.环境需求及要求
(1)Linux系统,CentOS内核要求高于3.10,查询版本命令:uname -r
(2) 源需要最高版本,更新命令:①yun源:sudo yum update
②apt源:sudo apt-get update
3.安装步骤
(1)安装软件依赖包
安装yum-utils
1 | sudo yum install -y yum-utils device-mapper-persistent-data lvm2 |
(2)设置yum源
1 | sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo |
(3)查看仓库中所有的 Docker 版本
1 | yum list docker-ce --showduplicates | sort -r |
(4)选择版本并安装
1 | sudo yum install <FQPN> // 例如:sudo yum install docker-ce-17.12.0.ce |
1 | sudo yum install docker-ce //此命令是安装最新版本 |
(5)设置 docker 开机启动/启动 docker 服务
1 | sudo systemctl start docker |
(6)查看docker是否安装成功
1 | docker version//查看docker版本 |
4.docker部署
(1)部署docker可视化平台——-Portainer
①创建分区-portainer_data:
1 | docker volume create portainer_data |
②从docker厂库把portainer拉下来:
1 | docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce |
注释:
docker run(启动一个镜像并放入容器中)如果没有这个镜像将会在 docker 仓库中自动拉取最
新版本
-d 参数为后台运行
-p 9000:9000 将物理机的 9000 端口暴露给 docker 容器中的 9000 端口
-v /var…:/var… 将物理机中的目录映射给 docker 中的对应目录(由于 docker 在重启后容器将
会全部消失,所以为了保证 docker 中的文件不会消失所以需要作目录映射)
③输出Unable to find image ‘portainer/portainer-ce:latest’ locally
然后自动拉取portainer
③开启服务器9000端口
1 | //开放端口,并重启防火墙 |
防火墙的基本操作
1 | 启动防火墙: service firewalld start |
④访问
(2)部署Lamp WEB服务器
Lamp服务器就是Linux+apache+MySQL+PHP的WEB服务器。我们下面就做一个容器,在这个容器里面部署lamp。
①docker 厂库中搜索最新版本的 lamp 镜像
1 | docker search lamp |
②选择所需版本进行拉取
1 | docker pull linode/lamp |
③启动镜像
1 | docker run -it -p 80:80 -p 3306:3306 -p 23:22 -v lamp_www:/var/www -v lamp_apache_conf:/etc/apache2 -v l |
可以在物理机上看到对应的映射文件(容器里面的文件)
④查看容器ID
1 | docker ps |
⑤进入容器
1 | docker attach ID |
⑥配置服务器
启动apache2和mysql服务
1 | service apache2 start |
安装 PHP 扩展
先更新源再安装 PHP mysql 和缓存扩展
1 | apt-get update |
重启apache2服务
1 | service apache2 restart |
可以查看端口,判断是否正确安装
1 | netstat -pant |
⑦配置MySQL远程访问
进入mysql(默认密码是Admin2015)
1 | mysql -uroot -p |
设置root用户允许远程访问
1 | mysql>use mysql |
更新mysql权限
1 | FLUSH PRIVILEGES; |
重启mysql
1 | service mysql restatrt |
⑧修改默认密码
修改容器密码
1 | Passwd |
修改mysql密码
1 | mysql> set password for root@localhost = password('你的密码'); |
配置完后,发现mysql还是连接不上,然后找到my.cnf把bind-address那一行注释掉。
连接成功
注释:远程数据库连接不上的原因
- ①端口没开放
- ②修改配置文件(如上图所示)
- ③没开启数据库服务
1 | service mysql start |
⑨其他扩展设置
域名绑定:
设置文件在:/var/lib/docker/volumes/lamp_apache_conf/_data/sites-enabled
具体修改如下图:
访问IP可见apache部署成功
(3)部署Lamp容器的SSH
下面操作都是进入容器里面的操作
更新源
1 | apt-get update |
①安装openssh-server(进入容器安装)
1 | apt install -y openssh-server |
②配置ssh文件sshd_config(vim没有的自行安装 apt install vim)
1 | vim /etc/ssh/sshd_config |
改成下图所示
③重启ssh服务
1 | service ssh restart |
④修改远程密码
1 | passwd root |
⑤用Finashell使用23端口连接