分类
容器

Docker镜像开机自动启动

网上有些文章说,要让docker 的容器自动在开机启动,是写脚本,比如在 rc.local 中写。

其实完全没必要这么麻烦,docker 有相关指令,docker run 指令中加入 –restart=always 就行。

sudo docker run –restart=always …..

如果创建时未指定 –restart=always ,可通过update 命令设置

docker update –restart=always xxx

分类
容器

修改运行中的Docker容器的端口映射和挂载目录

在Docker运行容器+端口映射和磁盘映射:

docker run -it -d -p 80:8080 -v /root/www/www:/usr/local/tomcat/webapps/ROOT tomcat

参数解读:

-d:后台运行;
-p:端口映射   上述80为宿机端口,8080为容器内部端口;
-v:文件挂载   指定宿机目录映射到容器内部的目录(上述就是把宿机/root/www/www的地址映射到容器内部的/usr/local/tomcat/webapps/ROOT目录里面去,容器加载/tomcat/webapps/ROOT目录的时候,实际就是用的www目录)

大家都知道docker run可以指定端口映射,但是容器一旦生成,就没有一个命令可以直接修改。通常间接的办法是,保存镜像,再创建一个新的容器,在创建时指定新的端口映射。

有没有办法不保存镜像而直接修改已有的这个容器呢?有。在stackoverflow上面找到答案了,原帖链接

分类
容器

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账号。下载镜像是必须登录的。

分类
Java 容器 笔记

系统部署与优化之Tomcat

tomcat是一个优秀的web容器,它出自apache,开源免费。对于使用java技术的中小企业来说,用得最多的应该就是它了。以下是自己布署时最基本的配置。

1.使用多实例
多实例是指,所有系统共用一个tomcat程序,而配置文件分开。这样的好处是便于管理,而且也可以共享私有的lib库。升级tomcat或lib库只需一次操作,不易出错。
使用多实例很简单,把tomcat复制出来,重命名如:instance,可以看到如下目前。删除除了conf目录中其他目录中的所有文件。在bin目录中写自己的启动脚本。

如果是linux系统,在bin目录下新建tomcat.sh文件,内容如下:

分类
容器 笔记

Centos环境下Tomcat启动缓慢

生产环境上tomcat用得好好的,突然启动变很慢,以前几十秒启动完的项目要十几分钟。而我们项目与项目之前有依赖,一次性要启动好几个项目。如果每个要十几分钟那还得了。这个问题以前有出现过,但也没在意。主要是在CentOS系统下出现的。另一台Debian服务器没有问题。
实在无法忍受了,在网上找到了解决办法,修改jre的配置。


我的jdk安装在/opt/jdk下,用vi打开:

vi /opt/jdk/jre/lib/security/java.security