docker使用记录,


镜像&容器就像java中的类与实例 镜像为类 而容器问镜像的实例

# 查看docker版本
$ docker -v

# 启动
$ systemctl start docker
# 守护进程重启
$ systemctl daemon-reload
# 重启docker服务
$ systemctl restart  docker 或 service docker restart
# 关闭docker
$ systemctl stop docker 或 service docker stop

# 查看镜像
$ docker images
# 查看容器 -a可显示未运行的容器
$ docker ps -a

# docker启动容器分两类三种 基于镜像(交互方式 守护态方式运行) 将终止状态下的容器启动(短暂方式)
# 交互方式 基于镜像创建容器并运行 -i让容器的标准输入保持打开 -t让Docker分配一个伪终端并绑定在容器的标准输入上
$ docker run -it 仓库名:标签名

# 使用镜像app:v1.0 以交互模式启动一个容器 命名为app_1.0 在容器内执行“/bin/bash” 将容器80端口映射至本地主机 127.0.0.1的8080端口
$ docker run -it -p 127.0.0.1:8080:80 --name app_1.0 app:v1.0 /bin/bash

# 守护态方式运行 daemon 如启动centos后台容器 每隔一秒打印当天的日历
$ docker run -d centos /bin/sh -c "while true;do echo hello docker;sleep 1;done"

# 短暂方式 将终止状态下的容器启动
$ docker start centos

# 关闭正在运行的容器
docker stop 容器名称|容器id
# 强制停止正在运行的容器 一般不用 除非卡了
$ docker kill 容器名称|容器id
# 删除容器 容器要处于关闭状态
$ docker rm 容器名称|容器id
# 删除镜像 依赖的容器要被删除
$ docker rmi 镜像名称|镜像id

# 启动已运行过的容器
docker start 容器名称|容器id
# 启动所有运行过的容器 注意反引号不要写错 docker ps -a -q为查询所有运行过的容器id
docker start `docker ps -a -q`
# 停止所有在运行的容器
docker stop `docker ps -a -q`

# 查看启动容器的输出
$ docker logs $CONTAINER_ID # 在容器外查看
$ docker attach $CONTAINER_ID # 连接容器实时查看

java运行实例

FROM java:8
MAINTAINER lilei <tothis@qq.com>
# VOLUME 指定了临时文件目录为/tmp
# 在主机 /var/lib/docker 目录下创建了一个临时文件 并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD etrain-admin-1.0.jar app.jar 
# 运行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
  1. 把可执行jar放在Dockerfile同目录
  2. 制作镜像 -t 指定此镜像的仓库名(app)和标签名(1.0 标签可省略不写 默认为latest) 点代表当前目录
    docker build -t app:1.0 .
  3. 守护态方式启动容器 docker run -d -p 8080:8080 app:1.0

springboot中可直接打包并在本地docker或远程docker创建镜像
maven中添加docker插件 作者推荐使用dockerfile-maven-plugin docker-maven-plugin已被启用

<!--Docker maven plugin-->
<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>dockerfile-maven-plugin</artifactId>
    <version>1.4.10</version>
    <executions>
        <execution>
            <id>default</id>
            <goals>
                <!-- package时如不想docker打包 需注释掉这个goal -->
                <goal>build</goal>
                <goal>push</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <!-- docker仓库名 -->
        <repository>${project.artifactId}</repository>
        <!-- docker镜像标签名 -->
        <tag>${project.version}</tag>
        <buildArgs>
            <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
        </buildArgs>
    </configuration>
</plugin>
文章最后发布于: 2019-10-22 16:00:07

相关内容

    暂无相关文章