目录
8. docker run start exec之间的区别:
9. docker ps 与docker ps -a的区别:
1.安装虚拟机vaware
2.安装cnetos7
坑:
解决win11虚拟机与Hype -v冲突:(VMware Workstation 与 Device/Credential Guard 不兼容)
参照:
https://www.cnblogs.com/ixanq008/p/17429844.html
1. 关闭hv服务;
2.关闭hyper-v;
3.找不到 hyper-v的生成bat脚本,运行以下:
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
4.在控制面板-程序功能-开启关闭windows功能-中关闭hyper-v;
5.以管理员身份启动cmd,输入bcdedit /set hypervisorlaunchtype off,重启
3.安装docker
坑:
centos7里的docker不能直接用yum -y intall docker而是要安装docker-ce
参照:
https://www.cnblogs.com/shineen/p/16440302.htmlhttps://www.cnblogs.com/shineen/p/16440302.html
1. 安装:
yum install -y yum-utils device-mapper-persistent-data lvm2
2. 添加源:
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo(中央仓库)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿里仓库)
3. 安装docker:
yum -y intall docker-ce
坑:
centos yum安装使用时提示 cannot find a valid baseurl for repo:base/7/x86_64 的解决方法
详情:
centos yum安装使用时提示 cannot find a valid baseurl for repo:base/7/x86_64 的解决方法_D-小白兔的博客-优快云博客
出现这个原因90%可能是centos系统没有配制dns,同时也有可能没有激活网卡。
4.制作dockerfile:
坑:dockerfile里使用 from java:8 build时docker找不到java8
修改成 from openjdk:8
坑:打包后docker运行容器时一直提示,no mainfest in container:
运行的项目,没有指定主类:
pom添加:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
<goal>build-info</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
坑:重新打包项目的时候提示版本不对:
org.codehaus.plexus.component.repository.exception.ComponentLookupException: org/springframework/boot/maven/BuildInfoMojo has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0
在build标签里指定版本就行
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.2.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
<goal>build-info</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
5.关闭虚拟机防火墙,开放端口访问:22
详情:
1、命令行界面输入“systemctl status firewalld.service”
2、可以查看得到“active(running)”,表示防火墙已经被打开了。
3、然后输入 systemctl stop firewalld.service 命令,关闭防火墙。
4、在输入命令 systemctl status firewalld.service,下方出现disavtive(dead),说明防火墙已经关闭。
5、输入命令“systemctl disable firewalld.service”就可以永久关闭防火墙
6.将文件上传至dockerfile同级目录:
FileZilla Client,虚拟机ip地址,用户名,密码,端口22;
7. 制作镜像:
docker build -t imagename .
8. docker run start exec之间的区别:
run 是在第一次启动镜像的时候使用,会创建一个容器;
docker run -d -p 20000:20000 --name eureka-server imagename
start 是已经有了容器之后启动时使用;
docker start eureka-server
exec是直接与容器进行交互,比如进入容器里的命令行
docker exec -it eureka-server /bin/bash
9. docker ps 与docker ps -a的区别:
docker ps:只显示正在运行的容器;
docker ps -a:显示所有的容器状态等;
10.dockefilec常见命令:
1. from
定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制需要的基础镜像。
2.add、copy
ADD 指令和 COPY 的使用格式一致(同样需求下,官方推荐使用 COPY)。功能也类似,不同之处如下:
-
ADD 的优点:在执行 <源文件> 为 tar 压缩文件的话,压缩格式为 gzip, bzip2 以及 xz 的情况下,会自动复制并解压到 <目标路径>。
-
ADD 的缺点:在不解压的前提下,无法复制 tar 压缩文件。会令镜像构建缓存失效,从而可能会令镜像构建变得比较缓慢。具体是否使用,可以根据是否需要自动解压来决定。
3.entrypoint
似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。
但是, 如果运行 docker run 时使用了 --entrypoint 选项,此选项的参数可当作要运行的程序覆盖 ENTRYPOINT 指令指定的程序。
优点:在执行 docker run 的时候可以指定 ENTRYPOINT 运行所需的参数。
注意:如果 Dockerfile 中如果存在多个 ENTRYPOINT 指令,仅最后一个生效。
4cmd
类似于 RUN 指令,用于运行程序,但二者运行的时间点不同:
- CMD 在docker run 时运行。
- RUN 是在 docker build。
- 作用:为启动的容器指定默认要运行的程序,程序运行结束,容器也就结束。CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖。
5.run
用于执行后面跟着的命令行命令
FROM centos
RUN yum install wget
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN tar -xvf redis.tar.gz
以上执行会创建 3 层镜像。可简化为以下格式:
FROM centos
RUN yum install wget \
&& wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \
&& tar -xvf redis.tar.gz
参考:
11. docker打包容器上传
docker commit:从容器创建一个新的镜像。
-
-a :提交的镜像作者;
-
-c :使用Dockerfile指令来创建镜像;
-
-m :提交时的说明文字;
-
-p :在commit时,将容器暂停。
docker push myapache:v1 镜像上传。