# 确认要迁移容器的名称
docker ps -a
# 打包容器为新的镜像
docker commit 容器名 镜像名
# 把镜像保存为tar文件
docker save 镜像名 >文件名称.tar
# 将文件传输到另一台服务器,用SCP命令
scp -P 22 /文件路径/文件名称.tar root@接收文件的服务器的IP:/存放文件的目录
# 恢复镜像
docker load < 文件名称.tar
恢复镜像后,用同样的方法创建容器即可。
]]>library initialization failed - unable to allocate file descriptor table - out of memorylibrary
initialization failed - unable to allocate file descriptor table - out of memory
在这里记录下解决方案。
通过重写 Docker 的 ExecStart 的参数解决
sudo systemctl edit docker
进入后,添加或者修改对应参数
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --default-ulimit nofile=65536:65536 -H fd://
最后重启 Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
]]>ifconfig docker0 down
yum -y install bridge-utils
brctl delbr docker0
这样处理后,才算彻底删除了 Docker 环境。
注意:如果你没有删除删除 Docker 环境,那么下次系统启动 Docker Daemon 时还是会自动创建 docker0 网桥。
]]>docker exec -it 容器名/容器ID /bin/bash
进入容器报错报错信息如下:
OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "/bin/bash": stat /bin/bash: no such file or directory: unknown
查看相应镜像发现镜像是使用alpine制作的
再次输入命令
docker exec -it 容器名/容器ID /bin/sh
进入成功
]]>docker kill $(docker ps -a -q)
docker rm $(docker ps -a -q)
docker rmi $(docker images -q)
systemctl stop docker
rm -rf /etc/docker
rm -rf /run/docker
rm -rf /var/lib/dockershim
rm -rf /var/lib/docker
如果发现删除不掉,需要先 umount,如
umount /var/lib/docker/devicemapper
查看已安装的 docker 包
yum list installed | grep docker
卸载相关包
yum remove docker-ce*
yum remove containerd.io.x86_64
]]>之前博客搭建在阿里云的机器上,现在快过期了,加上原机器带宽太小,就不打算续费了,现在就需要将 Typecho 博客迁移到新机器上。以前使用的是宝塔面板搭建的,现在不想把机器环境搞得乱七八糟,因此选择使用 Docker 来搭建 Typecho。
使用一键脚本安装Docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun && systemctl start docker && systemctl enable docker
如果提示 curl 命令不存在,就需要先安装 curl
# Centos
yum -y install curl
# Ubuntu、Debian
apt -y install curl
如果你机器是国内的机器,那么需要配置镜像加速
阿里云镜像获取地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
修改 /etc/docker/daemon.json
,文件不存在就创建一个
{
"registry-mirrors": [
"你的加速地址"
]
}
这里选择的是 Mariadb,可自行选择数据库镜像,这里配置参数就不做解释了,懂的都懂
docker run -d -v /home/mysql:/var/lib/mysql \
-p 3306:3306 -e MYSQL_ROOT_PASSWORD=密码 \
--privileged=true --restart=always --name mariadb mariadb
安装官方的 php:7.2-fpm 镜像后,还需要进入容器安装 mysql pdo
才能使用 Mysql
数据库,比较麻烦,这里我自己在 php:7.2-fpm 的基础上构建了个带 mysql pdo
的镜像,可以选择性使用。
docker run -d -v /home/nginx/html:/var/www/html \
-p 8080:8080 --link mariadb:mariadb --name php dqjdda/php
docker run -d \
--link php:php \
--name nginx --restart always \
-p 80:80 -p 443:443 \
-e "TZ=Asia/Shanghai" \
-v /home/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf.d:/etc/nginx/conf.d \
-v /home/nginx/logs:/var/log/nginx \
-v /home/nginx/cert:/etc/nginx/cert \
-v /home/nginx/html:/var/www/html \
nginx
/home/nginx/conf.d
用于放配置文件/home/nginx/logs
存放日志/home/nginx/cert
存放证书/home/nginx/html
存放网页在 /home/nginx/conf.d
目录创建文件 blog.conf
server {
listen 443 ssl http2;
server_name www.ydyno.com;
gzip on;
# 缓存SSL
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
# 证书配置
ssl_certificate /etc/nginx/cert/ydyno.com/ydyno.com_chain.crt;
ssl_certificate_key /etc/nginx/cert/ydyno.com/ydyno.com_key.key;
root /var/www/html/ydyno;
index index.php;
# 伪静态
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php$1 last;
}
location ~ .*\.php(\/.*)*$ {
include fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
fastcgi_pass php:9000;
}
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
expires 5d;
}
# deny access to . files, for security
location ~ /\. {
log_not_found off;
deny all;
}
}
server {
listen 80;
server_name www.ydyno.com ydyno.com;
return 301 https://www.ydyno.com$request_uri;
}
直接将老服务器的博客目录移动到 /var/www/html/ydyno
,然后将数据库导出,然后导入到新库即可