当前位置:   article > 正文

Docker_docker 最新版本拉取失败 其他版本可以正常拉取

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
安装一些必要的系统工具:
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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

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"]
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

在这里插入图片描述

3、构建镜像

demo-boot 镜像名

docker build -t demo-boot .
  • 1

在这里插入图片描述

4、运行容器

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

成功部署

在这里插入图片描述

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

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

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

在这里插入图片描述

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

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

mvn clean package docker:build
  • 1

也可以配置好 直接使用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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60

在这里插入图片描述

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

查看防火墙状态

firewall-cmd --list-ports
  • 1

删除文件夹:
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 宿主机:内部端口
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
运行一个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 参数运行容器:将会在当前宿主机运行。
  • 1
  • 2
  • 3
    如果使用了 -d 参数运行容器。此时容器会在后台运行并不会把输出的结果 (STDOUT) 打印到宿主机上面(输出结果可以用 docker logs查看)。
  • 1

查看控制台结果: 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容器名
  • 1

全部删除

 docker rm $(docker ps -a -q)
  • 1

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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

进入容器
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
  • 1

开启端口:

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

关闭端口:

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

开启防火墙:

systemctl start firewalld
  • 1

重启防火墙:

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
  • 1
  • 2

在这里插入图片描述
然后 再看下面的 配置 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
  • 1

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/
  • 1
  • 2
  • 3

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
  • 1
  • 2
  • 3
  • 4

配置 nginx 集群

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

在这里插入图片描述

    upstream nginxCluster {
        server 192.168.126.129:8080;
        server 192.168.126.129:8081;
        server 192.168.126.129:8082;
    }
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

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

vi  /root/nginx/conf/nginx/conf.d/default.conf
  • 1
  • 2
  • 3

在这里插入图片描述

location /{
proxy_pass http://nginxCluster;
}
  • 1
  • 2
  • 3

在这里插入图片描述

三、安装Mysql

密码设置为: root

1、拉取镜像

docker pull mysql:5.7
  • 1

2、启动容器 并设置 密码

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

3、访问测试,进入容器

 docker exec -it mysql5.7-3306 bash
  • 1

连接mysql数据库:

mysql -uroot -p
  • 1

在这里插入图片描述

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

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

5、刷新权限:

MySQL>FLUSH PRIVILEGES;
  • 1

6、退出:

MySQL>EXIT;
  • 1

3===> Dockerfile 定制镜像

在这里插入图片描述
WORKDIR

在这里插入图片描述

VOLUME

在这里插入图片描述

EXPOSE

在这里插入图片描述

在这里插入图片描述

一、创建一个镜像

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

docker image prune
  • 1

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

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

在这里插入图片描述

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

vim Dockerfile
  • 1

输入命令

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/
  • 1
  • 2
  • 3
  • 4

3、构建镜像

demo1 镜像名称

docker build -t demo1 .
  • 1

4、运行镜像所在容器

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

这样就访问 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/
  • 1
  • 2
  • 3
  • 4

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

docker build -t demo3 .
  • 1

运行容器

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

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/215070
推荐阅读
相关标签
  

闽ICP备14008679号