docker run 中的特殊指令

我们要在 docker 中监控主机,但是默认情况下容器中是看不到主机的进程,也看不到主机的网络的……

而且,容器中的root其实只是一个叫 root 的普通用户……

例如:

[root@docker ~]# docker run -it centos
Unable to find image 'centos:latest' locally
Trying to pull repository docker.io/library/centos ...
latest: Pulling from docker.io/library/centos
8ba884070f61: Pull complete
Digest: sha256:8d487d68857f5bc9595793279b33d082b03713341ddec91054382641d14db861
[root@0df145a906bf /]# ps
  PID TTY          TIME CMD
    1 ?        00:00:00 bash
   13 ?        00:00:00 ps
[root@0df145a906bf /]#

如果想改变这些,我们就需要加入以下特殊的启动参数,我们逐一介绍:

--privileged: 简单理解的话就是能够让容器里边的root变成真正的root,能干root能干的事(比如容器中的root其实是无法执行mount命令的)
--pid=host :这个选项的功能是让容器能够看到容器外面的主机的世界,也就是能通过ps aux 来查看主机上的进程

--net=host:这个是禁用了网络隔离,让我们容器共享主机网络,容器的IP地址和主机是一个IP地址

--ipc=host:这个是允许我们设置一些kernel的参数docker run –sysctl net.ipv4.ip_forward=1 someimage


(END)

### 安装和使用JDK 17 #### 创建工作目录并放置 JDK 文件 为了便于管理,在主机上创建专门用于存放 Docker 配置文件以及 JDK 的目录结构,并将预先下载好的 JDK 压缩包放入该路径下: ```bash mkdir -p /usr/local/dockerjdk17_yp && cd /usr/local/dockerjdk17_yp ``` 此命令会建立名为 `dockerjdk17_yp` 的新文件夹来保存后续所需的资源[^2]。 #### 构建自定义镜像 编写 Dockerfile 来指定基础环境及安装步骤,确保最终得到包含所需版本 Java 开发工具集 (JDK) 的定制化镜像。下面是一个简单的例子: ```Dockerfile FROM ubuntu:latest ENV JAVA_HOME=/opt/jdk-17 \ PATH=$PATH:/opt/jdk-17/bin COPY ./openjdk-17_linux-x64_bin.tar.gz /tmp/ RUN tar zxvf /tmp/openjdk-17_linux-x64_bin.tar.gz -C /opt/ && rm -rf /tmp/* ``` 这段脚本说明了如何基于最新的 Ubuntu 发行版作为基底,设置好必要的环境变量之后解压之前准备好的 OpenJDK 归档至 `/opt` 路径内完成部署操作[^1]。 #### 启动容器实例 当上述准备工作完成后就可以通过如下指令运行一个新的交互式的 shell session 或者直接执行特定的应用程序了: ```bash docker build -t my-jdk17-image . docker run -dit --name=my_jdk_container my-jdk17-image bash ``` 这里 `-d` 参数表示以后台模式启动;而 `-it` 则允许用户进入容器内部进行进一步的操作测试等。 对于某些特殊应用场景比如 Jenkins CI 平台来说可能还需要额外考虑集成方面的问题,因为默认情况下它并不自带支持最新版本的 JDK 版本所以得自行处理依赖关系确保能够正常使用[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值