Docker

Docker 安装

移除旧的版本

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
源2:(阿里云源)
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 后台服务
sudo systemctl start docker
重启 Docker服务
sudo systemctl restart docker
安装成功后可通过查看
docker version

springboot部署Docker

1、先准备好 jar包

新建目录里面有 jar 包 和 Dockerfile 文件

在这里插入图片描述

2、编写 Dockerfile

FROM java:8
VOLUME /tmp
ADD demo-0.0.1-SNAPSHOT.jar demo-boot.jar
EXPOSE 8080
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/demo-boot.jar"]

在这里插入图片描述

在这里插入图片描述

3、构建镜像

demo-boot 镜像名

docker build -t demo-boot .

在这里插入图片描述

4、运行容器

docker run -d --name xxx容器名称   -p 8080:8080  xxx镜像名称

成功部署

在这里插入图片描述

Idea集成docker实现镜像打包一键部署

#修改该Docker服务文件(支持远程访问)
开启 2375 端口

vi /lib/systemd/system/docker.service
上段代码会配置后启动失败,可以尝试下面这种方式
https://blog.51cto.com/u_15075514/4152814

在这里插入图片描述

    <build>
        <plugins>
        <!--配置打包为jar包-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

        <!--配置idea使用docker-->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <!--指定 Dockerfile 路径-->
                <!--<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>-->
                <configuration>
                <!-- 镜像名称 java-localhost/demo-boot-->
                <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                <!--指定标签-->
                <imageTags>
                    <imageTag>${project.version}</imageTag>
                </imageTags>
                <!-- 基础镜像jdk 1.8-->
                <baseImage>java</baseImage>
                <!-- 制作者提供本人信息 -->
                <!--<maintainer>guoweixin guoweixin@aliyun.com</maintainer>-->
                <!--切换到/ROOT目录 -->
                <workdir>/ROOT</workdir>
                <cmd>["java", "-version"]</cmd>
                <entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint>
                <!--指定远程 docker api地址-->
                <dockerHost>http://192.168.126.129:2375</dockerHost>

                <!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
                <resources>
                    <resource>
                        <targetPath>/ROOT</targetPath>
                        <!--用于指定需要复制的根目录,${project.build.directory}表示target目录-->
                        <directory>${project.build.directory}</directory>
                        <!--用于指定需要复制的文件。${project.build.finalName}.jar指的是打包后的jar
                        包文件。-->
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
            </configuration>
            </plugin>

        </plugins>
    </build>

在pom添加相关配置后,在终端运行创建容器代码

mvn clean package docker:build

也可以配置好 直接使用meven点击package就同时创建docker容器
也就是多了 configuration 下面几行代码

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


            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <!--指定 Dockerfile 路径-->
                <!--<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>-->
                <configuration>
                    <!-- 镜像名称 java-localhost/demo-boot-->
                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                    <!--指定标签-->
                    <imageTags>
                        <imageTag>${project.version}</imageTag>
                    </imageTags>
                    <!-- 基础镜像jdk 1.8-->
                    <baseImage>java</baseImage>
                    <!-- 制作者提供本人信息 -->
                    <!--<maintainer>guoweixin guoweixin@aliyun.com</maintainer>-->
                    <!--切换到/ROOT目录 -->
                    <workdir>/ROOT</workdir>
                    <cmd>["java", "-version"]</cmd>
                    <entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint>
                    <!--指定远程 docker api地址-->
                    <dockerHost>http://192.168.126.129:2375</dockerHost>

                    <!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
                    <resources>
                        <resource>
                            <targetPath>/ROOT</targetPath>
                            <!--用于指定需要复制的根目录,${project.build.directory}表示target目录-->
                            <directory>${project.build.directory}</directory>
                            <!--用于指定需要复制的文件。${project.build.finalName}.jar指的是打包后的jar
                            包文件。-->
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>

                <!--当执行mvn package 时,执行: mvn clean package docker:build -->
                <executions>
                    <execution>
                        <id>build-image</id>
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>

            </plugin>

        </plugins>
    </build>

在这里插入图片描述

====================================================

查看防火墙状态

firewall-cmd --list-ports

删除文件夹:
rm -r
删除非空文件夹:
rm -r -f xxx

1===> docker的基本使用

一、docker的基础命令

1 ,启动docker

systemctl start docker

2 ,关闭docker

systemctl stop docker

3 ,重启docker

systemctl restart docker

4 ,设置docker开机自启动

systemctl enable docker

5 , 查看docker运行状态(显示绿色代表正常启动)

systemctl status docker

二、docker的帮助命令

1,忘记了某些命令的使用可以查看

docker --help

演示:假如我们启动镜像的时候忘记命令的使用

docker run --help

三、docker镜像命令

1 ,查看docker镜像列表

docker images

2 ,单独搜索镜像

docker images 镜像名

3,拉取镜像

docker pull 镜像名

4,删除没有用的镜像

docker image rmi 镜像ID //常用

#删除一个

docker rmi -f 镜像名/镜像ID

#删除多个 其镜像ID或镜像用用空格隔开即可

docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID

#删除全部镜像 -a 意思为显示全部, -q 意思为只显示ID

docker rmi -f $(docker images -aq)

强制删除

docker image rm 镜像名称/镜像ID

Docker其它辅助命令
查看本地镜像的 IMAGE ID

docker images -q

查看⼀个镜像的制作历程

docker history 镜像名称

四、docker容器命令 //重点

1、 查看容器状态

docker ps //查看运行的容器
docker ps –a //查看所有的容器(包含运行和退出)
docker container ls
docker container ls–a

2、 Docker 启动容器

启动容器有二种方式,一种是基于镜像新建一个容器并启动,一种是将在终止状态( stopped )的容器重新启动
docker run 参数 镜像名称:tag 执⾏的命令 常⽤参数:

-i 保持和 docker 容器内的交互,启动容器时,运⾏的命令结束后,容器依然存活,没有退出(默认是会退出,即停⽌的)
-t 为容器的标准输⼊虚拟⼀个tty
-d 后台运⾏容器
--rm 容器在启动后,执⾏完成命令或程序后就销毁
--name 给容器起⼀个⾃定义名称
-p 宿主机:内部端口
运行一个tomcat镜像容器【新启动】

docker run -d --name tomcat-8080 -p 8080:8080 tomcat

例如:我们启动一个mysql5.7版本的

docker run -it -d --name mysql mysql:5.7 /bin/bash

停止后删除容器

docker run --name tomcat-8080 -d -p 8080:8080 --rm tomcat

Docker 守护态运行

	更多的时候,需要让 Docker 在后台运行而不是直接把执行命令的结果输出在当前宿主机下。此时,可以通过添
加 -d 参数来实现
如果不使用 -d 参数运行容器:将会在当前宿主机运行。
    如果使用了 -d 参数运行容器。此时容器会在后台运行并不会把输出的结果 (STDOUT) 打印到宿主机上面(输出结果可以用 docker logs查看)。

查看控制台结果: docker logs tomcat //(ID或Names)

3、 停止容器

docker stop id名
docker stop 容器名

container 可省略不写
docker container stop tomcat1//停止正运行容器(ID或Names)

停止所有容器

docker stop $(docker ps -a -q)

4、 启动容器

docker start id名
docker start 容器名

重启
docker restart 9be696a0c283//启动容器(根据ID或NAMES)

5、 删除容器

rmi 是删除镜像

 docker rm  -f  xxx容器名

全部删除

 docker rm $(docker ps -a -q)

6、 Docker 进入容器

在这里插入图片描述

使用 docker exec 命令进入容器

容器在运行的时候 后面就要加 bash

docker exec -it xxx容器名 bash

在这里插入图片描述
一开始Tomcat容器里面打开是404 是因为里面没有内容(docker为了小体积 都删除了)
在这里插入图片描述

要在里面添加内容 才会有显示

在这里插入图片描述
退出容器

exit

在这里插入图片描述

案例一、tomcat docker的概念:不可使用镜像,通过镜像创建无数容器
1、下载tomcat的镜像

> 	docker pull tomcat 	docker images #显示所有镜像

2、创建tomcat容器

> 	docker run -d --name tomcat-8080 -p 8080:8080 tomcat 	docker run -d
> --name tomcat-8081 -p 8081:8080 tomcat

3、进入容器配置服务

> 	docker exec -it tomcat-8080 bash

五、在宿主机和容器之间交换文件

进入容器
docker exec -it tomcat-8080 bash
在这里插入图片描述

1、首先将文件放到 root 宿主机(如果源文件就在root这里 次步骤可省略)

docker cp tomcat-8080:/usr/local/tomcat/webapps/ROOT/index.html /root

在这里插入图片描述
2、将 index.html 复制回去给容器

docker cp index.html tomcat-8080:/usr/local/tomcat/webapps/ROOT

在这里插入图片描述

部署

docker cp xxxx tomcat-8080:/usr/local/tomcat/webapps
在这里插入图片描述
在这里插入图片描述

六、Docker 查看日志

docker logs 容器名称/ID
在这里插入图片描述

查看最后十行
默认是十行

docker logs --tail=10 tomcat-8080
在这里插入图片描述
查看实时日志

docker logs -f --tail=10 tomcat-8080

在这里插入图片描述

参考图片
在这里插入图片描述

七、Docker 数据卷【在宿主机修改后 映射的文件会立马生效】

在这里插入图片描述
在这里插入图片描述

1、数据卷应用 【可以直接去配 nginx】

下面是方式一【老版本 不推荐】
在这里插入图片描述
#5 应用数据卷
#5.1 当你映射数据卷时,如果数据卷不存在,Docker会帮你自动创建

docker run -v 数据卷名称:容器内路径 镜像ID

#5.2 直接指定一个路径作为数据卷的存储位置

docker run -v 路径:容器内部的路径 镜像ID

下面是方式二【新版本方式 推荐】

/root/docker-volumn/exam 宿主机的文件
/usr/local/tomcat/webapps/exam 映射到那里的文件
tomcat 容器

!!!运行一个容器 并且将 exam文件 映射到 /usr/local/tomcat/webapps/exam里面去 是tomcat 容器【省去了一个cp的过程】

docker run -d --name tomcat-8080 -p 8080:8080 -v /root/docker-volumn/exam:/usr/local/tomcat/webapps/exam tomcat

Centos防火墙端口

开放8080端口(如下命令只针对Centos7以上)

查看已经开放的端口:

firewall-cmd --list-ports

开启端口:

firewall-cmd --zone=public --add-port=8080/tcp --permanent

关闭端口:

firewall-cmd --permanent --zone=public --remove-port=8080/tcp

开启防火墙:

systemctl start firewalld

重启防火墙:

firewall-cmd --reload #重启
firewall systemctl stop firewalld.service #停止
firewall systemctl disable firewalld.service #禁止firewall开机启动

2===> Docker安装开发环境

遇到了 iptables 失败 就要重启docker

一、安装 Tomcat

1、取最新版的 Tomcat镜像

docker pull tomcat

2、运行容器

docker run -d --name xxx容器名 -p 8080:8080 tomcat

3、进入容器

进入容器后 将前端项目拷贝到 webapps目录里面去

docker exec -it tomcat-8080 bash

在这里插入图片描述

3、将项目拷贝到webapps目录

有多个 tomcat 配置的话 就改一下容器名

docker cp xxx项目名称1/ tomcat-8080:/usr/local/tomcat/webapps
docker cp xxx项目名称2/ tomcat-8080:/usr/local/tomcat/webapps

在这里插入图片描述
然后 再看下面的 配置 nginx 集群

二、安装Nginx

1、取最新版的 Nginx 镜像

docker pull nginx:1.21.5

2、运行容器

如果容器有版本 启动也要加版本

docker run -d -p80:80 --name xxx容器名 nginx

docker run -d -p80:80 --name nginx nginx:1.21.5

【查看默认安装位置 whereis nginx】

在这里插入图片描述
进入容器

docker exec -it  xxx容器名 bash

3、copy配置文件

docker container cp xxx容器名:/etc/nginx /root/nginx/conf/
docker container cp nginx:/var/log/nginx /root/nginx/logs/
docker container cp nginx:/usr/share/nginx/html /root/nginx/html/

4、删除nginx容器

docker rm -f xxx容器名

5、做映射

docker run --name nginx -d -p80:80 \
-v /root/nginx/conf:/etc/nginx \
-v /root/nginx/html:/usr/share/nginx/html \
-v /root/nginx/log:/var/log/nginx nginx:1.21.5

配置 nginx 集群

1、进入 nginx.conf 里面配置 nginx.conf 文件
vi nginx/conf/nginx.conf
或者
vi /root/nginx/conf/nginx/nginx.conf

在这里插入图片描述

    upstream nginxCluster {
        server 192.168.126.129:8080;
        server 192.168.126.129:8081;
        server 192.168.126.129:8082;
    }

在这里插入图片描述

2、在 default.conf 配置 location 映射
vi nginx/conf/conf.d/default.conf

vi  /root/nginx/conf/nginx/conf.d/default.conf

在这里插入图片描述

location /{
proxy_pass http://nginxCluster;
}

在这里插入图片描述

三、安装Mysql

密码设置为: root

1、拉取镜像

docker pull mysql:5.7

2、启动容器 并设置 密码

docker run -d --name mysql5.7-3306 -p 3306:3306 -e MYSQL_ROOT_PASSWORD='root' mysql:5.7

3、访问测试,进入容器

 docker exec -it mysql5.7-3306 bash

连接mysql数据库:

mysql -uroot -p

在这里插入图片描述

4、授权其他机器登陆 1、授权主机访问:

MySQL>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

5、刷新权限:

MySQL>FLUSH PRIVILEGES;

6、退出:

MySQL>EXIT;

3===> Dockerfile 定制镜像

在这里插入图片描述
WORKDIR

在这里插入图片描述

VOLUME

在这里插入图片描述

EXPOSE

在这里插入图片描述

在这里插入图片描述

一、创建一个镜像

删除虚悬镜像 【如果有使用它的容器 就要将容器删除 才可以删除虚悬镜像】

docker image prune

(基于tomcat)里面要有一个index.html,并写入Hello dockerfile Docker

1、在宿主机创建一空白目录

在这里插入图片描述

2、在该目录下,创建一文件Dockerfile

vim Dockerfile

输入命令

FROM tomcat
RUN mkdir -p /usr/local/tomcat/webapps/ROOT/
RUN echo 'Hello dockerfile Docker'>/usr/local/tomcat/webapps/ROOT/index.html 
WORKDIR /usr/local/tomcat/webapps/

3、构建镜像

demo1 镜像名称

docker build -t demo1 .

4、运行镜像所在容器

docker run -d --name demo-8081 -p 8081:8080 demo1

这样就访问 tomcat 就有 index.html 页面内容了

========================================================

案例 Demo3

创建镜像 demo3 里面有图片 1.jpg

将 桌面的图片放到当前目录

在这里插入图片描述

FROM tomcat 
WORKDIR /usr/local/tomcat/webapps/
RUN mkdir ROOT
COPY 1.jpg /usr/local/tomcat/webapps/ROOT/

在这里插入图片描述
构建镜像

docker build -t demo3 .

运行容器

docker run -d -p 8080:8080 --name demo3-8080 demo3

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值