Docker的使用

Docker的使用

Docker常用命令

1
2
3
4
5
6
7
8
docker run -it [--name <name>] <image> #创建并启动一个容器
# 启用Ptrace方便调试
# --cap-add=SYS_PTRACE --security-opt seccomp=unconfined

docker attach <name> #附加到容器
docker logs -ft <name> #查看容器日志
docker exec -it <name> /bin/bash #使用bash登录目标容器
docker exec -u root -it <name> /bin/bash #以root身份登入

Docker合并镜像所有层

1
2
3
FROM <image>:<tag> as base
FROM scratch
COPY --from=base / /

为创建好的容器修改配置

关闭docker服务

1
2
sudo systemctl stop docker.socket docker.service
cd /var/lib/docker/containers/<container-hash>
  • 添加端口
    1
    2
    3
    4
    # 修改hostconfig.json
    "PortBindings":{"80/tcp":[{"HostIp":"","HostPort":"80"}]}
    # 修改config.v2.json
    "ExposedPorts":{"80/tcp":{}}
  • 启用Ptrace
    1
    2
    3
    # 修改hostconfig.json
    "CapAdd":["SYS_PTRACE"],
    "SecurityOpt":["seccomp=unconfined"]

Docker安装Oracle

  • 创建并启动容器
    1
    2
    3
    4
    5
    6
    7
    8
    9
    docker run -d  \
    -p 1521:1521 -p 5500:5500 \
    -e ORACLE_SID=ORCLCDB \
    -e ORACLE_PDB=ORCLPDB1 \
    -e ORACLE_PWD=root \
    -e ORACLE_EDITION=standard \
    -e ORACLE_CHARACTERSET=AL32UTF8 \
    --name oracle \
    registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    # 以下为每个参数的注释,复制时需要删除注释
    docker run -d \
    # 映射端口号 1521:1521是数据库连接的映射 5500:5500是网络监视的映射
    -p 1521:1521 -p 5500:5500 \
    # SID用于Navicate连接Oracle
    -e ORACLE_SID=ORCLCDB \
    -e ORACLE_PDB=ORCLPDB1 \
    # 密码
    -e ORACLE_PWD=root \
    # 版本
    -e ORACLE_EDITION=standard \
    # 字符集
    -e ORACLE_CHARACTERSET=AL32UTF8 \
    # 名字
    --name oracle \
    registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c
  • 使用SQLPlus登录Oracle
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    docker exec -it oracle /bin/bash
    docker exec -u root -it oracle /bin/bash #以root身份进入

    #使SQLPlus支持UTF-8
    export LANG=en_US.UTF-8
    export NLS_LANG=.AL32UTF8

    sqlplus / as sysdba #免密码登录
    alter session set container=orclpdb1; #切换到pdb

    sqlplus sys/root@ORCLPDB1 as sysdba #直接进入pdb
    show pdbs;