搞了3天,吐血整理了docker部署中我用到的命令,记录一下。
docker拉取上传镜像太慢可以使用daoCloud的加速器。
右键docker任务栏图标---->设置-----> Daemon------->Registry mirrors中添加
http://f1361db2.m.daocloud.io
# 列出所有容器列表
docker ps -a
# 停止id为a1s1的容器
docker stop a1s1
# 删除容器
docker rm a1s1
# 列出所有镜像
docker images
# 删除mysql最后一个版本的镜像
docker rmi mysql:latest
# 启动docker
systemctl start docker
这几天遇到的问题:
/usr/local/config.xml
java.io.FileNotFoundException: /usr/local/config.xml (No such file or directory)
最难搞的一个问题是,我项目中要求读取文件系统中的一个xml docker部署项目到linux上
报一个文件不存在的问题,原因是因为,docker 部署到linux上之后,
不会去linux的文件系统去读这个xml,而是在docker 项目容器中读取这个xml,所以需要
把这个文件放到容器中。。。。
#docker版本查看
docker --version
#从docker hub提取hello-world的镜像并运行一个容器
docker run hello-world
#列出docker本地所有docker镜像
docker image ls --all
#列出所有docker容器container
docker container ls --all
#这样也可以
docker ps
#列出一些相关的帮助页面(全是英文,反正我看不懂)
docker --help
docker container --help
docker container ls --help
docker run --help
#停止容器根据名称(名称可能是自动生成的)或者根据container ID
docker container stop webserver
#可以省略写成
docker stop webserver
#开启容器根据名字或者container ID
docker start wenserver
#删除了webserver laughing_kowalevski relaxed_sammet这三个容器
docker container rm webserver laughing_kowalevski relaxed_sammet
#可以省略写成
docker rm webserver
#删除镜像根据镜像ID
docker image rm ea6fe4f7d2ec
#springboot项目构建image镜像
1.在根目录下创建Dockerfile
内容如下:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE}.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
2.在pom.xml中添加如下插件
<properties>
<docker.image.prefix>yunqing71</docker.image.prefix>
</properties>
<build>
<!--自定义生成jar包名称-->
<finalName>myDemo</finalName>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.9</version>
<configuration>
<!--下面的配置指定了一个必须的配置,存储库,最终将是yunqing71/项目artifactId-->
<repository>${docker.image.prefix}/${project.artifactId}</repository>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
<!--为了确保在创建docker映像之前解压缩jar,我们为依赖项插件添加了以下一些配置-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack</id>
<phase>package</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
</build>
#配置完成之后,你可以通过以下命令来构建你项目的image镜像
mvnw install dockerfile:build
#你可以把你的镜像推送到docker hub
mvnw dockerfile:push
#您不必注册docker或发布任何东西来运行docker镜像。 您仍然拥有本地标记的图像,您可以像这样运行它:
############## 运行状态退出到能输入命令行ctrl+c ###############
docker run -p 8080:8080 -t yunqing71/demo
#使用Spring配置文件运行刚刚创建的Docker镜像就像将环境变量传递给Docker run命令一样简单
$ docker run -e "SPRING_PROFILES_ACTIVE=prod" -p 8080:8080 -t yunqing71/demo
#或者可以这样
$ docker run -e "SPRING_PROFILES_ACTIVE=dev" -p 8080:8080 -t yunqing71/demo
#在docker容器中调试应用程序
#介绍:
要调试应用程序,可以使用JPDA传输。因此,我们将把容器看作远程服务器。要启用此功能,
请在容器运行期间在java OPTS变量中传递java代理设置,并将代理的端口映射到localhost。
使用Mac的Docker有一定的限制,因为我们不能通过IP访问容器而不使用黑魔法。
$ docker run -e "JAVA_OPTS=-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=n" -p 8080:8080 -p 5005:5005 -t yunqing71/demo
############以上一条没尝试过,按照spring官网抄的。#############
#安装docker在linux上,网上随便找教程。安装完成之后,登录自己的docker
docker login
#拉取自己的镜像,由于push的时候没设置标签,所以这里也就默认下载latest版本了
docker pull yunqing71/demo
#给镜像号为ea6缩写的镜像yunqing71/demo重命名tag为tag4.25,原来是latest
docker tag ea6 yunqing71/demo:tag4.25
#删除之前的tag为latest的镜像,因为image ID相同所以这么删除
docker image rm yunqing71/demo:latest
#上传镜像到docker hub,或者更新镜像到docker hub替换之前的版本
docker push yunqing71/demo:latest
#进入docker容器的目录
docker exec -it [CONTAINER ID] /bin/sh
#退出
exit
#从容器到本地
docker cp <containerId>:/usr/local/config.xml /usr/local
#从本地到容器
docker cp /usr/local/config.xml <containerId>:/usr/local
网友评论