docker知识概述

零、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

# 开机自启docker
systemctl enable 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.将文件复制到容器中

  • 将宿主linux文件复制到容器指定目录
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.数据卷映射

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

四、dockerfile 自定义镜像

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

注意:copy 的文件是和dockerfile文件同

1.制作镜像

  • 创建dockerfile
touch dockerfile
  • 编辑dockerfile
  • 制作镜像

编写完成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_PASSWORD: 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/Shanghai
		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
#关闭docker-compose
docker-compose down

六、Nginx安装

1.获取nginx镜像
docker pull nginx

2.创建数据卷
docker create volume nginx_html
docker create volume nginx_conf
3.启动nginx 并且进行数据卷的映射 
docker run -d -p 8081:80 9000:9000 --name nginx -v nginx_html:/usr/share/nginx/html -v nginx_conf:/etc/nginx/conf.d 298ec0e28760
4.cd/var/lib/docker/volumes/nginx_conf/_data
5.修改默认的配置文件 加入如下配置
server {
        listen 9000;
        server_name localhost;
        location / {

                add_header 'Access-Control-Allow-Origin' '$http_origin';
                        add_header 'Access-Control-Allow-Credentials' 'true';
                        add_header 'Access-Control-Allow-Methods' 'POST, GET, OPTIONS, DELETE, PUT';
                        add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
                
                        #跨域OPTIONS请求,set response header后直接204返回
                        if ($request_method = 'OPTIONS') {
                                        return 204;
                        }
                
                        proxy_set_header X-Real-IP $remote_addr;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                        #反向代理的服务的ip:端口号
                	proxy_pass http://10.12.156.4:8080;
        }
}
6.前端页面上线
打包为dist将请求路径全部更换为nginx的ip:端口号
将dist打包放在
/var/lib/docker/volumes/nginx_html/_data 
7.重新启动docker 容器 docker restart 容器id 即可访问到页面内容
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值