存档

文章标签 ‘Docker’

迁移docker方式安装的gitlab-ce

2018年4月10日 没有评论

之前用Docker的方式在阿里云给公司部署了1台Gitlab CE,当时觉得部署起来很简单方便。这次公司要把这个git迁移会IDC,记录过程如下:

1.暂停老服务器的服务

docker stop gitlab

2.迁移数据

进入新服务器的/srv目录,sftp到老服务器,执行get –r /srv/gitlab /srv

-r参数会把整个目录都拿下来

3.新服务器启用安装docker

4.下载gitlab-ce镜像

5.运行容器

按照https://docs.gitlab.com/omnibus/docker/ 中 Run the Image章节运行。

6.迁移预处理

docker exec -it gitlab update-permissions
docker restart gitlab

再重启之后,重新对域名做解析,gitlab服务就正常了。

另,gitlab文档说更换image的版本,可以实现升级,有闲的兄弟可以试试,哈哈

分类: Docker, Git 标签: ,

给i686制作mariadb的docker镜像

2018年2月25日 没有评论

不知道Docker公司是怎么想的,明明其Dockerfile没有指定必须x64,却不提供i686的镜像,只好每次有新版本的时候,重新制作一次。步骤如下:

1.先从Docker公司的github里面获取最新的Dockerfile

git clone https://github.com/docker-library/mariadb.git

2.进入mariadb/10.2目录,然后执行

docker build –t mariadb:10.2.13 .

然后等着就好了。

建议开始之前,先把debian:jessie升级到最新,这样能省很多debian做apt update的时间。

分类: Docker, Linux, MySQL 标签: , ,

给docker中的mongodb开启权限

2017年12月27日 没有评论

先创建docker容器

docker run –name=mongodb -p 27017:27017 –restart=always -d mongo:3.6.0 –auth

在启动容器的bash

docker exec -it mongodb mongo admin

然后在提示符后执行

db.createUser({ user: ‘admin’, pwd: ‘admin’, roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });

说明:

  1. 使用的是docker官方的镜像
  2. 创建容器的时候,在最后要加—auth
  3. 执行创建管理用户的以后,登录会需要选择用户的管理库为admin
  4. 之后创建其他库的访问账号,也要在admin内创建账号,再分配其他库的权限。
分类: Docker 标签: ,

CentOS安装Docker-CE

2017年12月5日 没有评论

原本CentOS7里面的Docker是1.12版本的,没觉得很老,但是在自动化构建asp.net core的时候,不支持Dockerfile中的FROM AS语法,只好查一下CentOS7下怎么安装新的Docker-CE,如下:

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo

yum install docker-ce

systemctl start docker

目前安装的是17.09.0-ce版本

分类: Docker, Linux 标签: ,

当时用Docker运行GitLab时的非80端口HTTP服务

2017年11月28日 没有评论

我不知道多少人会像我一样在家里使用Docker来跑GitLab,如果真有,那么一定会与到和我一样的问题。我遇到的问题比较简单:宽带运营商不开放80端口,GitLab的Docker镜像默认只支持80端口。外网端口直接端口映射可以用,但是在gitlab的网站里面看到git的clone路径的端口是有问题的,或者地址也是内网的。

解决这个问题需要预先确定准备使用什么域名和端口。首先需要一个动态域名,老tp-link路由器可以使用花生壳,新的tp-link路由器可以用tp-link提供的动态域名,比如现在有一个叫 xx456.tpddns.cn的域名。然后需要确定使用什么端口,比如我映射在2080上。那么我们可以用如下的命令创建一个Docker容器:

docker run \
    -e GITLAB_OMNIBUS_CONFIG="external_url 'http://xx456.tpddns.cn:2080’;” \
    –p 22:22 –p 2080:2080 \
    --name gitlab \
    --restart always \
    -v /srv/docker/gitlab/config:/etc/gitlab \
    -v /srv/docker/gitlab/logs:/var/log/gitlab \
    -v /srv/docker/gitlab/data:/var/opt/gitlab \
    -d gitlab/gitlab-ce:latest

其中

  • 如果你不准备使用ssh访问gitlab里面的git的话,那个22端口的映射也可以去掉。
  • 环境变量GITLAB_MNIBUS_CONFIG里面的external_url就是gitlab提示的地址,gitlab会自动判断是使用http还是使用https,自动判断是使用默认端口,还是其中配置的接口。

现在LAN用ip访问一下,然后再在路由器上做外网2080端口到docker所在服务器192.168.1.2的2080端口的映射。这样无论以后在外网还是内网,都可以使用http://xx456.tpddns.cn:2080来访问这个docker容器中的gitlab了。

注意:不知道什么原因,这种方式做的gitlab容器,会比默认情况下创建的gitlab启动的要慢,也就是docker容器重启以后,由starting到health状态花费的时间要多,初步估计会多30%到50%,但是运行起来之后没有区别。

分类: Docker, Git 标签: ,

制作Archlinux32的docker镜像(image)

2017年11月23日 没有评论

docker hub里面的archlinux大部分是archlinux支持i686时期的镜像,目前archlinux不支持i686以后,这些镜像估计就不再支持i686了。我看了一些x86_64的镜像制作脚本,相当多的一部分都是直接用的其rootfs的tar来制作的,只有少数几种是直接从pacman获取包制作rootfs,挑了两种大牌的,如下:

1.在Moby的github的捐献里,有一个archlinux的制作完整base包的脚本,我把获取包的mirror服务器改成了Archlinux32在日本的服务器以后,在i686的环境里面制作成功并运行了一个Archlinux32。我整理的脚本在https://github.com/bh1rio/archlinux32-docker

2.另外一种方式是使用https://github.com/archlinux/archlinux-docker 的Makefile来直接用make的方式制作。这个不需要改Makefile,他是使用本机配置的mirror来获取包。惊喜是这个makefile可以制作rootfs。

对比两种方式,第二种方式的生成的包稍小,我怀疑有某些不必要的文件没有清理,不过还没有具体比较两个差异。

另,别问我为啥抱着i686玩docker:我给我的那个4盘位的小机器配好了Raid5,没理由扔到一边不管嘛

分类: Docker, Linux 标签: , ,

在Docker里面运行MS SQLServer 2017的Linux版本

2017年11月16日 没有评论

今天看见Docker的Hub里面的microsoft/mssql-server-linux已经升级到了2017-CU1,就顺手装了一个。可以用如下命令:

docker run –name mssql -e ‘ACCEPT_EULA=Y’ -e ‘SA_PASSWORD=‘ -e ‘MSSQL_PID=Standard’ -p 1433:1433 -d microsoft/mssql-server-linux:2017-CU1</yourstrong!passw0rd>

其中有意思的是MSSQL_PID这个参数,PID是Product ID (PID)或者版本的意思,可以送的参数包括:

Developer :开发版,默认值
Express :这个不用说了
Standard :标准版
Enterprise :企业版
EnterpriseCore :这个你们自己试试吧

01448D53赶快搞起来吧

CentOS的firewalld与docker有冲突

2017年7月25日 没有评论

我这里表现为容器映射到宿主的端口,没有被防火墙保护。防火墙能用,但是报错,如下:

[root@localhost ~]# systemctl status firewalld
● firewalld.service – firewalld – dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since 三 2017-07-26 00:42:31 CST; 7h left
     Docs: man:firewalld(1)
  Main PID: 760 (firewalld)
   Memory: 0B
   CGroup: /system.slice/firewalld.service
            └─760 /usr/bin/python -Es /usr/sbin/firewalld –nofork –nopid

7月 25 16:43:44 localhost.localdomain firewalld[760]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -t nat -C OUTPUT -m addrtype –dst-type LOCAL -j DOCKER ! –dst 127.0.0.0/8’ failed:
7月 25 16:43:44 localhost.localdomain firewalld[760]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -t filter -C FORWARD -o docker0 -j DOCKER’ failed:
7月 25 16:43:44 localhost.localdomain firewalld[760]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -t filter -C FORWARD -j DOCKER-ISOLATION’ failed:
7月 25 16:43:44 localhost.localdomain firewalld[760]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -t nat -C POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE’ failed:
7月 25 16:43:44 localhost.localdomain firewalld[760]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -t nat -C DOCKER -i docker0 -j RETURN’ failed:
7月 25 16:43:44 localhost.localdomain firewalld[760]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -D FORWARD -i docker0 -o docker0 -j DROP’ failed:
7月 25 16:43:44 localhost.localdomain firewalld[760]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -t filter -C FORWARD -i docker0 -o docker0 -j ACCEPT’ failed:
7月 25 16:43:44 localhost.localdomain firewalld[760]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -t filter -C FORWARD -i docker0 ! -o docker0 -j ACCEPT’ failed:
7月 25 16:43:44 localhost.localdomain firewalld[760]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -t filter -C FORWARD -o docker0 -m conntrack –ctstate RELATED,ESTABLISHED -j ACCEPT’ failed:
7月 25 16:43:44 localhost.localdomain firewalld[760]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -t filter -C FORWARD -o docker0 -j DOCKER’ failed:

分类: Linux 标签:

为SpringBoot做了一个Docker的Dockerfile

2017年7月25日 没有评论

话不多说,帖文件:

FROM java:openjdk-8u111-jdk

VOLUME /tmp

ADD springboot.jar app.jar

ENV JAVA_OPTS=""

ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -jar /app.jar" ]

分类: 未分类 标签:

ArchLinux上玩Docker

2016年11月18日 没有评论

先是收了一个群晖DS716+ii,玩了一下Docker,于是又在Arch上面玩。Docker确实好玩,作为沙箱环境,创建速度快了很多。下面是整理的资料:

Install Docker on Arch Linux:https://docs.docker.com/engine/installation/linux/archlinux/

分类: Linux 标签: ,