Docker

A collection of 24 posts

Docker

Docker 容器中用 sed 换软件源

Docker容器镜像出于精简的目地通常不会预装nano、vi这些无关紧要的编辑器。 今天遇到的场景是需要在 buildpack-deps 容器中测试软件编译。既然再容器中作业,免不了安装相关的软件包,但是镜像默认使用debian官方软件源。 这时候就可以使用 sed 将 /etc/apt/sources.list 中的 deb.debian.org 一键替换成国内镜像服务器。 sed -i 's#http://deb.debian.org#https://mirrors.huaweicloud.com#g' /etc/apt/sources.list 为了避免操作失误,执行 sed 命令前最好先备份一下 sources.list 文件

Youtube

Youtube-dl Docker 版本

在 Docker Hub 上发现了 youtube-dl 的另一种用法,很有意思,“一次性容器”,即用即装,用完即抛。 系统中安装了 Docker CE 是使用的前提 设置命令别名 $ alias yt='docker run --rm -u $(id -u):$(id -g) -v $PWD:/data vimagick/youtube-dl' 使用 $ yt nVjsGKrE6E8 yt == youtube-dl 命令,后面的代码是youtube视频ID,也可以改用完整的视频地址。如果有需要,各种参数直接在 yt 之后添加即可。 Reference https:

Podman

Podman 无守护进程容器管理工具

Podman 是一个类似 docker 的容器管理工具,却与 docker 有着很大的不同。最重要的区别是,podman 不需要像 docker 引擎那样必须用 root 权限以守护进程的形式运行在后台。 Podman 无需守护进程,换言之,因为不需要在后台一直运行一个管理容器的引擎,所以能在一定程度上节约系统开销。 Podman 既可以让容器以 root 身份运行,也可以普通用户身份运行,这一特征有效的提升了容器部署的灵活性。 搭配 Poman 使用的另一个工具叫 Buildah ,它专门用来构建容器镜像,提供自己的镜像构建方式的基础上,兼容 Dcokerfile。 另外还有一个工具 skopeo 它被设计用来专门管理镜像仓库。 Podman + Buildah + Skopeo 这三个命令行工具组合在一起,就实现了一套完整的容器管理工具组合。

Caddy

Caddy proxy PHP-FPM docker container

Caddy 直接运行在主机上,反向代理容器中的 php-fpm 服务。这种方式的好处是不需要把 PHP 代码装到容器中也能正常运行。 创建 php-fpm 容器 sudo docker run -d --name php7-fpm \ -p 9000:9000 \ -v $PWD/html:/var/www/html \ --user www-data \ php:7-fpm Caddyfile 配置 Caddy 反向代理容器中的 php-fpm 服务,在配置文件中 root 应该填写 php-fpm 容器中映射的路径,即 /var/www/

Docker

Nginx + Proxy + LetsEncrypt on Docker

本来,我要解决的问题是 Docker 容器中的 WordPress 在通过主机 Nginx 反向代理后启用 HTTPS 时,前台显示正常,但管理后台无法访问的问题。这个问题实际上与我接下来要记录的内容没有本质上的关联,只需要一个名为 SSL Insecure Content Fixer 的 WordPress 插件即可解决。 接下来要记录的内容是完全通过 Docker 容器实现 Nginx 对容器的反向代理,同时实现 Let's Encrypt 证书的自动获取。 前者需要通过 jwilder/nginx-proxy 镜像实现,后者需要结合 JrCs/docker-letsencrypt-nginx-proxy-companion 镜像来实现。这里以我的 WordPress 容器配置举例。 第一步 配置 nginx-proxy

Tech

Docker Ghost + MySQL

Docker 官方 Ghost 镜像默认使用 sqlite 数据库,出于生产环境性能考虑应改用 MySQL。 基本的设置过程为,初始化 Mysql 数据库、用户及密码,在创建 Ghost 容器时通过 --link 连接数据库容器,通过 -e 将数据库相关信息设置为环境变量。 样板 sudo docker run -d --name ghost -p 2368:2368 \ --volumes-from ghost_data \ --link mariadb:db \ -e NODE_ENV=production \ -e url=https:

Alpine

Alpine Linux 开机执行脚本

Alpine Linux 的 /etc/local.d 目录用于放置那些我们需要在本地服务启动或停止后执行的脚本。 由于树莓派上运行的 docker 容器会因为直接断电导致无法重启,因此可以创建一个脚本,在每次树莓派开机后重新创建那些必须随机启动的容器。 使用说明 cat /etc/local.d/README This directory should contain programs or scripts which are to be run when the local service is started or stopped. If a file in this directory

Tech

通过容器使用 docker-compose

Docker-Compose 提供的这种使用方法基于一个安装了该程序的 docker 容器,通过将主机上的资源和当前目录映射到容器中实现管理,执行以下命令获取脚本: $ sudo curl -L --fail https://github.com/docker/compose/releases/download/1.17.1/run.sh -o /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose 提示:注意 docker-compose 的版本号 该方式安装的 docker-compose 将在容器中运行,初次运行会从 store 获取相应版本的容器。

Tech

docker 安装 ghost 博客

操作系统采用 Alpine 3.6.2-extent x86_64,docker 直接通过 apk 包管理器安装。 其他镜像创建的容器几乎都可以正常运行,唯独与 nodejs 相关的容器无法正常启动,进入容器执行 npm 相关命令会得到 Segmentation fault 错误。 错误原因是 nodejs:alpine 镜像没有预装 paxctl 包,眼前的解决办法是在 ghost 镜像的基础上构建一个新的镜像。 构建新的 ghost 镜像 Dockerfile 内容如下 FROM ghost:alpine RUN apk add --no-cache paxctl &

Tech

Nginx 反向代理 docker 容器

网站均运行在 Docker 容器中,希望通过在主机上安装 Nginx 作为反向代理实现对容器中站点的 http 和 https 反向代理访问。从 Let‘s encrypt 获取证书。 各容器映射到主机的端口按顺序使用 10000+。 certbot 获取 ssl 证书 sudo certbot certonly --manual 另一种配置方法 http server { listen 80; server_name www.abc.fun; location / { proxy_pass http://127.0.0.1:10000;

You've successfully subscribed to Herald's Tech Notes!