docker/ssh

一、先安装docker

这个很简单,因为我的系统是win10,我安装的是Docker Desktop,最好是更改一下docker镜像

二、运行docker,并用docker安装centos系统

先看以下命令会不会报错

$ docker -v
Docker version 19.03.8, build afacb8b
$ docker-compose -v
docker-compose version 1.25.4, build 8d51620a
docker pull centos   <----执行这行,拉取镜像

Using default tag: latest
latest: Pulling from library/centos
8a29a15cefae: Already exists
Digest: sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700
Status: Downloaded newer image for centos:latest
docker.io/library/centos:late


docker images      <----执行这行,查看本地镜像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hell178/lnmp        v1                  620a78c49b09        5 days ago          4GB
centos              latest              470671670cac        4 months ago        237MB

三、进入容器并安装lnmp

执行命令,这里用了-v,是目录映射,用做mysql数据存储目录,如果你不是用的Lnmp一键环境包,那么需要注意mysql安装目录

docker run -it -v D:\docker\mysql:/usr/local/mysql/var centos

使用git Bash进入容器,可能会报以下错误。

docker run -it centos
the input device is not a TTY.  If you are using mintty, try prefixing the command with 'winpty'

建议使用windows PowerShell工具执行
1、在桌面上,按住shift不放,单击鼠标右键即可看到
2、按键盘上的win+x也有

四、因为是在本地运行,懒得一个个装nginx,mysql等,我这里直接用的是lnmp一键环境

先安装wget

yum -y install wget

然后进到Lnmp官网,获取下载地址

lnmp官网地址 https://lnmp.org/install.html

执行以下命令,按自己的喜好安装版本吧

wget http://soft.vpser.net/lnmp/lnmp1.6.tar.gz -cO lnmp1.6.tar.gz && tar zxf lnmp1.6.tar.gz && cd lnmp1.6 && ./install.sh lnmp

五、安装ssh并使用密钥登录

安装openssh

yum install openssh-server openssh-clients -y

修改/etc/ssh/sshd_config配置文件

vi /etc/ssh/sshd_config

确定以下3个都没有被注释

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

注意:某些资料中让把配置文件中的UsePAM yes改为UsePAM no,经过实际测试,修改后启动ssh服务将报错,其实这个不用注释也行的

执行以下3条命令,生成对应的密钥,出现需要输入密码的地方,一路回车

ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t rsa -f /etc/ssh/ssh_host_ecdsa_key
ssh-keygen -t rsa -f /etc/ssh/ssh_host_ed25519_key

修改root密码

passwd

启动ssh服务

/usr/sbin/sshd -D &

六、构建镜像并上传

lnmp安装好后,另外再开一个终端窗口。执行以下docker操作。千万别动刚才安装lnmp的窗口,否则刚才安装的东西全都没有了。

docker ps
docker commit a0f2b58c74af lnmp
docker tag lnmp:latest carl/lnmp:1.0
docker push carl/lnmp:1.0

等待推送完成后,在你的https://hub.docker.com/repositories即可看到了。

八、编写docker-compose.yml

  • 注意点
    一般mysql数据存储到宿主机,而不是docker容器中,所有
    
    

以下为官网说明:https://lnmp.org/faq.html
MySQL目录的更改,首先需要停掉mysql服务器/etc/init.d/mysql stop,下面新目录以/data/mysql/ 为例,然后cp -a /usr/local/mysql/var/* /data/mysql/,再chown mysql:mysql -R /data/mysql/ 下面再修改/etc/my.cnf ,查找[mysqld] ,在下面加入datadir = /data/mysql/ 保存,如果开启了innodb还需要修改innodb_data_home_dir 和innodb_log_group_home_dir为新的/data/mysql,启动mysql。

这里的version需要注意,Compose 文件格式有3个版本,分别为1, 2.x 和 3.x

使用docker-compose -v查看版本号,如果是1.xx,version就填2

version: ‘2’
services:
#服务名称,用户自定义
lnmp:
#镜像名称/镜像ID,如果本地不存在compose会拉取镜像,填刚才构建的镜像名
image: carl/lnmp:v1
#容器名称
#container_name: lnmp
#设置镜像变量,启动后的容器会包含这些变量设置
environment:
TZ: Asia/Shanghai
volumes:
- D:\works:/home/wwwroot
- D:\docker\vhost:/usr/local/nginx/conf/vhost
#这里把Mysql数据存储目录映射到宿主机,在第三步有临时映射
- D:\docker\mysql:/usr/local/mysql/var
ports:
- “80:80”
- “81:81”
- “82:82”
- “10022:22”
- “8090:8090”
- “800:8080”
- “10000:10000”
- “443:443”
command:
- /bin/bash
- -c
- |
lnmp start && /usr/sbin/sshd -D &
tty: true

执行命令开始使用

docker-compose exec lnmp /bin/bash


### 八、下次使用
把网站内容映射到了linux容器中的/home/wwwroot中,vhost也映射了
下次电脑重启了,有2种方式打开继续使用
1、在docker-composer.yml执行命令

docker-compose exec lnmp /bin/bash

2、docker desktop桌面工具,点击setting->右上角关闭->这里有容器列表


### 其他可能注意的点
1、如果Mysql没有启动,执行以下命令

yum install initscripts -y


2、如果navicat mysql连接不上数据库,请参考

https://blog.csdn.net/me_Lany/article/details/82770948


参考站点:[https://www.jianshu.com/p/34a625621a9a](https://www.jianshu.com/p/34a625621a9a)

请我喝杯咖啡吧~

支付宝
微信