docker 简单原理及相关命令(镜像拉取 删除 执行容器 进入容器)
docker 前生:
linux container lxc 是docker 之前底层就是使用的东西,
chroot 也是容器使用的前生
我们的docker呢就是一款流行的容器工具,也是cs架构
docker是内核级的虚拟化,通过cgroup 以及namespace来实现资源的隔离。
docker 的安装
准备工作
rm -fr /etc/yum.repos.d/local.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
sed -i 's#download.docker.com#mirrors.tuna.tsinghua.edu.cn/docker-ce#g' /etc/yum.repos.d/docker-ce.repo 换清华园
yum install docker-ce -y
设置开机启动
systemctl start docker
systemctl enable docker
docker 的三大组件
镜像 容器 仓库
docker 运行一个nginx容器,默认走的是最新版本
docker -it -p 80:80 nginx:latest
-d 是deamon 守护进程
-p 是端口映射
vi /etc/docker/daemon.json
{ "registry-mirrors": ["https://registry.docker-cn.com"] }
systemctl restart docker
docker 镜像查询
docker search nginx
拉取镜像
docker pull centos:6.8
查看镜像
docker images
REPOSITORY TAG IMAGEID CREATED SIZE
docker.io/gitlab/gitlab-ce lastest 3cc8e8a0764d 2.04G
删除镜像
docker image rm centos:6.8
导入加载镜像:一般从私有仓库里面导入
docker load -i docker-centos7.5.tar.gz
运行一个容器:
docker run -d -p 80:80 nginx:lastest
run 执行容器
-d deamon
-p 端口映射
docker run -it --name centos6 centos:6.9 /bin/bash 能直接进入到镜像 的bash中,注意容器是有生命周期的,需要hang在哪里容器才能存活,若是不夯筑容器的生命周期就结束了。
-it 分配交互式的终端 terminal interface
--name 指定运行容器的名字
/bin/bash 覆盖容器的初识命令
--cpus 指定cpu的数量
--memory 限定内存的大小
-h 指定容器的主机名
容器的排错调试
docker exec -it centos6(容器的名字或者是id) /bin/bash
docker attach [options] container
docker attach 3ace9663qqrq 进入正在执行的容器中
docker ps 查看容器信息
停止容器
docker stop containerid
docker kill container_name
批量删除
docker rm -f `docker ps -a -q`
本质是进程,必须在前台运行且夯住,否则容器就退出
容器的端口映射
容器的默认使用的ip是172.17.0.0/16 网段,而我们外界是10.0.0.0/24网段无法访问所以需要端口的映射。
docker 将自动添加端口的映射通过-p 然后本质是执行的一个iptables 添加一条类似于dnat的规则
docker run -it -p 81:80
可以通过 iptables -t nat -L -n 查看到dnat规则
架构就是外网 10.0.0.22 到内核通过iptables转换到docker网桥上去,然后再转发到各个容器。
小弟才疏学浅,但是还是耗子尾汁的哈哈。

浙公网安备 33010602011771号