乌班图docker容器日志清理_Ubuntu环境的docker实践——进阶操作

1.使用镜像加速

由于docker在使用过程中,不可避免地要访问官方镜像站,如果本地网络条件不佳,就会影响用户体验。为此,可以选择docker镜像加速器。

我使用的是阿里的镜像加速。首先要注册一个阿里云账号,然后开通容器镜像服务,后台会自动分配加速地址。

新建或编辑现有/etc/docker/daemon.json文件,添加下面内容,将\,替换成分配的加速地址,保留引号。

{

"registry-mirrors": [""]

}

重启

$ sudo systemctl daemon-reload

$ sudo systemctl restart docker

之后就可以体验飞一样的速度了!

2.多容器应用

Docker Compose

Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a Compose file to configure your application's services. Then, using a single command, you create and start all the services from your configuration.(来源:GitHub关于Compose的介绍)

$ #下载指定版本的docker compose

$ sudo curl -L https://github.com/docker/compose/releases/download/**1.25.1**/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

$ #为二进制文件添加可执行权限

$ sudo chmod +x /usr/local/bin/docker-compose

$ #创建软链接(类似于Windows的快捷方式)

$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

$ #检查版本

$ docker-compose --version

使用Docker Compose部署LNMP

所谓LNMP,即Linux下的Nginx,Mysql,PHP

制作nginx,php,mysql的Dockerfile镜像描述文件,Ubuntu环境下使用docker hub上的官方源即可

mysql:更新源,安装nano,curl,net-tools,iputils-ping等基本工具,便于查看文件内容,执行请求和配置网络

php:设置地区;更新源,安装基本工具,以及libfreetype6-dev,libjpeg62-turbo-dev,libpng-dev;安装扩展,需包含pdo_mysql(用于php连接mysql);设置配置文件等

nginx:更新源,安装nano,curl,net-tools,iputils-ping,便于查看文件内容,执行请求和配置网络

编写nginx和php配置文件,放在相应Dockerfile的目录中

建立app文件夹,存放各类web请求和php脚本(包括php信息脚本和数据库连接测试脚本)

编写yml,使用Docker Compose将多个容器联合起来,其中各个容器的依赖关系为:nginx依赖于php,php依赖于mysql

PHP成功

phpinfo();

连接数据库的php代码运行成功

$servername = "LNMP-mysql";

$dbName='填入数据库名称';

$username = "填入数据库用户";

$password = "填入数据库密码";

try {

$conn = new PDO("mysql:host=$servername;dbname=$dbName", $username, $password);

echo "连接成功";

}

catch(PDOException $e)

{

echo $e->getMessage();

}

?>

查看Docker Compose日志

之前遇到过mysql容器一直重启

此时可使用命令:

$ docker logs LNMP-mysql

发现原来是我设定的一个database文件夹,用于存储数据库信息的,初始化时里面有文件,要清空

清理之后,问题解决。

3.Raspberry Pi 4B上部署docker

安装docker

直接运行脚本安装:

$ curl -sSL https://get.docker.com | sh

或者按下面方法:

$ sudo apt-get update

$ sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common

$ #加入仓库钥匙,注意命令中使用的是raspbian表示树莓派

$ curl -fsSL https://download.docker.com/linux/raspbian/gpg | sudo apt-key add -

$ #添加docker客户端仓库stable是稳定版

$ echo "deb [arch=armhf] https://download.docker.com/linux/raspbian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list

$ sudo apt-get update

$ sudo apt-get install -y docker-ce

$ # docker加速(见第1部分)

$ sudo nano /etc/docker/daemon.json

$ # 添加如下内容

{

"registry-mirrors": [""]

}

$ #重启docker并常驻服务

$ sudo systemctl restart docker.service

$ sudo systemctl enable docker.service

$ #用hello-world测试

$ sudo docker run hello-world

$ #查看版本

$ sudo docker --version

安装docker-compose

参考自树莓派4B安装docker-compose(64位Linux)

由于树莓派是ARM架构的,官方没有提供安装版本,因此只能“曲线救国”

$ sudo apt-get update

$ sudo apt-get install -y python python-pip

$ sudo apt-get install libffi-dev

$ sudo pip install docker-compose

将python2.7的dist-packages文件夹复制到docker的工作目录下,本人在安装过程中会提示backports 不存在,于是跳过了这一步,并不影响使用

$ cd /usr/local/lib/python2.7/dist-packages && cp -r backports /usr/local/lib/python2.7/dist-packages/docker/transport/

查看版本

$ docker-compose version

如果遇到报错No module named shutil_get_terminal_size

很可能是python版本的问题,使用

$ sudo pip3 install docker-compose

将基于docker的LNMP在Raspberry Pi上部署

最大的障碍在于Raspberry Pi是基于ARM芯片的,docker hub上的镜像很少,之前使用的镜像不能全部运行在它上面,mysql的官方镜像就没有支持arm的。

所以使用mariadb数据库替代mysql,并选择支持arm的镜像,修改docker-compose.yml以及其他相关文件,运行部署。

之后又增加了phpmyadmin,利用web管理服务器,在部署的时候前期发现phpmyadmin无法使用,经查容器一直在重启,用之前查看日志的方法,发现报错:standard_init_linux.go:211: exec user process caused "exec format error",再查原因又是arm平台的问题,官方的phpmyadmin镜像不支持,要换一个。换过后问题解决。


版权声明:本文为weixin_39621794原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。