前提
配置:2核4G内存1Mbps带宽
系统:CentOS7.7
服务器设置
重置密码,修改主机名、实例名,设置安全组(80,443,3306等)
Xshell连接服务器
宝塔面板安装(开放8888端口)
用来管控还是挺好的
1 | yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh |
傻瓜式选择LNMP(Linux,Nginx1.16,MySQL5.6,PHP5.6)一键安装
docker
安装docker-ce
1 | 设置仓库 |
2 | yum install -y yum-utils device-mapper-persistent-data lvm2 |
3 | 配置镜像源 |
4 | yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo |
5 | 安装docker-ce |
6 | yum install docker-ce docker-ce-cli containerd.io |
7 | 启动 |
8 | systemctl start docker |
9 | 查看版本 |
10 | docker version |
1)、镜像操作
| 操作 | 命令 | 说明 |
|---|---|---|
| 检索 | docker search 关键字 eg:docker search redis | 我们经常去docker hub上检索镜像的详细信息,如镜像的TAG。 |
| 拉取 | docker pull 镜像名:tag | :tag是可选的,tag表示标签,多为软件的版本,默认是latest |
| 列表 | docker images | 查看所有本地镜像 |
| 删除 | docker rmi image-id | 删除指定的本地镜像 |
2)、容器操作
1 | 1、搜索镜像 |
2 | [root@localhost ~]# docker search tomcat |
3 | 2、拉取镜像 |
4 | [root@localhost ~]# docker pull tomcat |
5 | 3、根据镜像启动容器 |
6 | docker run --name mytomcat -d tomcat:latest |
7 | 4、docker ps |
8 | 查看运行中的容器 |
9 | 5、 停止运行中的容器 |
10 | docker stop 容器的id |
11 | 6、查看所有的容器 |
12 | docker ps -a |
13 | 7、启动容器 |
14 | docker start 容器id |
15 | 8、删除一个容器 |
16 | docker rm 容器id |
17 | 9、启动一个做了端口映射的tomcat |
18 | [root@localhost ~]# docker run -d -p 8888:8080 tomcat |
19 | -d:后台运行 |
20 | -p: 将主机的端口映射到容器的一个端口 主机端口:容器内部的端口 |
21 | |
22 | 10、为了演示简单关闭了linux的防火墙 |
23 | service firewalld status ;查看防火墙状态 |
24 | service firewalld stop:关闭防火墙 |
25 | 11、查看容器的日志 |
26 | docker logs container-name/container-id |
27 | |
28 | 更多命令参看 |
29 | https://docs.docker.com/engine/reference/commandline/docker/ |
30 | 可以参考每一个镜像的文档 |
3)、安装MySQL示例
1 | docker pull mysql |
错误的启动
1 | [root@localhost ~]# docker run --name mysql01 -d mysql |
2 | 42f09819908bb72dd99ae19e792e0a5d03c48638421fa64cce5f8ba0f40f5846 |
3 | |
4 | mysql退出了 |
5 | [root@localhost ~]# docker ps -a |
6 | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES |
7 | 42f09819908b mysql "docker-entrypoint.sh" 34 seconds ago Exited (1) 33 seconds ago mysql01 |
8 | |
9 | //错误日志 |
10 | [root@localhost ~]# docker logs 42f09819908b |
11 | error: database is uninitialized and password option is not specified |
12 | You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD;这个三个参数必须指定一个 |
正确的启动
1 | [root@localhost ~]# docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql |
2 | b874c56bec49fb43024b3805ab51e9097da779f2f572c22c695305dedd684c5f |
3 | [root@localhost ~]# docker ps |
4 | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES |
5 | b874c56bec49 mysql "docker-entrypoint.sh" 4 seconds ago Up 3 seconds 3306/tcp mysql01 |
做了端口映射
1 | [root@localhost ~]# docker run -p 3306:3306 --name mysql02 -e MYSQL_ROOT_PASSWORD=123456 -d mysql |
2 | ad10e4bc5c6a0f61cbad43898de71d366117d120e39db651844c0e73863b9434 |
3 | [root@localhost ~]# docker ps |
4 | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES |
5 | ad10e4bc5c6a mysql "docker-entrypoint.sh" 4 seconds ago Up 2 seconds 0.0.0.0:3306->3306/tcp mysql02 |
几个其他的高级操作
1 | docker run --name mysql03 -v /conf/mysql:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag |
2 | 把主机的/conf/mysql文件夹挂载到 mysqldocker容器的/etc/mysql/conf.d文件夹里面 |
3 | 改mysql的配置文件就只需要把mysql配置文件放在自定义的文件夹下(/conf/mysql) |
4 | |
5 | docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci |
6 | 指定mysql的一些配置参数 |
redis in docker
1 | docker run --name 名字 -p 6379:6379 -d redis --requirepass "密码" |