Docker使用

1 docker操作

为了保障系统环境的容灾能力,交易系统是部署在 docker 容器中。docker 容器在 Centos 的系统基础上创建了一个新的运行环境,在 docker 内部的基本操作和在 Centos 中相同。使用 docker 容器, 在同一台机器运行多个隔离而互不干扰的交易环境,同时可以方便的备份和升级。

1.1 docker安装

列出docker镜像

$ docker images

使用镜像创建容器 使用docker images创建docker容器,其中—name为docker容器名称,-v为文件目录映射,kungfu为docker images名称,/usr/sbin/init为容器启动时初始化systemd服务, 还有其他根据需要添加的参数有:–ulimit memlock=-1限制内存,–privileged提升权限,–net=host桥接到本地,-td,后台运行,-p端口映射,如果需要使用前端则需要将宿主端口映射到容器23333端口。

$ docker run –name test_dev –v /shared/docker/test_dev: /shared:rw kungfu  /usr/sbin/init

表示使用kungfu docker镜像创建一个名字为test_dev的docker容器,并且将宿主机的/shared/docker/test_dev目录映射为容器的/shared目录。

$ docker run --name test_dev --ulimit memlock=-1 --privileged -td -p 4333:23333 -v /usr/sbin/ifconfig
:/usr/sbin/ifconfig:ro -v /etc/localtime:/etc/localtime -v /shared/docker/test_dev:/shared:rw  docker.taurusai.com:5000/kungfu /user/sbin/init

进入docker容器 由于交易系统部署在docker中,要在前台使用交易系统就需要先进入docker。进入docker的步骤如下: 首先登陆到主机的CentOS系统中,然后执行以下命令:

$ docker exec –it $(docker_name) bash

如果不知道系统中运行的docker,可以使用如下命令查看:

$ docker –ps

docker容器和主机之间通过目录映射实现文件共享, 主机上目录为 /shared/docker/$(docker_name),映射在docker容器中为 /shared/ 目录。如果需要传输策略文件或者其他文件到docker容器使用,可以将文件上传到主机 /shared/docker/$(docker_name) 目录下即可在docker的 /shared/ 目录中使用上传文件。

2 docker 备份与迁移

如需将现有交易环境迁移到其他交易机器中,可以使用docker工具,整体迁移交易系统。

$ docker images
REPOSITORY                          TAG                 IMAGE ID            CREATED             SIZE
kungfu                              latest              b3c4136e81f3        5 months ago        2.651 GB
docker commit demo kungfu_backup
sha256:ede68019bdf02dd6f52036c4947cf276a59f55cb1684e3236106f8c83ae8b57f
$ docker images
REPOSITORY                          TAG                 IMAGE ID            CREATED             SIZE
kungfu_backup                       latest              ede68019bdf0        19 seconds ago      3.592 GB
kungfu                              latest              b3c4136e81f3        5 months ago        2.651 GB
$ docker save kungfu_backup > kungfu_backup.tar
//然后将kungfu_backup.tar文件移动到目标机器中,在目标机器中kungfu_backup.tar文件所在目录继续如下操作
$ docker import kungfu_backup.tar
$ docker run --name demo_backup --ulimit memlock=-1 --privileged --net=host -td -v /usr/sbin/ifconfig:/usr/sbin/ifconfig:ro -v /etc/localtime:/etc/localtime -v /shared/docker/demo_backup:/shared:rw kungfu_backup  /usr/sbin/init
5630582584ffec59391c0db686c4eb5fae569945c433e3752f3dc401b469714f
[qliu@client51 ~]$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                           NAMES
5630582584ff        kungfu_backup       "/usr/sbin/init"    5 seconds ago       Up 4 seconds                                                        demo_backup