Docker容器以及部署

简单说一下部署

在通常部署的情况下,我们需要再Linux系统中上传Tomcat服务器,执行一些解压命令(例如 tar-zxvf),但是在docker容器部署的时候,我们只需要将Tomcat从中央服务器拉取下来(center)

在Linux系统中,下载下来的Tomcat服务器相当于一个虚拟的Linux系统:所以我们可以这样理解

就是从中央仓库中将你所需要的镜像下载至本地,并且将镜像启动为容器,每一个容器都是一个虚拟的Linux,会有自己独立的内存,CPU,不会进行互相干扰,(如果一个服务出现问题,将不会影响其他服务)。

接下来将docker安装步骤及命令分享给大家

想安装Docker,需要先将依赖的环境全部下载,就像Maven依赖JDK一样

yum -y install yum-utils device-mapper-persistent-data lvm2

 指定Docker镜像源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装Docker

yum makecache fast
yum -y install docker-ce

启动docker

systemctl start docker
systemctl enabled docker

# 测试
docker run hello-world
```

## docker 镜像命令

### 1.查看中央仓库的镜像

```
docker search 所要搜索的镜像名称
```

### 2.从远程仓库下载镜像

```
docker pull 镜像名称
```

### 3.查看本地所拥有的镜像

```
docker images
```

### 4.删除本地镜像

注意:当前镜像不被容器进行依赖

```
docker rmi 镜像名称
```

### 5.导出镜像

```
#将本地镜像导出
docker save -o 导出的路径/名字  镜像id
#加载本地的镜像
docker load -i 镜像文件
#加载完成后,镜像名称以及版本为none 需重新设置
docker tag 镜像id 新名称:版本
```

## docker 容器命令

`镜像启动后,称之为容器,运行容器时,需指定你的镜像,如果本地没有该镜像,会自动从远程仓库进行镜像下载,下载完成后,再启动为容器。(注意:一个镜像对应一个容器)`

### 1.启动镜像

```
docker run 镜像的id|镜像的名称[:tag]

#启动镜像时的参数 例如:
docker run -d -p 宿主机的端口号:容器的端口号 --name 容器的名称 镜像的id|镜像的名称[:tag]
#-d: 代表后台运行容器
#-p: 端口号的映射。当前linux的端口号与容器的端口号。--->端口号可以相同,也可以不同。
#--name 指定容器的名称
```

### 2.查看正在运行中的容器

```
docker ps -a|-q
-a 查看全部的容器,包括没有运行的
-q 之查看容器的标识
```

### 3.停止运行中的容器

```
docker stop 容器id
```

### 4.删除容器

`删除容器前,必须先停止容器`

```
docker rm 容器id
```

### 5.安装tomcat

```
docker search tomcat
#从远程仓库下载 tomcat:8.5.15-jre8
docker pull daocloud.io/library/tomcat:8.5.15-jre8
#下载完成后,将tomcat镜像启动为容器
docker run -d -p 8081:8080 --name mytomcat 镜像id
#解析 
CONTAINER ID   IMAGE          COMMAND             CREATED         STATUS         PORTS                    NAMES
a9fa2bd4b4e7   b8dfe9ade316   "catalina.sh run"   8 seconds ago   Up 8 seconds   0.0.0.0:8081->8080/tcp   mytomcat

#CONTAINER ID 容器id 不会重复 唯一
#IMAGE 镜像id
#COMMAND 启动命令
#CREATED 容器创建时间
#STATUS 容器的状态
#PORTS 端口的映射
#NAMES 容器的名称
```

### 6.查看容器的日志

```
docker logs -f 容器id
```

### 7.进入容器内部(容器相当于---》再Linux宿主机中,虚拟出来的一个linux服务器)

```
docker exec -it 容器id bash
```

### 8.将文件 复制到容器中

```
docker cp 文件名称 容器id:容器内部路径
```

### 9.docker 安装MySql

```
#从中央仓库下载Mysql服务
docker pull daocloud.io/library/mysql:5.7.4
#启动mysql服务
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root 镜像id
#如果本地Linux中已经拥有了mysql服务我们需要先停止掉Mysql服务
systemctl stop mysqld.service
#启动docker中的mysql容器
docker start 容器id
```

## docker数据卷

`部署springboot项目时,需要使用到docker cp的命令,将linxu下的war包,复制到容器内部的地址中,当你的容器被删除掉后,war同时被删除,如果要再次启动tomcat,需要从新创建容器,从新复制war包`

`数据卷的作用:将宿主机的目录映射到容器的一个目录中。linux下的一个目录地址,就等同与你映射的容器内部的路径,当我们对linux下的目录中的内容进行操作时,容器内部会进行相同的操作。`

### 1.创建数据卷

`数据卷创建后,默认会存放在宿主机 /var/lib/docker/volumes/数据卷名称/_data`

```
docker volume create 数据卷的名称
```

### 2.查看数据卷详情

```
docker volume inspect 数据卷名称
```

### 3.查看全部数据卷

```
docker volume ls
```

### 4.删除数据卷

```
docker volume rm 数据卷的名称
```

### 5.数据卷映射

```
#通过数据卷名称进行映射 ,使用名称进行映射时,我们需要先来创建出数据卷,才能使用名称进行映射。回讲容器内部自带的文件,复制到默认的存放路径中
docker run -d -p 宿主机端口号:容器端口号 -v 数据卷名称:容器内部路径 --name 自定义容器名称 镜像的id
#通过路径进行映射,直接指定一个路径作为数据卷的存放地址,这个路径下是空的。
docker run -d -p 宿主机端口号:容器端口号 -v 宿主机路径:容器内部路径 --name 自定义容器名称 镜像的id
```

## dockerfile 自定义镜像

```
from: 指定当前自定义镜像的依赖环境
copy: 将相对路径下的内容复制到自定义镜像中
workdir: 声明镜像的默认工作目录
run:执行的命令,可以编写多个
cmd:需要执行的命令(再workdir下执行,cmd可以写多个,只以最后一个为准)
#举例
from daocloud.io/library/tomcat:8.5.15-jre8
copy springboot.war /usr/local/tomcat/webapps
```

### 1.制作镜像

`编写完成Dockerfile后需要通过命令将其制作成为镜像,并且要在Dockerfile的当前目录下执行该命令,之后就以可以使用docker images 查看自己制作好的镜像。注意最后有一个.`

```
docker build -t 镜像名称[:tag] .
```

## Docker-Compose 

`Docker-compose 可以帮助我们批量管理容器,只需要个docker-compose.yml文件去维护即可,其中可以定义参数`

### 1.上传docker-compose 进行改名,权限的赋予

```
#安装docker-compose
将docker-copmose 进行上传
rz docker-compose-Linux-x86_64 上传到用户根目录下
#上传成功后,将docker-compose-Linux-x86_64 进行重命名
mv docker-compose-Linux-x86_64 docker-compose
#将改名后的docker-compose 赋予权限
chmod 777 docker-compose
```

### 2.配置环境变量

```
#将docker-compose 移动到/usr/local/bin目录下
mv docker-compose /usr/local/bin
#编辑环境里变量文件,将docker-compose应用再环境变量中
vi /etc/profile
#将PATH修改为下方的配置
export PATH=$JAVA_HOME/bin:/usr/local/bin:$PATH
#让配置生效,重新加载环境变量
source /etc/profile
```

### 3.测试

`再任意目录下输入 docker-compose 如能出现Define and run multi-container applications with Docker. 说明docker-compose 安装成功,并且环境变量配置成功`

### 4.使用docker-compose 管理MySql和Tomcat容器

#### 1.编写yml文件管理容器,名字必须是docker-compose.yml

```
version: '3.1'
services:
    mysql:     #服务的名称
        restart: always #代表只要docker启动,那么这个容器就跟着一起启动
        image: daocloud.io/library/mysql:5.7.4 #指定镜像路径
        container_name: mysql #容器名称
        ports:
            - 3306:3306 #端口映射
        environment: #配置额外的参数
            MYSQL_ROOT_PASSOWRD: root #指定MYSQL的ROOT用户登录密码
            TZ: Asia/Shanghai #指定时区
        volumes:
            - /opt/docker_mysql_tomcat/mysql_data:/var/lib/mysql #映射数据卷
    tomcat:
        restart: always
        image: daocloud.io/library/tomcat:8.5.15-jre8
        container_name: tomcat
        ports:
            - 8082:8080
        environment:
            TZ: Asia/Shanghi
        volumes:
            - /opt/docker_mysql_tomcat/tomcat_webapps:/user/local/tomcat/webapps
            - /opt/docker_mysql_tomcat/tomcat_logs:/usr/local/tomcat/logs
```

### 5.使用docker-compose 命令管理器进行管理

`命令必须再docker-compose.yml得同级目录进行执行,否则执行失败`

```
#1.基于docker-compose.yml 启动管理得容器
docker-compose up -d
#2. 关闭并删除容器
docker-compose down
#3. 开启|关闭|重启已经存在得docker-compose 维护得容器
docker-compose start|stop|restart
#4.查看由docker-compose 管理得容器
docker-compose ps
#5. 查看由docker-compose 管理容器得日志信息
docker-compose logs -f
```

### 6.docker-compose 配合Dockerfile使用

`使用docker-compose.yml文件以及Dockerfile文件再生成自定义镜像得同时启动当前镜像,并且使用docker-compose管理容器`

#### 1.修改docker-compose.yml文件配置dockerfile先创建镜像,再来启动镜像

```
#修改docker-compose.yml文件
version: '3.1'
services:
    #服务的名称
    mysql:     
    #代表只要docker启动,那么这个容器就跟着一起启动
        restart: always     
        #指定镜像路径
        image: daocloud.io/library/mysql:5.7.4 
        #容器名称
        container_name: mysql 
        #端口映射
        ports:
            - 3306:3306 
            #配置额外的参数
        environment: 
         #指定MYSQL的ROOT用户登录密码
            MYSQL_ROOT_PASSWORD: root
            #指定时区
            TZ: Asia/Shanghai
        #映射数据卷
        volumes:
            - /opt/docker_mysql_tomcat/mysql_data:/var/lib/mysql 
    tomcat:
        restart: always
        build:
        #指定dockerfile得在的路径
        #代表Dockerfile的地址实在root用户的根目录下
            context: ~/
            dockerfile: Dockerfile
            #根据dockerfile生成镜像得名称
        image: filecomposetomcat:1.0
        container_name: tomcat
        ports:
            - 8082:8080
        environment:
            TZ: Asia/Shanghai

```

#### 2.Dockerfile的文件

```
from daocloud.io/library/tomcat:8.5.15-jre8
copy springboot.war /usr/local/tomcat/webapps
```

#### 3.测试运行

```
#直接启动基于docker-compose.yml以及Dockerfile文件构建得自定义镜像
docker-compose up -d

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值