Docker&Docker-compose的安装及部署
Docker&Docker-compose的安装及配置一、Docker的安装与配置安装基于Linux CentOS_7.9cat /etc/redhat-release# 查看CentOS版本docker版本20.10.12docker --version# 查看docker版本1.1 Docker介绍Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0
Docker&Docker-compose的安装及配置
一、Docker的安装与配置
安装基于Linux CentOS_7.9
cat /etc/redhat-release # 查看CentOS版本
docker版本20.10.12
docker --version # 查看docker版本
1.1 Docker介绍
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 能够将应用程序与基础架构分开,从而可以快速交付软件。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
1.2 Docker的安装
1.首先卸载系统中旧版本的docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2.安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
3.安装gcc
yum install -y gcc gcc-c++
4.设置stable仓库(可选国内源地址,这里使用的是阿里云)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5.更新yum索引
yum makecache fast
6.安装docker-ce
yum install docker-ce docker-ce-cli containerd.io
7.启动docker并进行查看
systemctl start docker
ps -ef | grep docker
8.使用docker命令运行一个镜像(这里以hello world为例,如果没有则会自动下载)
docker run hello-world
1.3 Docker常用命令
1.拉取镜像(可以在docker hub上搜索镜像,镜像名后跟版本号或者最后发行版本)
docker pull <镜像名:tag>
# 例如以下代码
docker pull mysql:latest
2.删除容器
docker rm <容器名 or ID>
3.查看容器日志
docker logs -f <容器名 or ID>
4.查看正在运行的容器
docker ps
docker ps -a # 为查看所有的容器,包括已经停止的。
5.删除所有容器
docker rm $(docker ps -a -q)
6.停止、启动、杀死指定容器
docker start <容器名 or ID> # 启动容器
docker stop <容器名 or ID> # 启动容器
docker kill <容器名 or ID> # 杀死容器
7.查看所有镜像
docker images
8.后台运行
docker run -d 镜像名
# 例如以下代码
docker run -d -p 3306:3306 --name mysql mysql
9.暴露端口
# 一共有三种形式进行端口映射
docker -p ip:hostPort:containerPort # 映射指定地址的主机端口到容器端口
# 例如:docker -p 127.0.0.1:3306:3306 映射本机3306端口到容器的3306端口
docker -p ip::containerPort # 映射指定地址的任意可用端口到容器端口
# 例如:docker -p 127.0.0.1::3306 映射本机的随机可用端口到容器3306端口
docer -p hostPort:containerPort # 映射本机的指定端口到容器的指定端口
# 例如:docker -p 3306:3306 # 映射本机的3306端口到容器的3306端口
10.映射数据卷
docker -v /home/data:/opt/data # 这里/home/data 指的是宿主机的目录地址,后者则是容器的目录地址
注 意 : − p ( 小 写 ) 容 器 、 − P ( 大 写 ) 随 机 、 − i 交 互 、 − d 后 台 、 − t 终 端 注意:-p(小写) 容器 、 -P(大写)随机 、 -i 交互 、 -d 后台 、 -t 终端 注意:−p(小写)容器、−P(大写)随机、−i交互、−d后台、−t终端
1.4 Docker卸载
1.删除安装包:
yum remove docker-ce docker-ce-cli containerd.io
2.删除镜像、容器、配置文件等内容:
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
二、 Docker-compose的 安装与配置
2.1 Docker-Compose介绍
Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用系统,通常由多个容器组成,如果每个微服务都要手动启停,那么效率之低,维护量之大可想而知,Docker Compose
是 Docker 官方编排(Orchestration)项目之一,负责快速的部署分布式应用。
使用 Docker Compose 可以轻松、高效的管理容器, Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务,非常适合组合使用多个容器进行开发的场景。
2.2 Docker-Compose和Docker兼容性
Compose file format | Docker Engine release |
---|---|
Compose specification | 19.03.0+ |
3.8 | 19.03.0+ |
3.7 | 18.06.0+ |
3.6 | 18.02.0+ |
3.5 | 17.12.0+ |
3.4 | 17.09.0+ |
3.3 | 17.06.0+ |
3.2 | 17.04.0+ |
3.1 | 1.13.1+ |
3.0 | 1.13.0+ |
2.4 | 17.12.0+ |
2.3 | 17.06.0+ |
2.2 | 1.13.0+ |
2.1 | 1.12.0+ |
2.0 | 1.10.0+ |
2.3 Dcoker-Compose的安装
1.运行以下命令以下载 Docker Compose
curl -L "https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
若是github访问太慢,可以用daocloud下载
curl -L "https://get.daocloud.io/docker/compose/releases/download/v2.2.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2.添加docker-compose的读写执行权限
chmod -R 777 /usr/local/bin/docker-compose
3.查看docker-compose是否安装成功
docker-compose --version
2.4 Docker-Compose卸载
以二进制包方式安装的,删除二进制文件即可:
rm /usr/local/bin/docker-compose
2.5 Docker-Compose常用命令
1.执行docker-compose [COMMAND] --help
或者 docker-compose help [COMMAND]
可以查看具体某个命令的使用格式。如下:
docker-compose --help
2.命令参数介绍:
-
-f, --file FILE 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定;
-
-p, --project-name NAME 指定项目名称,默认将使用所在目录名称作为项目名;
-
–x-networking 使用 Docker 的可拔插网络后端特性;
-
–x-network-driver DRIVER 指定网络后端的驱动,默认为 bridge;
-
–verbose 输出更多调试信息;
-
-v, --version 打印版本并退出;
- 常用命令
docker-compose up #创建并启动容器
docker-compose up -d #创建并后台启动容器
docker-compose ps #查看当前compose进程
docker-compose start #启动容器
docker-compose stop #关闭容器
docker-compose down #关闭并移除容器
docker-compose logs #查看容器日志
docker-compose down --volumes #关闭并移除容器并删除容器清除存储
docker-compose pull #拉取服务依赖的镜像
docker-compose restart #重启项目中的服务
docker-compose rm #删除所有(停止状态的)服务容器
三、 Docker-Compose模板文件
3.1 Docker-compose.yml模板介绍
Compose允许用户通过一个docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。
Compose模板文件是一个定义服务、网络和卷的YAML文件。Compose模板文件默认路径是当前目录下的docker-compose.yml,可以使用.yml或.yaml作为文件扩展名。Docker-Compose标准模板文件应该包含version、services、networks 三大部分,最关键的是services和networks两个部分。
以本地redis的docker-compose配置文件为例:
version: '3'
services:
redis:
image: redis
container_name: redis
volumes:
- /home/docker/redis/data:/data
- /home/docker/redis/conf/redis.conf:/etc/redis/redis.conf
- /home/docker/redis/logs:/logs
command: redis-server /etc/redis/redis.conf
ports:
- 6379:6379
1、image
image是指定服务的镜像名称或镜像ID。如果镜像在本地不存在,Compose将会尝试拉取镜像。
services:
redis:
image: redis
2、command
使用command可以覆盖容器启动后默认执行的命令。
command: bundle exec thin -p 3000
3、container_name
Compose的容器名称格式是:<项目名称><服务名称><序号>
可以自定义项目名称、服务名称,但如果想完全控制容器的命名,可以使用标签指定:
container_name: redis
4、ports
ports用于映射端口的标签。
使用HOST:CONTAINER格式或者只是指定容器的端口,宿主机会随机映射端口。
ports:
- "3000"
- "8000:8000"
- "49100:22"
- "127.0.0.1:8001:8001"
当使用HOST:CONTAINER格式来映射端口时,如果使用的容器端口小于60可能会得到错误得结果,因为YAML将会解析xx:yy这种数字格式为60进制。所以建议采用字符串格式。
5、volumes
挂载一个目录或者一个已存在的数据卷容器,可以直接使用 [HOST:CONTAINER]格式,或者使用[HOST:CONTAINER:ro]格式,后者对于容器来说,数据卷是只读的,可以有效保护宿主机的文件系统。
Compose的数据卷指定路径可以是相对路径,使用 . 或者 … 来指定相对目录。
数据卷的格式可以是下面多种形式:
volumes:
// 只是指定一个路径,Docker 会自动在创建一个数据卷(这个路径是容器内部的)。
- /var/lib/mysql
// 使用绝对路径挂载数据卷
- /opt/data:/var/lib/mysql
// 以 Compose 配置文件为中心的相对路径作为数据卷挂载到容器。
- ./cache:/tmp/cache
// 使用用户的相对路径(~/ 表示的目录是 /home/<用户目录>/ 或者 /root/)。
- ~/configs:/etc/configs/:ro
// 已经存在的命名的数据卷。
- datavolume:/var/lib/mysql
如果不使用宿主机的路径,可以指定一个volume_driver。
volume_driver: mydriver
6、expose
暴露端口,但不映射到宿主机,只允许能被连接的服务访问。仅可以指定内部端口为参数,如下所示:
expose:
- "3000"
- "8000"
7.restart
no是默认的重启策略,在任何情况下都不会重启容器。 指定为always时,容器总是重新启动。 如果退出代码指示出现故障错误,则on-failure将重新启动容器。
restart: "no"
restart: always
restart: on-failure
restart: unless-stopped
8、environment
添加环境变量。 你可以使用数组或字典两种形式。 任何布尔值; true,false,yes,no需要用引号括起来,以确保它们不被YML解析器转换为True或False。
只给定名称的变量会自动获取它在 Compose 主机上的值,可以用来防止泄露不必要的数据。
environment:
RACK_ENV: development
SHOW: 'true'
SESSION_SECRET:
启容器。 指定为always时,容器总是重新启动。 如果退出代码指示出现故障错误,则on-failure将重新启动容器。
restart: "no"
restart: always
restart: on-failure
restart: unless-stopped
8、environment
添加环境变量。 你可以使用数组或字典两种形式。 任何布尔值; true,false,yes,no需要用引号括起来,以确保它们不被YML解析器转换为True或False。
只给定名称的变量会自动获取它在 Compose 主机上的值,可以用来防止泄露不必要的数据。
environment:
RACK_ENV: development
SHOW: 'true'
SESSION_SECRET:
更多推荐
所有评论(0)