安装Docker
(出于安全性考虑,有关Docker的命令需在root权限下进行,这里全程sudo一下)
mkdir ~/docker && cd ~/docker &&
sudo apt-get -y install docker.io
docker version
:查看 Docker 的版本信息docker help
:查看 Docker 的帮助文档
更换镜像源:
Docker 工作的基础即是镜像。认为一个镜像相当于是一个独立的由应用组成的虚拟机。为此,docker 建立了 Docker Hub 来存贮镜像(就像GitHub一样)。
以下命令更换镜像源为腾讯云的镜像:
sudo su -
cat >> /etc/docker/daemon.json <<- EOF
{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
EOF
systemctl restart docker
exit
下载Docker相关镜像
docker pull <镜像>
拉取镜像,<>内为镜像名称
sudo docker image ls
查看已下载的镜像
几个常用镜像及其下载命令
Nginx
sudo docker pull nginx:alpine
sudo docker pull php:7-fpm-alpine
sudo docker pull postgres:alpine
启动镜像(以Nginx为例)
sudo docker run --rm -d -p 80:80 --name nginx nginx:alpine
参数说明
–rm:容器执行完后会被直接销毁。
–name:指定容器名称。
-d:容器会在后台运行。
-p:开放容器的80端口映射到主机的80端口。
-v:将nginx的配置文件挂载到容器的对应目录
之后可在Ngnix对应网址上看到欢迎页面。
停止容器
sudo docker stop <容器ID或容器名称>
命令使用说明:
- 若输入ID,可以只输入前几个字符(Docker会自动匹配后面的字符)。
- 若输入容器名称,则必须完整输入。
LNMP
什么是LNMP?
Linux-Nginx-MySQL(MariaDB)-PHP
高效管理并启动:docker-compose
安装:
sudo apt-get install -y python-pip && sudo pip install docker-compose
创建并修改配置文件docker-compose.yml:
touch ~/docker/docker-compose.yml
用vim打开该文件并填入以下内容:(vim操作不熟练的可搜搜别的资料哈,这里不多细述了)
version: "3"
services:
Nginx:
image: nginx:alpine
ports:
- 80:80
volumes:
- ./web:/usr/share/nginx/html:ro
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
PHP:
image: undefined01/php:7-fpm-alpine
volumes:
- ./web:/var/www/html:rw
Database:
image: postgres:alpine
environment:
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: "rootroot"
volumes:
- ./data:/var/lib/postgresql/data:rw
配置文件中涉及到的参数:
- version:配置文件使用第三套标准。
- services:需要启动的服务(容器)列表。
对于每一个服务,又有:
- image:该服务使用的镜像。
- ports:该服务开放的端口。
- volumes:将某目录或文件挂载到容器的相应位置上,后面的ro、rw表示对于容器是否可读写。
- enviornment:设置该容器的环境变量。此处通过环境变量的形式设置数据库的账号和密码。
!!此处数据库账号密码保存在文件中,所以一定要注意文件的访问权限!!
Nginx的配置文件:
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.php index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass PHP:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
include fastcgi_params;
}
}
一些问题:
如何更改容器里的配置文件?
只需要在本地编辑好后挂载到容器中去(会覆盖容器中的文件),前面小节中预留的nginx.conf就是为此。
如何让 Nginx 容器与 PHP 容器通讯?
对于由 docker-compose 启动的所有容器,都会自动加入由 docker 维护的局域网中,并且会自动为其他容器将某容器的名称(如 PHP )解析成相应的局域网IP。
启动LNMP
sudo docker-compose up -d
查看启动情况
sudo docker container ls
测试环境
获取编辑权限
sudo chmod -R 777 ./data ./web
测试php:
创建index.php文件
touch ~/docker/web/index.php
填入以下内容:
<?php
phpinfo();
?>
若操作正常,可在相应页面看到php相关信息。
测试数据库:
(因为PostgreSQL更适合云部署,所以这里用的PostgreSQL)
创建测试文件并填入以下内容:
<?php
$dbconn = pg_connect('host=Database user=postgres password=rootroot') or die('Could not connect: ' . pg_last_error());
pg_query('CREATE TABLE IF NOT EXISTS test ( tester INT )');
pg_query('INSERT INTO test VALUES (0)');
$res = pg_query('SELECT * FROM test') or die('Query failed: ' . pg_last_error());
$num = pg_num_rows($res);
echo "You have visited this site $num times";
pg_free_result($res);
pg_close($dbconn);
?>
使用命令停止服务
以下命令会自动销毁相应容器
sudo docker-compose down
数据库会保存在当前 docker 目录下的 data 文件夹中,若迁移到任何一台新的主机,只需要将该目录打包带走。文章来源:https://www.toymoban.com/news/detail-821804.html
结语
以上仅为学习笔记,不是解决问题的成熟方案。笔者是在临时实验机上跑的,如果有同学需要在常用云服务器甚至是企业级服务器上跑,由于现实情况的复杂性,建议对文章中提到的内容仔细研究、慎重输入,最好先在小机子上练练手,确保没问题了再跑。文章来源地址https://www.toymoban.com/news/detail-821804.html
到了这里,关于【云计算学习笔记】Docker(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!