docker入门到部署

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

1607246545(1)

(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

image-20201220165244872

(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
2
sudo systemctl start docker
sudo systemctl enable 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

image-20210412231317775

③开启服务器9000端口

1
2
3
//开放端口,并重启防火墙
firewall-cmd --permanent --add-port=9000/tcp
service firewalld restart

防火墙的基本操作

1
2
3
4
启动防火墙: service firewalld start
列出防火墙配置: firewall-cmd --list-all
查询是否开放 80 端口:firewall-cmd --query-port=80/tcp
开放 80 端口:firewall-cmd --permanent --add-port=80/tcp

④访问:9000可视化使用docker

image-20201220170544852

(2)部署Lamp WEB服务器

Lamp服务器就是Linux+apache+MySQL+PHP的WEB服务器。我们下面就做一个容器,在这个容器里面部署lamp。

①docker 厂库中搜索最新版本的 lamp 镜像

1
docker search lamp

image-20201220170708770

②选择所需版本进行拉取

1
docker pull linode/lamp

image-20201220172307579

③启动镜像

1
2
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
amp_mysql_conf:/etc/mysql -v lamp_mysql_data:/var/lib/mysql --name lamp linode/lamp /bin/bash

可以在物理机上看到对应的映射文件(容器里面的文件)

image-20210503194242766

④查看容器ID

1
docker ps

image-20210503194319885

⑤进入容器

1
docker attach ID

⑥配置服务器

启动apache2和mysql服务

1
2
service apache2 start
service mysql start

安装 PHP 扩展
先更新源再安装 PHP mysql 和缓存扩展

1
2
3
apt-get update
apt-get install -y php5-mysql
apt-get install -y php5-gd

重启apache2服务

1
service apache2 restart

可以查看端口,判断是否正确安装

1
netstat -pant

⑦配置MySQL远程访问

进入mysql(默认密码是Admin2015)

1
mysql -uroot -p

image-20210511181018074

设置root用户允许远程访问

1
2
mysql>use mysql
mysql>update user set host = '%' where user = 'root' and host='127.0.0.1';

image-20210427234214101

更新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那一行注释掉。

image-20210413230920578

连接成功

image-20210413230939007

注释:远程数据库连接不上的原因

  • ①端口没开放
  • ②修改配置文件(如上图所示)
  • ③没开启数据库服务
1
service mysql start

⑨其他扩展设置

域名绑定:
设置文件在:/var/lib/docker/volumes/lamp_apache_conf/_data/sites-enabled
具体修改如下图:

image-20210511181404919

image-20210511181435213

访问IP可见apache部署成功

image-20210424175817726

(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

改成下图所示

image-20210511181607394

image-20210511181636272

③重启ssh服务

1
service ssh restart

④修改远程密码

1
passwd root

⑤用Finashell使用23端口连接

image-20210511181711268