docker 基本指令

  1. build
docker build -t rep_name:tag .
// 注意后面的路径 .

如果镜像和之前的同名 rep:tag 会覆盖之前的,导致之前的镜像没有rep:tag

  1. run
docker run -d --name container_name -p 8080:8080 --restart=always rep_name:tag
  1. 启动容器
docker start container_id
docker restart container_id
  1. 停止容器
docker stop container_name

强制停止

docker kill container_name
  1. 进出容器
docker exec -it container_name /bin/bash
退出:Ctrl+d ,容器内Ctrl+C
  1. 查看镜像
docker images
  1. 删除镜像
docker rmi image_id
  1. 查看容器
docker ps
  1. 删除容器
docker rm container_id
  1. 导出镜像
docker save -o  指定地址和文件名 image_rep/tag
  1. 加载一个可用镜像
docker load -i 包名.tar
  1. docker-compose
// 创建容器,并后台启动
docker-compose up -d

设置Dockerfile

FROM openjdk:8

# 
ENV PREFIX=/geoserver-deploy
ENV PACKAGE_NAME=geoserver-2.18.0
ENV CUSTOM_FONT_DIR=/usr/share/fonts/custom/
ENV HOST_CACHE_DIR_NAME=./docker-data

# COPY ${HOST_CACHE_DIR_NAME}/GILLUBCD.TTF ${CUSTOM_FONT_DIR}
# RUN apt-get update && apt-get install -y fontconfig
# RUN fc-cache -f -v ${CUSTOM_FONT_DIR}

# 设置当前容器指定目录, 如果没有,容器根目录下会自动创建此文件夹, `cd /`切换到根目录
WORKDIR ${PREFIX}
ADD ${PACKAGE_NAME}.zip ./
RUN unzip ./${PACKAGE_NAME}.zip

WORKDIR ./${PACKAGE_NAME}/bin
RUN chmod +x startup.sh
CMD ./startup.sh

docker指令执行两种方式

方式1:脚本文件

windows上面bat文件双击运行:

@echo off
:: 变量
set REPOSITORY_NAME=geoservertest
set TAG_NAME=1.0.0
set CONTAINER_NAME=geoservercontainer
set HOST_PORT=3000
set CONTAINER_PORT=8080
set CONTAINER_DIR_PREFIX=/geoserver-deploy
set PACKAGE_NAME=geoserver-2.18.0
:: 主机文件挂载目录
set HOST_CACHE_DIR_NAME=C:\docker-data


@echo on
@echo start to build...
:: 打包 -t表示tag
docker build -t %REPOSITORY_NAME%:%TAG_NAME% .
pause

@echo start to run..
:: 停止容器
docker stop %CONTAINER_NAME%
:: 移除容器
docker rm %CONTAINER_NAME%
:: 运行容器 -d表示后台运行 -v设置挂载
docker run -d --name %CONTAINER_NAME% -p %HOST_PORT%:%CONTAINER_PORT% -v %HOST_CACHE_DIR_NAME%/start.ini:%CONTAINER_DIR_PREFIX%/%PACKAGE_NAME%/start.ini -v %HOST_CACHE_DIR_NAME%/web.xml:%CONTAINER_DIR_PREFIX%/%PACKAGE_NAME%/webapps/geoserver/WEB-INF/web.xml -v %HOST_CACHE_DIR_NAME%/data_dir:%CONTAINER_DIR_PREFIX%/%PACKAGE_NAME%/data_dir --restart=always %REPOSITORY_NAME%:%TAG_NAME%
pause

:: @echo show logs...
:: @echo
:: docker logs -f %CONTAINER_NAME%
:: pause

:: @echo enter container....
:: @echo
:: docker exec -it %CONTAINER_NAME% sh
:: pause

方式2: 配置文件

  1. .env文件–定义一些docker-compose.yml中使用的变量
REPOSITORY_NAME=geoservertest
TAG_NAME=1.0.0
CONTAINER_NAME=geoservercontainer
HOST_PORT=3000
CONTAINER_PORT=8080
CONTAINER_DIR_PREFIX=/geoserver-deploy
PACKAGE_NAME=geoserver-2.18.0
HOST_CACHE_DIR_NAME=C:\docker-data
  1. 定义docker-compose.yml文件
version: "3.0"
services:
  geoserverdemo: #项目id
    build: #启动服务时,先将build中指定的dockerfile打包成镜像
      context: . #指定上下文目录dockerfile所在目录
      dockerfile: Dockerfile #Dockerfile文件名称
    image: $REPOSITORY_NAME:$TAG_NAME
    container_name: $CONTAINER_NAME
    restart: always
    ports:
        - $HOST_PORT:$CONTAINER_PORT
    volumes: # 设置挂载
        - $HOST_CACHE_DIR_NAME/start.ini:$CONTAINER_DIR_PREFIX/$PACKAGE_NAME/start.ini
        - $HOST_CACHE_DIR_NAME/web.xml:$CONTAINER_DIR_PREFIX/$PACKAGE_NAME/webapps/geoserver/WEB-INF/web.xml
        - $HOST_CACHE_DIR_NAME/data_dir:$CONTAINER_DIR_PREFIX/$PACKAGE_NAME/data_dir
  1. 执行
// 启动
docker-compose up -d
// 停止
docker-compose stop

文件目录一览

在这里插入图片描述

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐