分类
容器

Docker自定义网络和运行时指定IP

启动Docker容器的时候,使用默认的网络是不支持指派固定IP的

Docker安装后,默认会创建三种网络类型,bridge、host和none,可通过如下命令查看

sudo docker network ls

bridge:网络桥接
默认情况下启动、创建容器都是用该模式,所以每次Docker容器重启时会按照顺序获取对应ip地址,这就导致容器每次重启,ip都发生变化

none:无指定网络
启动容器时,可以通过–network=none,Docker容器不会分配局域网ip

host:主机网络
Docker容器的网络会附属在主机上,两者是互通的。

分类
容器

Gitlab Docker迁移数据出现权限问题解决

docker 启动脚本添加–privileged=true特权模式

运行脚本之后通过 docker ps 查看当前正在运行的容里面并没有看到 gitlab这个容器,通过 ps -a显示所有容器时发现它的状态一直是 starting 或者 restarting。 这个时候我们可以使用 docker logs 来查看当前容器的运行日志。

Preparing services... Starting services... /opt/gitlab/embedded/bin/runsvdir-start: line 24: ulimit: pending signals: cannot modify limit: Operation not permitted /opt/gitlab/embedded/bin/runsvdir-start: line 37: /proc/sys/fs/file-max: Read-only file system Configuring GitLab package... Configuring GitLab... =============================================================================
Error executing action `run` on resource 'ruby_block[directory resource: /var/opt/gitlab/git-data/repositories]'  ============================================================================= 

通过 docker logs 可以方便大家来论断错误,一切正常还好,如果一旦出现问题,新手是很懵圈的。这个时候可能通过google 查找错误日志,多数情况下都能找到正确答案,我遇到的是个权限不足的问题, 在这个链接里面有完整的讨论,解决办法就是执行下面这句命令之后就可以正常启行了。

sudo chmod 2770 /srv/gitlab/data/git-data/repositories

另外的权限问题可以通过docker打印出来的方法来解决

For a comprehensive list of configuration options please see the Omnibus GitLab readme https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md   If this container fails to start due to permission problems try to fix it by executing:     docker exec -it gitlab update-permissions   docker restart gitlab 

原文: https://blog.csdn.net/lan120576664/article/details/79310069

分类
容器

GitLab迁移

写该文时,已经迁移成功,中途出现的问题没有截图,就用文字描述吧。

把Docker安装部署的GitLab,迁移到另外一台机器。

第一次的做法是把数据目录打包,然后放到新机器上,运行失败。提示没有权限。

找到一个相似的问题,https://www.oschina.net/question/2607587_2274426,评论中给出的方法,运行:

docker exec -it gitlab update-permissions  
docker restart gitlab

虽然能启动成功,但是登录报错,代码503。

执行 gitlab-ctl reconfigure ,依然不能登录。

于是打算使用GitLab自带的备份恢复。

分类
容器

Docker拉取镜象失败

安装docker版nexus,拉取镜像失败:

pull access denied for snoatype/nexus3, repository does not exist or may require ‘docker login’

使用 docker login 登录 docker账号,依然不能拉取镜像。但是拉取 gitlab、nextcloud、wordpress 都正常。

网上的方法都是登录 docker 账号,估计这些人提供方法前自己没试过的。进入 hub.docker.com ,登录docker账号(如果没有则创建一个),搜索 nexus,找到sonatype/nexus3,标星收藏。

再用docker获取镜像,成功!

分类
容器 笔记

Docker Desktop for Windows

自从使用Docker就变得一发不可收拾。和以前用虚拟机相比,它占资源少,启动快,方便管理。我主要用Docker来管理多个版本的软件共存、切换和升级,比如数据库,NextCloud,Wordpress。

开源的东西总是衷爱Linux,像Docker在Windows下就没那么方便。Windows的Linux子系统目前还不支付Docker,据说下个版本,WSL2会支付。所以我一直都是用VMware安装Linux,再安装Docker。

其实官方有提供在Windows环境下使用Docker的支持。一种是Docker Toolbox
工具,它是基于Oracle的VirtualBox虚拟机的,兼容性好,Windows各个版本都能用。还有一种是Docker Desktop for Windows,它是基于Hyper-V虚拟机。Hyper-V是微软的虚拟机,只在Windows专业版、企业版、工作站版中有。打开控制面板-程序-启用或关闭Windows功能,勾选Hyper-V,确定然后重启生效。

需要注意的是,Hyper-V和VMware、VirtualBox有冲突,开启后,VMware和VirtualBox包括Android虚拟机就不能使用CPU虚拟化了,性能会大打折扣。

从官网,docker.com下载Docker Desktop for Windows安装,安装完成后Docker会自动连接Hyper-V创建MobyLinux系统。Docker可能会提示需要用户登录,如果没有,可以去官网注册一个Docker账号。下载镜像是必须登录的。

分类
MySql PHP

一个PhpMyAdmin的https错误

使用docker安装phpmyadmin,启动成功登录,出现提示:服务器和客户端上指示的 HTTPS 之间不匹配。这可能导致 phpMyAdmin 无法正常工作或存在安全风险。请修复您的服务器配置以正确指示 HTTPS。

以前phpmyadmin是直接安装在nginx里的,没有这个问题。现在用nginx做为代理。外部访问使用https,内部用http。

解决方法是修改参数:

$cfg[‘PmaAbsoluteUri’] = ‘https://pma.xxx.com’;

在docker中启动,可以在启动时指定环境参数(该参数在官方文档里没有但是有效):

-e PMA_ABSOLUTE_URI=https://pma.xxx.com

分类
笔记

本地架设私有git服务器

从事软件开发肯定少不了对代码进行管理和版本控制。以前一直使用svn,好处是简单又有权限控制。后来项目种类多了,用git管理,不相关的项目做隔离。使用git有很多种方式,自己管理代码采用ssh连接,方便快捷。现在希望有一个好的呈现界面,像github和gitlab一样,方便查阅和分享。

github属于微软派系,自己用的比较多,可惜不提供源码自己架设。所以我选择google旗下的gitlab。
本地环境:Ubuntu Server 18.04

我采用docker安装,首先安装docker
apt install docker-compose

下载gitlab社区版镜像
docker pull gitlab/gitlab-ce

启动gitlab

docker run –detach –hostname gitlab.wangzhengzhen.com –publish 10080:80 –publish 10022:22 –name gitlab –restart always –volume /home/docker/gitlab/config:/etc/gitlab –volume /home/docker/gitlab/logs:/var/log/gitlab –volume /home/docker/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest

在这里,端口和目录的映射跟据自己需要修改。
PS:启动过程有点慢,需要耐心等待。

分类
笔记 编程

云开发IDE - Eclipse Che

Eclipse Che是一个现代的、开放源代码的软件开发环境,它是基于云端的IDE。官方没有提供直接可运行的程序,而是使用现在正火的Docker镜像。官方推荐Docker 17+,首先需把本的Docker升级到最新。

不同平台的升级方法:https://docs.docker.com/install/
我本地的环境是Ubuntu 18.04,使用单用户安装方式。执行如下:

1.卸载旧的docker

apt remove docker docker-engine docker.io

2.安装必要的软件包

apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common