Dockerfile 封装

假想控 edited this page Nov 17, 2016 · 1 revision
一、环境

JMS 192.168.50.131 Centos-7.2-x86_64 mini

二、基本环境安装

[root@docker ~]# cd /opt

[root@docker opt]#yum -y install epel-release

[root@docker opt]#yum install -y git curl iptables-services

[root@docker opt]#systemctl stop iptables

[root@docker opt]#systemctl stop firewalld.service

三、安装docker
3.1 查看内核版本

[root@docker opt]# uname -r

3.10.0-327.el7.x86_64

建议内核版本3.10.0以上

3.2 执行安装docker命令

[root@docker opt]# curl –sSL https://get.docker.com/ | sh

[root@docker opt]# systemctl start docker

[root@docker opt]# systemctl enable docker

[root@docker opt]# docker -v

Docker version 1.12.3, build 6b644ec

3.3 执行安装docker-compose命令

[root@docker opt]# curl -L "https://github.com/docker/compose/releases/download/1.8.1/docker-compose-$(uname -s)-$(uname -m)" > /usr/local/bin/docker-compose

[root@docker opt]# docker-compose --version

docker-compose version 1.8.1, build 878cff1

四、安装mariadb
4.1 执行安装mariadb命令

[root@docker opt]# yum -y install mariadb-server mariadb-devel

[root@docker opt]# systemctl start mariadb.service

[root@docker opt]# systemctl enable mariadb.service

4.2 执行创建数据库jumpserver命令

[root@docker opt]# mysql -e "create database jumpserver charset='utf8';"

[root@docker opt]# mysql -e "grant all on jumpserver.* to 'jumpserver'@'192.168.50.131' identified by '5Lov@wife';"

[root@docker opt]# mysql -e "flush privileges;"

[root@docker opt]# mysql -e "show databases;"

五、克隆
5.1 执行克隆jumpserver命令

[root@docker opt]# git clone https://github.com/jumpserver/jumpserver.git

5.2 编辑docker-compose.yaml

[root@docker opt]# cd jumpserver

[root@docker jumpserver]# vim docker-compose.yaml


version: '2' 
services: 
  jumpserver: 
    build: . 
    container_name: jumpserver 
    restart: always 
    ports: 
      - "8888:80" 
      - "2222:22" 
    environment: 
      - USE_MYSQL=true 
      - MYSQL_ENGINE=mysql 
      - MYSQL_HOST=192.168.50.131 
      - MYSQL_PORT=3306 
      - MYSQL_USER=jumpserver 
      - MYSQL_PASS=5Lov@wife 
      - MYSQL_NAME=jumpserver 
      - USE_MAIL=true 
      - MAIL_ENABLED=1 
      - MAIL_HOST=smtp.163.com 
      - MAIL_PORT=25 
      - MAIL_USER=jumpserver@163.com 
      - MAIL_PASS=123456 
      - MAIL_USE_TLS=False 
      - MAIL_USE_SSL=False 
注:

使用MySQL数据库要去掉所有‘#’号注释,(使用SQLite数据库就不需要去掉‘#’号注释,也无需四、安装mariadb)红色部分是要根据实际情况做相应修改

其中
  • "8888:80" 将宿主机的8888端口映射到容器80端口

  • "2222:22" 将宿主机的2222端口映射到容器22端口

六、封装
6.1 执行封装docker-compose命令

[root@docker jumpserver]# docker-compose up -d

webterminal

注:

这步下载很耗时,有可能会假死状态,所以多尝试执行几次

webterminal

6.2 列出本地所有镜像

[root@docker jumpserver]# docker images

webterminal

6.3 列出正在运行的容器

[root@docker jumpserver]# docker ps

webterminal

6.4 登录容器,从6.3可以看出容器ID为f89e5b403db4,shell为/bin/sh

[root@docker jumpserver]# docker exec -it f89e5b403db4 /bin/sh

webterminal

6.5 配置jumpserver.conf 中url = 172.18.0.2

/jumpserver # vi jumpserver.conf

webterminal

6.6 访问 192.168.50.131:8888 登录,默认用户:admin 密码:admin

webterminal

webterminal

七、设置用ssh登录容器
7.1 在容器上创建.ssh目录

/jumpserver # cd ~ && mkdir .ssh && chmod 700 .ssh && cd .ssh

webterminal

7.2 在宿主机上生成key

[root@docker jumpserver]# cd ~/.ssh/

[root@docker .ssh]# ssh-keygen -t rsa

webterminal

7.3 将公共钥匙文件cp到容器的.ssh目录下

[root@docker .ssh]# docker cp id_rsa.pub f89e5b403db4:/root/.ssh

webterminal

7.4 在容器上将公钥加到authorized_keys文件中

~/.ssh # cat id_rsa.pub >> authorized_keys

webterminal

7.5 在宿主机上用ssh登录容器

[root@docker .ssh]# ssh -p 2222 root@192.168.50.131

webterminal