linux

linux之手动实现容器

目录隔离 创建目录 在工作目录下创建/usr,并将本机该目录下的所有文件copy到工作目录中 启动程序 启动单独mount namespace的程序 unshare -m bash 如果通过unshare命令后,挂载目录后,在其它的mount namespace中仍然可以通过 mount 命令查到,则下载最新的unshare可执行文件 挂载目录 当通过docker run -v挂载目录时,将某个容器外的目录挂载至容器内 mount --bind /data1 data 发现在该mount namespace中,mount命令执行结果如下 [root@k8s-master mount]

  • 刘凯
10 min read
docker

查看docker容器的tcp连接

查看容器内的tcp连接 当需要查看tcp连接时,通常使用netstat或ss命令查看,但是查看docker容器的tcp连接存在两个问题 docker容器中无netstat或ss命令 node节点上无法查看容器中的连接 查看docker容器中网络连接 通过容器中的proc文件查看 查看proc文件内容 cat /proc/net/tcp 内容分析,主要关注的点是local_address、rem_address sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt

  • 凯文
6 min read
docker

通过ip netns操作docker

创建docker容器后本来应该有新的命名空间(如果有独立网络的话),那么可以通过 ip netns 命令查看到命名空间,但是实际上却看不到。 查过资料才发现,ip netns 只能查看到/var/run/netns 下面的网络命名空间。docker 不像openstack neutron 会自动在这个文件创建命名空间名字,需要手动创建。 创建方法是: pid=`docker inspect -f '{{.State.Pid}}' $container_id` ln -s

  • network
1 min read
docker

3. docker之容器隔离

Namespace-进程隔离 本来,每当我们在宿主机上运行了一个 /bin/sh 程序,操作系统都会给它分配一个进程编号,比如 PID=100。这个编号是进程的唯一标识,就像员工的工牌一样。所以 PID=100,可以粗略地理解为这个 /bin/sh 是我们公司里的第 100 号员工,而第 1 号员工就自然是比尔 · 盖茨这样统领全局的人物。 而现在,我们要通过 Docker 把这个 /bin/sh 程序运行在一个容器当中。这时候,

  • docker
25 min read
docker

1. docker之基础命令

基础 概念 version-查看docker的版本信息 容器相关 ps-查看运行中的docker容器 logs-查看docker日志 exec-执行docker中的命令 cp-复制文件 create-从镜像创建容器 run-从镜像启动容器 rm-删除容器 start-启动停掉的容器 stop-终止的容器 kill-强行终止容器 inspect-查看容器的信息 镜像相关 images-查看本地镜像 search-在dockerhub搜索镜像 pull-从dockerhub上拉取镜像 tag-对镜像设置标签 push-推送镜像至镜像仓库 login-登录镜像仓库 rmi-删除镜像 Dockerfile-文件格式 build-构建镜像 commit-构建镜像 import-导入容器 export-导出容器 save-存出镜像 load-载入镜像 附-容器与镜像的概念 概念 Docker是一个开源的引擎,

  • docker
18 min read