记一次Dokcer环境搭建

394 阅读4分钟

一、JDK的安装

  1. 下载jdk1.8到指定目录 (/usr/local/jdk/jdk1.8)
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie"  http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz
  1. 解压缩
tar -zxvf jdk-8u131-linux-x64.tar.gz
  1. 配置环境变量
vi /etc/profile
  1. 在profile文件中追加以下内容
export JAVA_HOME=/usr/local/jdk1.8   -- 此处为你自己的jdk安装目录
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
  1. 重新是profile文件生效
source /etc/profile
  1. 使用 java -version 命令验证; 使用 echo $JAVA_HOME 查看配置后 JAVA_HOME 变量

二、安装Docker

  1. 若已经安装了旧版本,则先卸载
$ sudo yum remove docker \
                  docker-client \e
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
  1. 安装方法:

    • 大多数用户会设置Docker的存储库并从中进行安装,以简化安装和升级任务。这是推荐的方法
    • 一些用户下载并手动安装RPM软件包,并完成手动管理升级,这在诸如在无法访问互联网的空白系统上安装Docker的情况下非常有用。
    • 在测试和开发环境中,一些用户选择使用自动化便利脚本来安装Docker。
  2. 使用存储库安装: 在新主机上安装Docker Engine之前,需要设置Docker存储库。之后,您可以从存储库安装和更新Docker。

    1. 设置存储库
    $ sudo yum install -y yum-utils
    
    $ sudo yum-config-manager \
        --add-repo \
        https://download.docker.com/linux/centos/docker-ce.repo
    
    1. 安装Docker引擎
    $ sudo yum install docker-ce docker-ce-cli containerd.io
    
    1. 启动Docker
    $ sudo systemctl start docker
    
    1. 设置 开机启动,下面两钟方式都可以
    $ sudo systemctl enable docker
    
    $ sudo chkconfig docker on
    
    1. 为了保证服务器磁盘不被Docker日志打满,所以在这种情况下,我们有必要限制容器日志大小

      1. 执行以下命令,如果没有 daemon.json 文件,将会自动创建。
      vi /etc/docker/daemon.json 
      
      1. 在daemon.json文件内添加以下内容
      {
       "registry-mirrors": ["https://4s5a1mbp.mirror.aliyuncs.com"],
       "log-driver":"none",
       "insecure-registries":["hub.mycompany.com"]
      }
      
      • registry-mirrors为配置阿里云镜像地址
      • insecure-registries为我们的私有仓库地址,如果不配置私有仓库地址,我们在使用推送自己的镜像到私有仓库会发生错误
      • log-driver 设为none,docker容器将不会输出日志,防止磁盘很快被打满(是否为必须配置视情况而定)
    2. 加载配置文件并重启

    systemctl daemon-reload
    systemctl restart docker
    
    1. 默认情况下,使用docker run命令, docker会随机分配一个内网地址,以172.17开头,但随着容器删除,在运行该镜像时ip地址发生变化,如果需要固定ip,根据我们的情况,我们在docker主机上新建一个网络。(以下命令,设置了以 172.16开发的网段)
    docker network create  --gateway 172.16.1.1 --subnet 172.16.1.0/24 app
    

    ​ 使用以下命令可以查看我们新建的网络

    docker network ls
    
    NETWORK ID          NAME                DRIVER              SCOPE
    5df024ae25e2        app                 bridge              local
    16cf9a89827f        bridge              bridge              local
    ba0975753843        host                host                local
    557cd83e2872        none                null                local
    
    

三、安装docker-compose

  1. 执行以下命令安装
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  1. 将可执行权限应用于二进制文件:
sudo chmod +x /usr/local/bin/docker-compose
  1. 测试安装
$ docker-compose --version

docker-compose version 1.27.1, build 1110ad01
  1. 修改服务器hosts文件中配置,添加如下内容: 公司Docker的镜像仓库IP 以及 域名
vi  /etc/hosts
10.123.123.123 harbor.mycompany.com

​ 根据提示输入用户名和密码登录

四、安装 Git

yum install git
  1. 拉取项目代码
git clone 代码托管地址
  1. 切换到目标分支
git checkout -b dev/1.0.1 remotes/origin/dev/1.1.0

五、安装MySQL数据库

  1. 执行以下命令
docker run -p 3306:3306  --restart=always  --net   app --ip  172.16.1.6 -e TZ=Asia/Shanghai   -v=/docker/mysql/conf/my.cnf:/etc/my.cnf -v=/docker/mysql/data:/var/lib/mysql --name mysql5.7 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
  1. 备注:
    • 使用数据库客户端测试连接,使用的IP为宿主机的IP。
    • 容器间通讯的时候,通过 --ip 172.16.1.6 指定的 ip 将作为 容器间通讯的 ip 地址。
  2. 参数说明
-p 3306:3306				指定端口映射 ,   宿主机端口:容器端口
--restart=always   		    当 Docker 重启时,容器自动启动	
--net   app  				指定容器的网络连接类型,app是我们在之前的步骤中创建的内网
--ip 172.16.1.6				指定docker容器的内网ip
-e TZ=Asia/Shanghai			 -e 设置环境变量;指定mysql的时区
-v=/docker/mysql/conf/my.cnf:/etc/my.cnf      指定MySQL容器内的配置文件挂载到宿主机的目录
-v=/docker/mysql/data:/var/lib/mysql		  指定MySQL容器内的数据挂载到宿主机的目录
-e MYSQL_ROOT_PASSWORD=123456   			  -e 设置环境变量;此处为设置MySQL的root用户密码
-d 							后台运行mysql容器,并且返回容器id
--name mysql5.7             指定容器名称

六、安装nginx服务器

  1. 执行以下命令(启动参数解释同MySQL步骤)
docker run  -p 80:80 --restart=always  --net app --ip 172.16.1.5     --name nginx  -v /docker/nginx/html:/usr/share/nginx/html  -v /docker/nginx/config:/etc/nginx/conf.d -v  /docker/nginx/logs:/var/log/nginx/  -d nginx
  1. -v /docker/nginx/html:/usr/share/nginx/html 指定挂载到的宿主机地址/docker/nginx/html下,该目录为前端项目的部署目录。
  2. 修改nginx的配置文件,可直接在宿主机挂载到的目录进行修改(需要配置路径, 代理等),如下:
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

   location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

   location /data {
        root /usr/share/nginx/html;
   }
     location /prod {
      root /usr/share/nginx/html;
      index index.html index.htm;
    }

    
     location /test {
      root /usr/share/nginx/html;
      index index.html index.htm;
    }



   
      location /prod {
       proxy_pass http://prod:8091/prefix;
    }
    
    
    location /test {
       proxy_pass http://test:8091/prefix;
    }





    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

七、安装maven

  1. 下载你需要的版本(本文安装的为3.6.3) maven.apache.org/download.cg…
  2. 创建你需要安装到的目标目录,并将你下载的压缩包上传到指定目录
mkdir /usr/local/maven

  1. 执行命令,解压缩文件,解压完成后下载的压缩文件
tar zxvf apache-maven-3.6.3-bin.tar.gz

  1. 编辑配置文件,设置本地仓库地址和远程仓库地址
<!-- 设置仓库地址 -->
<localRepository>/usr/local/maven/repository</localRepository>

<!--阿里云镜像仓库 -->
 <mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>central</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
 </mirror>
  1. 配置maven的环境变量

    1. 修改环境变量
    vi /etc/profile
    
    
    1. 追加以下内容
    MAVEN_HOME=/usr/local/maven/apache-maven-3.6.3
    export MAVEN_HOME
    export PATH=${PATH}:${MAVEN_HOME}/bin
    
    
    
    1. 保存
    source /etc/profile
    
    
    1. 查看版本
    mvn -version
    
    

八、安装Jenkins

  1. 使用war包安装,在Jenkins war包所在的目录指定的目录
nohup java -jar jenkins.war --httpPort=8081

  1. 安装完成后,如果访问不到,可能是端口未开放导致的
  2. Jenkins安装完成后,一般需要安装一些插件,比如maven插件,docker插件,docker compose插件。

九、一些需要配置的额外信息

  1. 项目分为开发和测试环境,当我们使用Jenkins发布开发环境的时候,会自动创建镜像并且推送到公司的镜像仓库,我们在测试环境,使用docker compose命令指定配置文件,部署项目

  2. 第一次发布项目后,项目无法连接到数据库,因为 项目容器 和 MySQL容器 之间属于docker的容器通信,但是项目中配置的数据库IP为宿主机的IP地址,所以造成无法访问数据库

  3. 在docker compose文件中配置 域名 和 IP 映射 , 如下:

     extra_hosts:
          - "gold.mysql.com:172.16.1.6"
          - "gold.minio.com:172.16.1.4"
    
    

    gold.mysql.com:域名,可以在 直接使用 该域名 替代配置中的数据库地址

    172.16.1.6: MySQL在docker内网中 IP 地址