centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行

一、centos7安装docker

1.查看centos7版:

uname -r 

2.运行

yum update 

3.验证是否安装了docker:

docker version 

4.如果安装了请卸载

sudo yum remove docker docker-common container-selinux docker-selinux docker-engine 

5.安装 yum-utils,它提供了 yum-config-manager,可用来管理yum源

sudo yum install -y yum-utils 

添加yum源

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 

7.更新索引

sudo yum makecache fast 

8.安装 docker-ce

sudo yum install docker-ce 

9.启动docker:

systemctl status docker 

//启动docker
systemctl start docker
//停止docker
service docker stop
//重启docker
service docker restart
/查看装好的镜像
docker images
//查看容器
docker ps -a

命令 用法
yum -y install docker-ce 下载最新版的docker
service docker start 启动Docker服务
service docker stop 停止Docker服务
service docker restart 重新启动Docker服务
docker version 查看Docker的版本号
docker pull 镜像地址:版本 从镜像仓库中下载
docker save a2a69ca5184a > jt-centOS6.tar 根据镜像id导出镜像
docker save -o redis-3.2.8.tar redis:3.2.8 根据镜像名称导出镜像
docker load -i docker-centos-6.5.tar 指定jar包导入镜像文件
docker rmi a2a69ca5184a 根据Id号删除镜像文件
docker rmi -f a2a69ca5184a 强制删除镜像文件 删除镜像前需要先关闭容器
docker images 查询所有镜像文件
docker inspect index.alauda.cn/tutum/centos:6.5 查看镜像文件细节信息
docker tag 旧镜像名称和端口 redis-ali:0.0.1 修改镜像的名称
例如:docker tag id号 docker.io/tomcat:7 修改镜像的标签
docker build -t 镜像名称:版本号 根据dockerfile来创建镜像文件
docker run -d –name 容器名 镜像名:版本号 根据镜像名称启动容器
docker run -d –name 容器名(自定) 镜像id号 根据镜像id启动容器
docker run -d -p 虚拟机端口:镜像端口 –name 容器名 镜像名:版本号 启动容器,并指定暴露端口
docker cp ROOT.war tomcat8:/usr/local/tomcat/webapps/ 拷贝文件到tomcat8的容器的路径中
例如:docker run -d -p 8093:8080 –name tomcat03 tomcat:7.0

参数说明:
-d,则containter将会运行在后台模式(Detached mode)
–name 实例名称
-p 对外程序访问端口8093,宿主机映射的tomcat端口8080
最后的tomcat为镜像的名称
访问过程

img

docker ps 查看活动的docker容器进程
Docker ps -a/-all 查看全部的容器
docker exec -it 容器id bash 进入指定的容器
docker stop 容器Id号 停止指定容器
docker start 容器Id号 启动创建好的容器
docker stop $(docker ps -q) & docker rm $(docker ps -aq) 关闭和删除所有的容器
docker rm 容器Id 删除指定的容器
启动mysql:

docker run --name=mysql-5.7 -it -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7 --character-set-server=utf8 

卸载docker
卸载

1.查询安装过的包

yum list installed | grep docker
docker-engine.x86_64 17.03.0.ce-1.el7.centos @dockerrepo
2.删除安装的软件包
yum -y remove docker-engine.x86_64
3.删除镜像/容器等

rm -rf /var/lib/docker

Docker安装CentOS7及MySQL5.7

dockerfile

#添加contos7文件 FROM contos:7 #添加JDK1.8 centos+jdk ADD jdk-8u51-linux-x64.tar.gz /usr/local/src ENV JAVA_HOME=/usr/local/src/jdk1.8.0_51 ENV PATH=$JAVA_HOME/bin:$PATH ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar #centOS7+JDK1.8+tomcat7 ADD apache-tomcat-7.0.55.tar.gz /usr/local/src ENV CATALINA_HOME /usr/local/src/apache-tomcat-7.0.55 ENV PATH=$PATH:$CATALINA_HOME/bin #添加ROOT.war包文件 COPY ROOT.war $CATALINA_HOME/webapps/ROOT/ROOT.war WORKDIR $CATALINA_HOME/webapps/ROOT RUN jar xvf ROOT.war RUN rm ROOT.war #对外暴露的端口号 EXPOSE 8080 CMD ["/usr/local/src/apache-tomcat-7.0.55/bin/catalina.sh","run"] 

添加阿里镜像地址

1. sudo mkdir -p /etc/docker 2. sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://xsvqbt2w.mirror.aliyuncs.com"] } EOF 3. sudo systemctl daemon-reload 4. sudo systemctl restart docker 
docker pull redis:latest 

二、Docker 安装 Redis

1、取最新版的 Redis 镜像

这里我们拉取官方的最新版本的镜像:

$ docker pull redis:latest 

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图1

2、查看本地镜像

使用以下命令来查看是否已安装了 redis:

$ docker images 

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图2

在上图中可以看到我们已经安装了最新版本(latest)的 redis 镜像。

3、运行容器

安装完成后,我们可以使用以下命令来运行 redis 容器:

$ docker run -itd --name redis-test -p 6379:6379 redis 

参数说明:

  • -p 6379:6379:映射容器服务的 6379 端口到宿主机的 6379 端口。外部可以直接通过宿主机ip:6379 访问到 Redis 的服务。
    centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图3

4、安装成功

最后我们可以通过 docker ps 命令查看容器的运行信息:

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图4

接着我们通过 redis-cli 连接测试使用 redis 服务。

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图5

5、外部访问

运行容器 docker run -itd --name redis-test -p 6379:6379 redis 

①创建配置文件目录存放redis.conf,文件从

②创建文件夹,新建配置文件贴入从官网下载的配置文件并修改

mkdir /usr/local/docker vi /usr/local/docker/redis.conf 

③修改启动默认配置(从上至下依次):

bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问 protected-mode no #默认yes,开启保护模式,限制为本地访问 daemonize no#默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败 requirepass 123456 #配置访问密码 databases 16 #数据库个数(可选),我修改了这个只是查看是否生效。。 dir ./ #输入本地redis数据库存放文件夹(可选) appendonly yes #redis持久化(可选) 

4.docker启动redis命令

docker run -p 6379:6379 --name myredis -v /usr/local/docker/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes 

命令解释说明:

-p 6379:6379 端口映射:前表示主机部分,:后表示容器部分。

–name myredis 指定该容器名称,查看和进行操作都比较方便。

-v 挂载目录,规则与端口映射相同。

为什么需要挂载目录:个人认为docker是个沙箱隔离级别的容器,这个是它的特点及安全机制,不能随便访问外部(主机)资源目录,所以需要这个挂载目录机制。

-d redis 表示后台启动redis

redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录/usr/local/docker/redis.conf

img

–appendonly yes 开启redis 持久化

5.查看是否运行成功

docker ps 查看运行的容器

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图7

dockers logs myredis/27ddba64faa6 (容器名称/id)

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图8

6、用客户端连接

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图9

在服务端用redis-cli设置一个key

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图10

客户端可以获取key的值了

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图11

三、Docker安装MySQL

3.1、下载

下载镜像

$ docker pull mysql:5.7 

将全部的配置文件和关联的文件夹统一放到/opt/docker-mysql

3.2、配置文件

$ mkdir -p /opt/docker-mysql/conf.d 

增加并修改配置文件config-file.cnf

内容如下,设置表名不区分大小写; linux下默认是区分的,windows下默认不区分

[mysqld] # 表名不区分大小写 lower_case_table_names=1 #server-id=1 datadir=/var/lib/mysql #socket=/var/lib/mysql/mysqlx.sock #symbolic-links=0 # sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid 

3.3、启动

增加数据文件夹

$ mkdir -p /opt/docker-mysql/var/lib/mysql 

启动,设置默认密码 123456

$ docker run --name mysql \ --restart=always \ -p 3306:3306 \ -v /opt/docker-mysql/conf.d:/etc/mysql/conf.d \ -v /opt/docker-mysql/var/lib/mysql:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123456-abc \ -d mysql:5.7 

3.4、 常用命令

进入容器

$ docker exec -it mysql bash 

查看日志

$ docker logs -f mysql 

备份数据

$ docker exec mysql sh -c 'exec mysqldump --all-databases -uroot -p"123456-abc"' > /some/path/on/your/host/all-databases.sql 

恢复数据

$ docker exec -i mysql sh -c 'exec mysql -uroot -p"123456-abc"' < /some/path/on/your/host/all-databases.sql 

3.5、 其他问题

only_full_group_by 问题

如果安装的版本是 5.7版本, 查询数据时出现如下错误

this is incompatible with sql_mode=only_full_group_by

可以使用使用下列方式解决

1. 查询 sql_mode
select @@sql_mode 

结果如下

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

2. 重置

删除其中的 ONLY_FULL_GROUP_BY配置,重新设置到 config-file.cnf

[mysqld] # 表名不区分大小写 lower_case_table_names=1 #server-id=1 datadir=/var/lib/mysql #socket=/var/lib/mysql/mysqlx.sock #symbolic-links=0 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid 
3. 重启容器
$ docker restart mysql 

参考地址 https://www.jianshu.com/p/d6febf6f95e0

四、springboot 运行在docker

1、把springboot打成可运行的jar包

pom.xml文件加入下面的依赖

 <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> 

2、把 jar 包上传到 服务器确定目录下

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图12

3、编写dockerfile 文件放到jar文件同级目录下

FROM registry.cn-shanghai.aliyuncs.com/choerodon-tools/javabase:0.8.2 COPY app.jar /ladp-server-svc.jar CMD java $JAVA_OPTS $SKYWALKING_OPTS -jar /ladp-server-svc.jar 

4、通过 dockerfile 文件生成本工程的镜像:

`-t :给镜像取名为 bookapp
docker build -t bookapp .
此行命令最后有一个点,表示使用当前上下文中的 dockerfile 文件 。

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图13

docker images 查看原有镜像 ,并构建新镜像:bookapp:

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图14

从第 2 次查看镜像可以确认,新的镜像bookapp 已构建成功。

5、通过镜像启动容器,命令如下:

# -d 后台运行、 # 最后一个 bookapp 是引用的镜像的名字、 # --name bookapp 给容器取名为 bookapp (取名参数前面是两短横线)、 # -p 8030:8030 端口映射,注意是小写 p # 前一个 8030 是对外浏览器上访问的端口,后一个 8030 是容器内工程本身的端口,两者可不一样 

docker run -d -p 8030:8030 –name book-service book-service

docker run -d -p 8036:8030 –name book-service2 book-service

docker run -d -p 8034:8030 –name bookstock-service bookstock-service

docker ps -a :查看当前服务器上所有容器

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图15

docker logs fcd396c4becb :查看容器的日志

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图16

打开浏览器访问接口文档,容器正常工作

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图17

五、VUE工程部署在Docker

5.1、VUE应用编译打包

npm run-script build 

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图18

此时工程根目录下多出一个 dist 文件夹,如果将该 dist 目录整个传到服务器上,部署成静态资源站点就能直接访问到该项目。

5.2、构建 Vue 应用镜像

Nginx 是一个高性能的 HTTP 和反向代理服务器,此处我们选用 Nginx 镜像作为基础来构建我们的vue应用镜像。

获取 Nginx 镜像

docker pull nginx 
  • Docker镜像(Image)一个特殊的文件系统。Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。 镜像不包含任何动态数据,其内容在构建之后也不会被改变。
  • Docker 镜像相关操作有:搜索镜像,docker search [REPOSITORY[:TAG]];拉取镜像,docker pull [REPOSITORY[:TAG]];查看镜像列表,docker image ls;删除镜像,docker image rm [REPOSITORY[:TAG]] / docker rmi [REPOSITORY[:TAG]] 等等。
  • Docker 镜像名称由 REPOSITORY 和 TAG 组成 [REPOSITORY[:TAG]],TAG默认为 latest。

创建 Nginx Config配置文件

在项目根目录下创建 Nginx 文件夹,该文件夹下新建文件 default.conf:

server { listen 80; server_name localhost; #charset koi8-r; access_log /var/log/nginx/host.access.log main; error_log /var/log/nginx/error.log error; location / { root /usr/share/nginx/html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } 

该配置文件定义了首页的指向为 /usr/share/nginx/html/index.html,所以我们可以一会把构建出来的 index.html 文件和相关的静态资源放到 /usr/share/nginx/html 目录下。

创建 Dockerfile 文件

FROM nginx COPY dist/ /usr/share/nginx/html/ COPY nginx/default.conf /etc/nginx/conf.d/default.conf 
  • 自定义构建镜像的时候基于 Dockerfile 来构建。
  • FROM nginx 命令的意思该镜像是基于 nginx:latest 镜像而构建的。
  • COPY dist/ /usr/share/nginx/html/ 命令的意思是将项目根目录下 dist 文件夹下的所有文件复制到镜像中 /usr/share/nginx/html/ 目录下。
  • COPY nginx/default.conf /etc/nginx/conf.d/default.conf 命令的意思是将 Nginx 目录下的 default.conf 复制到 etc/nginx/conf.d/default.conf,用本地的 default.conf 配置来替换 Nginx 镜像里的默认配置。

基于该 Dockerfile 构建 Vue 应用镜像

运行命令(注意不要少了最后的 “.” ):

docker build -t vuebook . 

-t 是给镜像命名,. 是基于当前目录的 Dockerfile 来构建镜像。

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图19

docker images #查看镜像 

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图20

启动 Vue app 容器

Docker 容器Container: 镜像运行时的实体。镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等 。

基于 vuebook 镜像启动容器,运行命令:

docker run \ -p 8088:8088 \ -d --name vuebook \ vuebook 
  • docker run 基于镜像启动一个容器
  • -p 8080:8088 端口映射,将宿主的8080端口映射到容器的8088端口
  • -d 后台方式运行
  • –name 容器名,查看 Docker 进程
docker ps 

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图21

访问 http://192.168.7.33:8088 可以看到首页

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图22

登录后进入主页

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图23

1、添加图书

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图24

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图25

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图26

图书已添加

2、删除图书

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图27

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图28

3、编辑图书

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图29

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图30

4、查询图书

centos7安装docker 以及docker安装redis,mysql,前后端打包镜像运行插图31

原文链接:https://www.cnblogs.com/cmmnhm/p/16961541.html

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享