初始化
This commit is contained in:
142
doc/生产环境/docker/Docker Compose 安装与卸载.md
Normal file
142
doc/生产环境/docker/Docker Compose 安装与卸载.md
Normal file
@@ -0,0 +1,142 @@
|
||||
`Compose` 支持 Linux、macOS、Windows 10 三大平台。
|
||||
|
||||
`Compose` 可以通过 Python 的包管理工具 `pip` 进行安装,也可以直接下载编译好的二进制文件使用,甚至能够直接在 Docker 容器中运行。
|
||||
|
||||
前两种方式是传统方式,适合本地环境下安装使用;最后一种方式则不破坏系统环境,更适合云计算场景。
|
||||
|
||||
`Docker for Mac` 、`Docker for Windows` 自带 `docker-compose` 二进制文件,安装 Docker 之后可以直接使用。
|
||||
|
||||
```bash
|
||||
$ docker-compose --version
|
||||
|
||||
docker-compose version 1.17.1, build 6d101fb
|
||||
```
|
||||
|
||||
Linux 系统请使用以下介绍的方法安装。
|
||||
|
||||
## 安装方法一:二进制包
|
||||
|
||||
在 Linux 上的也安装十分简单,从 [官方 GitHub Release](https://github.com/docker/compose/releases) 处直接下载编译好的二进制文件即可。
|
||||
|
||||
例如,在 Linux 64 位系统上直接下载对应的二进制包。
|
||||
|
||||
```bash
|
||||
$ sudo curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
|
||||
$ sudo chmod +x /usr/local/bin/docker-compose
|
||||
```
|
||||
|
||||
## 安装方法二:PIP 安装
|
||||
|
||||
*注:* `x86_64` 架构的 Linux 建议按照上边的方法下载二进制包进行安装,如果您计算机的架构是 `ARM`(例如,树莓派),再使用 `pip` 安装。
|
||||
|
||||
这种方式是将 Compose 当作一个 Python 应用来从 pip 源中安装。
|
||||
|
||||
1、安装python-pip
|
||||
|
||||
```bash
|
||||
yum -y install epel-release
|
||||
|
||||
yum -y install python-pip
|
||||
```
|
||||
|
||||
|
||||
执行安装命令:
|
||||
|
||||
```bash
|
||||
pip install -U docker-compose
|
||||
```
|
||||
|
||||
可以看到类似如下输出,说明安装成功。
|
||||
|
||||
```bash
|
||||
Collecting docker-compose
|
||||
Downloading docker-compose-1.17.1.tar.gz (149kB): 149kB downloaded
|
||||
...
|
||||
Successfully installed docker-compose cached-property requests texttable websocket-client docker-py dockerpty six enum34 backports.ssl-match-hostname ipaddress
|
||||
```
|
||||
|
||||
查看版本号
|
||||
```
|
||||
docker-compose version
|
||||
```
|
||||
|
||||
bash 补全命令
|
||||
|
||||
将对应版本号的docker-compose补全如:下面的`1.8.0`替换成 `1.24.1`
|
||||
|
||||
```bash
|
||||
$ curl -L https://raw.githubusercontent.com/docker/compose/1.8.0/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
|
||||
```
|
||||
|
||||
|
||||
|
||||
## 容器中执行
|
||||
|
||||
Compose 既然是一个 Python 应用,自然也可以直接用容器来执行它。
|
||||
|
||||
```bash
|
||||
$ curl -L https://github.com/docker/compose/releases/download/1.8.0/run.sh > /usr/local/bin/docker-compose
|
||||
$ chmod +x /usr/local/bin/docker-compose
|
||||
```
|
||||
|
||||
实际上,查看下载的 `run.sh` 脚本内容,如下
|
||||
|
||||
```bash
|
||||
set -e
|
||||
|
||||
VERSION="1.8.0"
|
||||
IMAGE="docker/compose:$VERSION"
|
||||
|
||||
|
||||
# Setup options for connecting to docker host
|
||||
if [ -z "$DOCKER_HOST" ]; then
|
||||
DOCKER_HOST="/var/run/docker.sock"
|
||||
fi
|
||||
if [ -S "$DOCKER_HOST" ]; then
|
||||
DOCKER_ADDR="-v $DOCKER_HOST:$DOCKER_HOST -e DOCKER_HOST"
|
||||
else
|
||||
DOCKER_ADDR="-e DOCKER_HOST -e DOCKER_TLS_VERIFY -e DOCKER_CERT_PATH"
|
||||
fi
|
||||
|
||||
|
||||
# Setup volume mounts for compose config and context
|
||||
if [ "$(pwd)" != '/' ]; then
|
||||
VOLUMES="-v $(pwd):$(pwd)"
|
||||
fi
|
||||
if [ -n "$COMPOSE_FILE" ]; then
|
||||
compose_dir=$(dirname $COMPOSE_FILE)
|
||||
fi
|
||||
# TODO: also check --file argument
|
||||
if [ -n "$compose_dir" ]; then
|
||||
VOLUMES="$VOLUMES -v $compose_dir:$compose_dir"
|
||||
fi
|
||||
if [ -n "$HOME" ]; then
|
||||
VOLUMES="$VOLUMES -v $HOME:$HOME -v $HOME:/root" # mount $HOME in /root to share docker.config
|
||||
fi
|
||||
|
||||
# Only allocate tty if we detect one
|
||||
if [ -t 1 ]; then
|
||||
DOCKER_RUN_OPTIONS="-t"
|
||||
fi
|
||||
if [ -t 0 ]; then
|
||||
DOCKER_RUN_OPTIONS="$DOCKER_RUN_OPTIONS -i"
|
||||
fi
|
||||
|
||||
exec docker run --rm $DOCKER_RUN_OPTIONS $DOCKER_ADDR $COMPOSE_OPTIONS $VOLUMES -w "$(pwd)" $IMAGE "$@"
|
||||
```
|
||||
|
||||
可以看到,它其实是下载了 `docker/compose` 镜像并运行。
|
||||
|
||||
## 卸载
|
||||
|
||||
如果是二进制包方式安装的,删除二进制文件即可。
|
||||
|
||||
```bash
|
||||
rm /usr/local/bin/docker-compose
|
||||
```
|
||||
|
||||
如果是通过 `pip` 安装的,则执行如下命令即可删除。
|
||||
|
||||
```bash
|
||||
pip uninstall docker-compose
|
||||
```
|
||||
90
doc/生产环境/docker/docker centos 安装.md
Normal file
90
doc/生产环境/docker/docker centos 安装.md
Normal file
@@ -0,0 +1,90 @@
|
||||
## 安装 Docker
|
||||
从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Docker EE。
|
||||
|
||||
Docker CE 即社区免费版,Docker EE 即企业版,强调安全,但需付费使用。
|
||||
|
||||
本文介绍 Docker CE 的安装使用。
|
||||
|
||||
移除旧的版本:
|
||||
|
||||
```
|
||||
$ sudo yum remove docker \
|
||||
docker-client \
|
||||
docker-client-latest \
|
||||
docker-common \
|
||||
docker-latest \
|
||||
docker-latest-logrotate \
|
||||
docker-logrotate \
|
||||
docker-selinux \
|
||||
docker-engine-selinux \
|
||||
docker-engine
|
||||
```
|
||||
|
||||
安装一些必要的系统工具:
|
||||
|
||||
```
|
||||
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
|
||||
```
|
||||
|
||||
添加软件源信息:
|
||||
|
||||
```
|
||||
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
|
||||
```
|
||||
|
||||
更新 yum 缓存:
|
||||
|
||||
```
|
||||
sudo yum makecache fast
|
||||
```
|
||||
|
||||
安装 Docker-ce:
|
||||
|
||||
```
|
||||
sudo yum -y install docker-ce
|
||||
```
|
||||
|
||||
查看已安装docker版本
|
||||
```
|
||||
docker version
|
||||
```
|
||||
|
||||
启动 Docker 后台服务
|
||||
|
||||
```
|
||||
sudo systemctl start docker
|
||||
```
|
||||
|
||||
开机启动
|
||||
|
||||
```
|
||||
systemctl enable docker
|
||||
```
|
||||
|
||||
|
||||
## 镜像加速
|
||||
鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,推荐使用的是docker官方推荐的中国镜像地址:https://registry.docker-cn.com
|
||||
|
||||
新版的 Docker 使用 `/etc/docker/daemon.json`(Linux,没有请新建)。
|
||||
|
||||
请在该配置文件中加入(没有该文件的话,请先建一个):
|
||||
```javascript
|
||||
{
|
||||
"registry-mirrors": ["https://registry.docker-cn.com"]
|
||||
}
|
||||
```
|
||||
|
||||
重启docker
|
||||
|
||||
```
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl restart docker
|
||||
```
|
||||
|
||||
### 检查加速器是否生效
|
||||
|
||||
配置加速器之后,如果拉取镜像仍然十分缓慢,请手动检查加速器配置是否生效,在命令行执行 `docker info`,如果从结果中看到了如下内容,说明配置成功。
|
||||
```
|
||||
Registry Mirrors:
|
||||
https://registry.docker-cn.com/
|
||||
```
|
||||
41
doc/生产环境/docker/docker 容器的基本操作.md
Normal file
41
doc/生产环境/docker/docker 容器的基本操作.md
Normal file
@@ -0,0 +1,41 @@
|
||||
## Docker 获取镜像
|
||||
|
||||
之前提到过,[Docker Hub](https://hub.docker.com/) 上有大量的高质量的镜像可以用,这里我们就说一下怎么获取这些镜像。
|
||||
|
||||
从 Docker 镜像仓库获取镜像的命令是 `docker pull`。其命令格式为:
|
||||
```
|
||||
# docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
|
||||
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
|
||||
|
||||
```
|
||||
|
||||
具体的选项可以通过 docker pull --help 命令看到,这里我们说一下镜像名称的格式。
|
||||
|
||||
- Docker 镜像仓库地址:地址的格式一般是 <域名/IP>[:端口号]。默认地址是 Docker Hub。
|
||||
- 仓库名:如之前所说,这里的仓库名是两段式名称,即 <用户名>/<软件名>。对于 Docker Hub,如果不给出用户名,则默认为 library,也就是官方镜像。
|
||||
比如:
|
||||
```
|
||||
# 向docker拉取,最小化的jre 1.8的运行环境(anapsix/alpine-java 项目名称name,8_server-jre_unlimited为标签tag)
|
||||
docker pull anapsix/alpine-java:8_server-jre_unlimited
|
||||
```
|
||||
|
||||
|
||||
从下载过程中可以看到我们之前提及的分层存储的概念,镜像是由多层存储所构成。下载也是一层层的去下载,并非单一文件。下载过程中给出了每一层的 ID 的前 12 位。并且下载结束后,给出该镜像完整的 sha256 的摘要,以确保下载一致性。
|
||||
|
||||
### 查看已下载镜像列表
|
||||
`docker images` 或 `docker image ls`
|
||||
|
||||
```
|
||||
[root@localhost ~]# docker images
|
||||
REPOSITORY TAG IMAGE ID CREATED SIZE
|
||||
anapsix/alpine-java 8_server-jre_unlimited 49d744fbb526 5 months ago 126MB
|
||||
```
|
||||
|
||||
### 删除镜像
|
||||
`docker image rm IMAGE_ID|NAME [IMAGE_ID|NAME...]` 或 `docker rmi IMAGE_ID|NAME [IMAGE_ID|NAME...]`
|
||||
|
||||
### 清空虚悬镜像
|
||||
|
||||
docker在构建了一个新的镜像(名字和tag都一样的)之后,旧的那个镜像就会变成一个虚悬镜像(旧的镜像就没有名字了),此时旧的镜像就没啥用了,可以一件清空
|
||||
|
||||
`docker image prune`
|
||||
41
doc/生产环境/docker/docker 镜像的基本操作.md
Normal file
41
doc/生产环境/docker/docker 镜像的基本操作.md
Normal file
@@ -0,0 +1,41 @@
|
||||
## Docker 获取镜像
|
||||
|
||||
之前提到过,[Docker Hub](https://hub.docker.com/) 上有大量的高质量的镜像可以用,这里我们就说一下怎么获取这些镜像。
|
||||
|
||||
从 Docker 镜像仓库获取镜像的命令是 `docker pull`。其命令格式为:
|
||||
```
|
||||
# docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
|
||||
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
|
||||
|
||||
```
|
||||
|
||||
具体的选项可以通过 docker pull --help 命令看到,这里我们说一下镜像名称的格式。
|
||||
|
||||
- Docker 镜像仓库地址:地址的格式一般是 <域名/IP>[:端口号]。默认地址是 Docker Hub。
|
||||
- 仓库名:如之前所说,这里的仓库名是两段式名称,即 <用户名>/<软件名>。对于 Docker Hub,如果不给出用户名,则默认为 library,也就是官方镜像。
|
||||
比如:
|
||||
```
|
||||
# 向docker拉取,最小化的jre 1.8的运行环境(anapsix/alpine-java 项目名称name,8_server-jre_unlimited为标签tag)
|
||||
docker pull anapsix/alpine-java:8_server-jre_unlimited
|
||||
```
|
||||
|
||||
|
||||
从下载过程中可以看到我们之前提及的分层存储的概念,镜像是由多层存储所构成。下载也是一层层的去下载,并非单一文件。下载过程中给出了每一层的 ID 的前 12 位。并且下载结束后,给出该镜像完整的 sha256 的摘要,以确保下载一致性。
|
||||
|
||||
### 查看已下载镜像列表
|
||||
`docker images` 或 `docker image ls`
|
||||
|
||||
```
|
||||
[root@localhost ~]# docker images
|
||||
REPOSITORY TAG IMAGE ID CREATED SIZE
|
||||
anapsix/alpine-java 8_server-jre_unlimited 49d744fbb526 5 months ago 126MB
|
||||
```
|
||||
|
||||
### 删除镜像
|
||||
`docker image rm IMAGE_ID|NAME [IMAGE_ID|NAME...]` 或 `docker rmi IMAGE_ID|NAME [IMAGE_ID|NAME...]`
|
||||
|
||||
### 清空虚悬镜像
|
||||
|
||||
docker在构建了一个新的镜像(名字和tag都一样的)之后,旧的那个镜像就会变成一个虚悬镜像(旧的镜像就没有名字了),此时旧的镜像就没啥用了,可以一件清空
|
||||
|
||||
`docker image prune`
|
||||
15
doc/生产环境/docker/使用docker部署商城.md
Normal file
15
doc/生产环境/docker/使用docker部署商城.md
Normal file
@@ -0,0 +1,15 @@
|
||||
> 在阅读本章节前,我们回认为您已经会安装并且使用docker,如果您不会安装使用docker的话,请阅读相关章节
|
||||
|
||||
|
||||
|
||||
**如果无法理解我们所编写的 `Dockerfile`强烈的不推荐使用docker进行生产环境部署!!!**
|
||||
|
||||
0. 将整个项目上传到centos中,进入到项目根目录
|
||||
1. 安装 `docker` (参考《docker centos 安装》)
|
||||
2. 安装`docker-compose`(参考《Docker Compose 安装与卸载》)
|
||||
3. 安装`open-jdk17`(参考《centos jdk安装》)
|
||||
4. 安装`maven`(参考《通过yum安装maven》)
|
||||
5. 使用 `mvn clean package -DskipTests` 命令进行打包
|
||||
6. 使用 `docker-compose up` 启动项目
|
||||
7. 使用nginx将请求指向特定的端口。
|
||||
|
||||
14
doc/生产环境/docker/通过yum安装maven.md
Normal file
14
doc/生产环境/docker/通过yum安装maven.md
Normal file
@@ -0,0 +1,14 @@
|
||||
安装maven的前提是安装jdk,参考《linux jdk安装》
|
||||
|
||||
```bash
|
||||
// 使用配置工具配置第三方epel源仓库
|
||||
yum-config-manager --add-repo http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo
|
||||
yum-config-manager --enable epel-apache-maven
|
||||
// 安装maven
|
||||
yum install -y apache-maven
|
||||
// 验证maven,验证是否为Oracle字样,默认有版本输出
|
||||
mvn -version
|
||||
//最后确认下yum源地址有没被误改
|
||||
yum repolist
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user