Watanuki00 2020-05-31
拉取镜像,docker pull jiftle/dev-env:latest
Dev-Env is Develop Envir with vim & emacs, golang & node. It soupport x11 gui apps, contain gvim ,emacs ,eclipse.
- xz-utils - tree - curl - wget - htop - nmap - git - tig
- build-essential - gcc - g++ - make - cmake
- golang 1.14.2 - node 14.1.0
- gvim 8.2 - emacs 26.3 - eclipse 4.15.0 (2020-03)
% cat conf.cnf #!/bin/bash # ----------------------------------------------------------------- # FileName: conf.cnf # Date: 2020-01-09 # Author: jiftle # Description: # ----------------------------------------------------------------- DockerKey="jiftle/dev-env" DockerVer="1.0" DockerName="dev-env" # ------- 处理GUI显示的问题,原理:x11共享 ------- IP=$(ifconfig en0 | grep inet | awk ‘$1=="inet" {print $2}‘) % cat run.sh #!/bin/bash # ----------------------------------------------------------------- # FileName: run.sh # Date: 2020-01-09 # Author: jiftle # Description: # ----------------------------------------------------------------- . ./conf.cnf echo " |--> 当前主机IP: $IP" # --------------- 定义变量 ------------------ GitPath="${HOME}/tg-git" HostIp="$IP" echo "------------- 运行[${DockerKey}:${DockerVer}]镜像的容器 ------------" echo "---> 开始启动[${DockerKey}:${DockerVer}] Docker" # -e GDK_SCALE # -e GDK_DPI_SCALE # ----------- 运行容器 ------------ docker run -itd `# 注释请忽略,----------- 设置名称 -------------` --name="${DockerName}" `# 注释请忽略,----------- 工作目录映射 -------------` -w /root `# 默认工作目录` -v ${HOME}:/home/john `# 默认工作目录,映射` -v ${GitPath}:/home/john/git `# git仓库目录` `# 注释请忽略,----------- 用户密钥 -------------` -v ${HOME}/.ssh:/root/.ssh `# .ssh密钥` `# 注释请忽略,----------- 端口映射 -------------` -p 8022:22 `# ssh端口` -p 8001:8001 `# 日志仓库,预览服务` -p 8080:8080 `# web程序调试端口` -h "${DockerName}" `# 机器名` --restart=always `# 自启动,容易导致挂载的分区,晚于docker` `# 注释请忽略,----------- 图形界面 -------------` -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=${HostIp}:0 `# 镜像名` ${DockerKey}:${DockerVer} echo "---> 启动[${DockerKey}:${DockerVer}] Docker完毕" % cat exec.sh #!/bin/bash # ----------------------------------------------------------------- # FileName: exec.sh # Date: 2020-01-09 # Author: jiftle # Description: # ----------------------------------------------------------------- . ./conf.cnf # echo " |--> 当前主机IP: $IP" # xhost + $IP # docker exec -it -e DISPLAY=$IP:0 dev-env bash echo " |--> 当前主机IP: $IP" xhost + $IP docker exec -it -e DISPLAY=$IP:0 ${DockerName} bash # ------------ 不显示IP地址 # xhost + # docker exec -it -e DISPLAY=:0 dev-env bash # xhost + # docker exec -it dev-env bash # docker exec -it ${DockerKey} bash
% cat config.cnf #!/bin/bash # ----------------------------------------------------------------- # FileName: commit.sh # Date: 2020-01-17 # Author: jiftle # Description: 提交当前镜像 # ----------------------------------------------------------------- DockerKey="dev-env" # DockerVer="0.1" # DockerVer="latest" DockerVer="eclipse3.8" DockerName="开发环境" % cat run.sh #!/bin/bash # ----------------------------------------------------------------- # FileName: run.sh # Date: 2020-01-09 # Author: jiftle # Description: # ----------------------------------------------------------------- . config.cnf # --------------- 定义变量 ------------------ GitPath="/usrlocal/git" MavenPath="/usrlocal/maven" echo "================= [${DockerName}(${DockerKey}:${DockerVer}] ====================" echo "---> 设置x11访问控制" xhost + echo " |--> [${DockerName}(${DockerKey}:${DockerVer}] 开始启动..." # ----------- 运行容器 ------------ docker run -it `# 注释请忽略,----------- 设置容器实例名称 -------------` --name="${DockerKey}" `# 注释请忽略,----------- 工作目录映射 -------------` -w /root `# 默认工作目录` -v ${HOME}:/home/john `# 默认工作目录,映射` -v ${GitPath}:/home/john/git `# git仓库目录` -v ${MavenPath}:/home/john/maven `# maven仓库目录` `# 注释请忽略,----------- 用户密钥 -------------` -v ${HOME}/.ssh:/root/.ssh `# .ssh密钥,需要具有写权限` `# 注释请忽略,----------- 端口映射 -------------` -p 8001:8001 `# 日志仓库,预览服务` -p 8080:8080 `# web程序调试端口` `# 注释请忽略,----------- 解决时区问题 -------------` -v /etc/localtime:/etc/localtime:ro -h "${DockerKey}" `# 机器名` `# --cpuset-cpus="0" # 指定使用CPU的编号` `# -m 2G # 限制最大内存占用` --privileged `# --memory-swap=4G # 交换内存` --restart=always `# 自启动,容易导致挂载的分区,晚于docker,使用时做好磁盘挂载,建议修改/etc/fstab` `# -------------- GUI程序设置 ----------------` -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY --cap-add=SYS_PTRACE --security-opt seccomp=unconfined `# 解决dlv调试附加失败的问题` `# 镜像名` ${DockerKey}:${DockerVer} /sbin/init echo " |--> [${DockerName}(${DockerKey}:${DockerVer}] 启动成功. ^-^" % cat exec.sh #!/bin/bash # ----------------------------------------------------------------- # FileName: exec.sh # Date: 2020-01-09 # Author: jiftle # Description: # ----------------------------------------------------------------- . config.cnf docker exec -it ${DockerKey} bash