# Install-docker-on-linux **Repository Path**: Gaiokane/Install-docker-on-linux ## Basic Information - **Project Name**: Install-docker-on-linux - **Description**: 在linux上安装docker等 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-09-21 - **Last Updated**: 2021-09-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## Docker的安装配置与应用 > # 目录 > > * [1. 安装前准备(*Linux*)](#1) > * [1.1 升级Bash](#1-1) > * [1.2 更新系统](#1-2) > > * [2. 安装*Docker*](#2) > * [2.1 安装Docker](#2-1) > > * [3. 配置*Docker*](#3) > * [3.1 配置Docker](#3-1) > * [3.2 配置Swarm](#3-1) > > * [4. 安装*Portainer*](#4) > * [4.1 安装web服务器(Nginx)(不需要)](#4-1) > * [4.2 安装web服务器(Apache)(不需要)](#4-2) > * [4.3 安装Portainer(使用阿里云镜像加速器)](#4-3) > > * [5. 配置*Portainer*](#5) > * [5.1 配置Portainer](#5-1) > > * [6. 使用*Portainer*快速部署](#6) > * [6.1 MariaDB](#6-1) > * [6.2 MySQL](#6-2) > * [6.3 Redis](#6-3) > * [6.4 MongoDB](#6-4) > * [6.5 WordPress](#6-5) > * [6.6 Microsoft SQLServer Linux(2017)](#6-6) > * [6.7 Microsoft SQLServer 2017](#6-7) > * [6.8 Microsoft SQLServer 2019](#6-8) > * [6.9 gitlab](#6-9) > * [6.10 jenkins](#6-10) > * [6.11 Caddy](#6-11) > * [6.12 CentOS7](#6-12) > * [6.13 OpenProject](#6-13) > * [6.14 禅道开源版](#6-14) > * [6.15 Speedtest(局域网内网速测试)](#6-15) > * [6.16 Nginx](#6-16)

1. 安装前准备(*Linux*)

本环境中使用**CentOS7**安装与配置Docker等软件。

1.1 升级Bash

##### 1.1.1 查看当前Bash版本 bash --version ##### 1.1.2 升级Bash > [Bash下载地址](http://ftp.gnu.org/gnu/bash/ "Bash下载地址") 此处以更新到Bash4.4为例 ```` cd mkdir bash && cd bash wget http://ftp.gnu.org/gnu/bash/bash-4.4.tar.gz tar -zxvf bash-4.4.tar.gz cd bash-4.4.tar.gz ./configure && make && make install ```` 安装完成后查看当前Bash版本 bash --version [返回目录](#home)

1.2 更新系统

yum -y update ##### 1.2.1 删除旧版内核 ```` #查看当前内核版本 uname -r #查看已安装的内核 rpm -q kernel #删除旧版内核 yum remove kernel-3.10.0-1062.el7.x86_64 ```` [返回目录](#home)

2. 安装*Docker*

2.1 安装Docker

##### 2.1.1 使用阿里云镜像源安装 [参考链接](https://developer.aliyun.com/mirror/docker-ce "Docker CE 镜像") ```` # step 1: 安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # Step 2: 添加软件源信息 sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # Step 3: 更新并安装Docker-CE sudo yum makecache fast sudo yum -y install docker-ce # Step 4: 开启Docker服务 sudo service docker start # Step 5: 设置Docker开机启动 systemctl enable docker.service # 注意: # 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。 # vim /etc/yum.repos.d/docker-ee.repo # 将[docker-ce-test]下方的enabled=0修改为enabled=1 # # 安装指定版本的Docker-CE: # Step 1: 查找Docker-CE的版本: # yum list docker-ce.x86_64 --showduplicates | sort -r # Loading mirror speeds from cached hostfile # Loaded plugins: branch, fastestmirror, langpacks # docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable # docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable # docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable # Available Packages # Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos) # sudo yum -y install docker-ce-[VERSION] ```` ##### 2.1.2 配置 Docker 镜像站 ###### 2.1.2.1 使用中国科技大学的docker镜像源 ```` #在/etc/docker/daemon.json文件中添加下面参数 #增加配置文件/etc/docker/daemon.json { "registry-mirrors" : ["https://docker.mirrors.ustc.edu.cn"] } #重启Docker生效 sudo systemctl restart docker ```` ###### 2.1.2.2 使用阿里云镜像加速器 ```` #登录阿里云并获取加速器地址 https://cr.console.aliyun.com/cn-shanghai/instances/mirrors #配置镜像加速器 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://你的加速器地址.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker ```` [返回目录](#home)

3. 配置*Docker*

3.1 配置Docker

> [docker docs](https://docs.docker.com/reference/ "docker docs") [返回目录](#home)

4. 安装*Portainer*

4.1 安装web服务器(Nginx)(不需要)

```` #安装必备组件 sudo yum install yum-utils #配置repo源 vim /etc/yum.repos.d/nginx.repo #粘贴以下内容 [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true #安装nginx sudo yum -y install nginx #启动nginx并设置开机启动 systemctl enable nginx.service systemctl start nginx.service #配置防火墙开启80端口 firewall-cmd --zone=public --add-port=80/tcp --permanent systemctl restart firewalld.service #nginx相关配置 #网站文件存放默认位置(Welcome to nginx 页面) /usr/share/nginx/html #网站默认站点配置 /etc/nginx/conf.d/default.conf #自定义nginx站点配置文件存放目录 /etc/nginx/conf.d/ #nginx 全局配置文件 /etc/nginx/nginx.conf #测试 nginx 配置 nginx -t #启动 nginx service nginx start #关闭 nginx service nginx stop #重启 nginx service nginx reload ```` [返回目录](#home)

4.2 安装web服务器(Apache)(不需要)

[返回目录](#home)

4.3 安装Portainer(使用阿里云镜像加速器)

```` docker volume create portainer_data docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer http://ip:9000 用户名密码admin 11111111 ```` [返回目录](#home)

5. 配置*Portainer*

5.1 配置Portainer

##### 5.1.1 Images 左侧列表选择Images DockerHub镜像地址 https://hub.docker.com/search?type=image 根据Tags中的版本,下载对应镜像,如输入:mariadb:latest [返回目录](#home)

6. 使用*Portainer*快速部署

6.1 MariaDB

拉取镜像(mariadb:latest) Containers->Add container Name:容器名 Image configuration > Registry:DockerHub > Image:mariadb:latest Network ports configuration Manual network port publishing->publish a new network port > host:外部访问端口,container:3306 Advanced container settings Env Environment variables->add environment variable > name:MYSQL_ROOT_PASSWORD,value:默认root密码 点击Deploy the container(确保firewall处于运行状态) [返回目录](#home)

6.2 MySQL

拉取镜像(mysql:5.7) Containers->Add container Name:容器名 Image configuration > Registry:DockerHub > Image:mysql:latest Network ports configuration Manual network port publishing->publish a new network port > host:外部访问端口,container:3306 Advanced container settings Env Environment variables->add environment variable > name:MYSQL_ROOT_PASSWORD,value:默认root密码 点击Deploy the container(确保firewall处于运行状态) [返回目录](#home)

6.3 Redis

拉取镜像(redis:latest) Containers->Add container Name:容器名 Image configuration > Registry:DockerHub > Image:redis:latest Network ports configuration Manual network port publishing->publish a new network port > host:外部访问端口,container:6379 点击Deploy the container(确保firewall处于运行状态) [返回目录](#home)

6.4 MongoDB

拉取镜像(mongo:lates) Containers->Add container Name:容器名 Image configuration > Registry:DockerHub > Image:mongo:latest Network ports configuration Manual network port publishing->publish a new network port > host:外部访问端口,container:27017 点击Deploy the container(确保firewall处于运行状态) [返回目录](#home)

6.5 WordPress

以Stack形式部署 首先拉取mysql(mysql:5.7)和wordpress(wordpress:latest)镜像 ````yml version: "2.4" services: mysql: image: mysql:5.7 ports: - "93:3306" volumes: - finallywordpress_data:/var/lib/mysql restart: always #container_name: mysql #指定容器名 environment: MYSQL_ROOT_PASSWORD: mysqlrootpwd MYSQL_DATABASE: db_wordpress MYSQL_USER: user_wordpress MYSQL_PASSWORD: pwd_wordpress wordpress: image: wordpress:latest #设置依赖(不会等mysql启动完成后再启动wordpress) #depends_on: # - mysql #链接到该容器 links: - mysql #- mysql:wordpressmysql #设置别名 ports: - "92:80" volumes: #将容器内容的目录挂在到外部(:左边同volumes中一样,右边容器中路径) - wordpress_data:/var/www/html restart: always #container_name: wordpress #指定容器名 environment: #WORDPRESS_DB_HOST: wordpressmysql:3306#使用别名,端口需为内部端口号 WORDPRESS_DB_HOST: mysql:3306 WORDPRESS_DB_USER: user_wordpress WORDPRESS_DB_PASSWORD: pwd_wordpress WORDPRESS_DB_NAME: db_wordpress volumes: finallywordpress_data: wordpress_data: ```` [返回目录](#home)

6.6 Microsoft SQLServer Linux(2017)

https://hub.docker.com/r/microsoft/mssql-server-linux https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-docker?view=sql-server-ver15&pivots=cs1-bash 拉取镜像(microsoft/mssql-server-linux:latest) Containers->Add container Name:容器名 Image configuration > Registry:DockerHub > Image:microsoft/mssql-server-linux:latest Network ports configuration Manual network port publishing->publish a new network port > host:外部访问端口,container:1433 Advanced container settings Env Environment variables->add environment variable #同意协议,必填 > name:ACCEPT_EULA,value:Y > #密码的长度必须至少为 8 个字符,并且必须包含以下四种字符中的三种:大写字母、小写字母、十进制数字和符号,必填 > name:SA_PASSWORD,value: 点击Deploy the container(确保firewall处于运行状态) 注意:使用Navicat连接mssql时,如有指定端口,主机需填成:ip,端口 [返回目录](#home)

6.7 Microsoft SQLServer 2017

https://hub.docker.com/_/microsoft-mssql-server 拉取镜像(mcr.microsoft.com/mssql/server:2017-latest) Containers->Add container Name:容器名 Image configuration > Registry:mcr.microsoft.com(在Registries中新增一个,URL:mcr.microsoft.com) > Image:mssql/server:2017-latest Network ports configuration Manual network port publishing->publish a new network port > host:外部访问端口,container:1433 Advanced container settings Env Environment variables->add environment variable #同意协议,必填 > name:ACCEPT_EULA,value:Y > #密码的长度必须至少为 8 个字符,并且必须包含以下四种字符中的三种:大写字母、小写字母、十进制数字和符号,必填 > name:SA_PASSWORD,value: 点击Deploy the container(确保firewall处于运行状态) 注意:使用Navicat连接mssql时,如有指定端口,主机需填成:ip,端口 [返回目录](#home)

6.8 Microsoft SQLServer 2019

https://hub.docker.com/_/microsoft-mssql-server 拉取镜像(mcr.microsoft.com/mssql/server:2019-latest) Containers->Add container Name:容器名 Image configuration > Registry:mcr.microsoft.com(在Registries中新增一个,URL:mcr.microsoft.com) > Image:mssql/server:2019-latest Network ports configuration Manual network port publishing->publish a new network port > host:外部访问端口,container:1433 Advanced container settings Env Environment variables->add environment variable #同意协议,必填 > name:ACCEPT_EULA,value:Y > #密码的长度必须至少为 8 个字符,并且必须包含以下四种字符中的三种:大写字母、小写字母、十进制数字和符号,必填 > name:SA_PASSWORD,value: 点击Deploy the container(确保firewall处于运行状态) 注意:使用Navicat连接mssql时,如有指定端口,主机需填成:ip,端口 [返回目录](#home)

6.9 gitlab

https://hub.docker.com/r/gitlab/gitlab-ce 拉取镜像(gitlab/gitlab-ce:latest) [返回目录](#home)

6.10 jenkins

https://hub.docker.com/r/jenkins/jenkins > 长期支持版本 (LTS):jenkins/jenkins:lts > LTS (长期支持) 版本每12周从常规版本流中选择,作为该时间段的稳定版本。 > > 每周更新版:jenkins/jenkins > 每周都会发布一个新版本,为用户和插件开发人员提供错误修复和功能。 新建数据卷 Volumes->Add volume > Name:数据卷名 点击Create the volume 拉取镜像(jenkins/jenkins:lts) Containers->Add container Name:容器名 Image configuration > Registry:DockerHub > Image:jenkins/jenkins:lts Network ports configuration Manual network port publishing->publish a new network port > host:外部访问端口,container:8080 > host:外部访问端口,container:50000 Advanced container settings Volumes Volume mapping->+map additional volume > container:/var/jenkins_home,volume:选择之前新建的Volume #需提前新建 点击Deploy the container(确保firewall处于运行状态) 浏览器打开ip:端口(容器内8080对应的外部端口) FAQ: > 问: > 打开Jenkins一直显示“Please wait while Jenkins is getting ready to work”的解决办法 > 答: > 网络问题导致 > 打开Volumes,复制之前新建Jenkins volume对应的Mount point,此处以/var/lib/docker/volumes/jenkins_data/_data为例 > ssh进宿主机 > ``` > vim /var/lib/docker/volumes/jenkins_data/_data/hudson.model.UpdateCenter.xml > ``` > 将第五行中的地址替换成: > ```` > https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json > ```` > 保存、退出、在Containers中重启容器 > 浏览器重新打开Jenkins显示登录页面 > 密码可以通过Containers->容器对应Quick actions下Logs中查看,在Please use the following password to proceed to installation:下面一行;或通过Containers->容器对应Quick actions下Exec Console->点击Connect,输入cat /var/jenkins_home/secrets/initialAdminPassword 查看密码 > 问: > Jenkins下载插件过慢 > 答: > 打开Volumes,复制之前新建Jenkins volume对应的Mount point,此处以/var/lib/docker/volumes/jenkins_data/_data为例 > ssh进宿主机 > ``` > cd /var/lib/docker/volumes/jenkins_data/_data/updates/ > > sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json > ``` > 保存、退出、在Containers中重启容器 [返回目录](#home)

6.11 Caddy

https://hub.docker.com/_/caddy 新建数据卷 Volumes->Add volume > Name:数据卷名 点击Create the volume,需要建两个,一个data,一个config 拉取镜像(caddy:latest) Containers->Add container Name:容器名 Image configuration > Registry:DockerHub > Image:caddy:latest Network ports configuration Manual network port publishing->publish a new network port > host:外部访问端口,container:80 Advanced container settings Volumes Volume mapping->+map additional volume > container:/usr/share/caddy,volume:选择之前新建的Volume #需提前新建 > container:/config,volume:选择之前新建的Volume #需提前新建 点击Deploy the container(确保firewall处于运行状态) [返回目录](#home)

6.12 CentOS7

https://hub.docker.com/_/centos 拉取镜像(centos:centos7) Containers->Add container Name:容器名 Image configuration > Registry:DockerHub > Image:centos:centos7 Advanced container settings Command & logging > Command:/usr/sbin/init 点击Deploy the container(确保firewall处于运行状态) 注意:使用Navicat连接mssql时,如有指定端口,主机需填成:ip,端口 [返回目录](#home)

6.13 OpenProject

https://hub.docker.com/r/openproject/community 拉取镜像(openproject/community:10) Containers->Add container Name:容器名 Image configuration > Registry:DockerHub > Image:openproject/community:10 Network ports configuration Manual network port publishing->publish a new network port > host:外部访问端口,container:80 Advanced container settings Volumes Volume mapping->+map additional volume > container:/var/lib/openproject/pgdata,volume:选择之前新建的Volume #需提前新建 > container:/var/lib/openproject/static,volume:选择之前新建的Volume #需提前新建 > Env Environment variables->add environment variable > name:SECRET_KEY_BASE,value:secret 点击Deploy the container(确保firewall处于运行状态) [返回目录](#home)

6.14 禅道开源版

> [官网文档](https://www.zentao.net/book/zentaopmshelp/405.html "官网文档") https://hub.docker.com/r/easysoft/zentao 拉取镜像(easysoft/zentao:latest)默认latest为禅道开源最新版本 Containers->Add container Name:容器名 Image configuration > Registry:DockerHub > Image:easysoft/zentao:latest Network ports configuration Manual network port publishing->publish a new network port > host:外部访问端口,container:80 Advanced container settings Volumes Volume mapping->+map additional volume > container:/app/zentaopms,volume:选择之前新建的Volume #需提前新建 > container:/app/mysqldata,volume:选择之前新建的Volume #需提前新建 > Env Environment variables->add environment variable > name:MYSQL_ROOT_PASSWORD,value:数据库密码 点击Deploy the container(确保firewall处于运行状态) [返回目录](#home)

6.15 Speedtest(局域网内网速测试)

> [官网GitHub](https://github.com/librespeed/speedtest "官网GitHub") https://hub.docker.com/r/adolfintel/speedtest 拉取镜像(adolfintel/speedtest:latest) Containers->Add container Name:容器名 Image configuration > Registry:DockerHub > Image:adolfintel/speedtest:latest Network ports configuration Manual network port publishing->publish a new network port > host:外部访问端口,container:80 点击Deploy the container(确保firewall处于运行状态) 注:若在虚拟机中部署的docker,且网络使用NAT,需要在虚拟机网络中配置端口转发 [返回目录](#home)

6.16 Nginx

6.16.1 拉取镜像

nginx:stable

6.16.2 部署前准备

新建数据卷 Volumes->Add volume > Name:nginx_file(数据卷名),存放nginx配置文件(nginx安装路径/etc/nginx) > Name:nginx_data(数据卷名),存放网站路径(nginx默认网站路径/usr/share/nginx) 点击Create the volume

6.16.3 开始部署

以Stack形式部署 ````yml web: image: nginx:stable #拉取的镜像Tag,若本地没有镜像,则拉取 #container_name: nginx #指定容器名 volumes: - nginx_file:/etc/nginx #:左侧为6.16.2中新建的数据卷名称,右侧为容器中对应路径 - nginx_data:/usr/share/nginx #:左侧为6.16.2中新建的数据卷名称,右侧为容器中对应路径 ports: - "107:80" #:左侧为外部访问端口,右侧为容器内端口 ```` [返回目录](#home)