Docker 是一个开源的应用容器引擎,主要利用 linux 内核 namespace 实现沙盒隔离,用cgroup 实现资源限制。
配置docker环境:
cd /etc/yum.repos.d/
vim westos.repo ##编辑yum源配置文件
yum install containerd.io-1.2.5-3.1.el7.x86_64.rpm container-selinux-2.21-1.el7.noarch.rpm docker-ce-18.09.6-3.el7.x86_64.rpm docker-ce-cli-18.09.6-3.el7.x86_64.rpm -y ##安装docker所需要的包
systemctl start docker ##打开docker服务
yum install bash-* -y ##安装命令补齐插件
sysctl -a |grep bridge ##过滤桥接信息
cd /etc/sysctl.d/
vim docker.conf ##编辑配置文件,设置桥接信息打开
sysctl --system ##重载信息
ip addr show ##会分配docker的ip
docker简单搭建:
docker load -i game2048.tar ##加载镜像
docker run -d --name vm1 -p 80:80 game2048 ##-p设置端口影射:前为物理机端口,;后为docker端口
docker ps
docker容器基础命令:
docker run -it --name vm1 ubuntu bash ##创建容器
docker ps -a ##查看容器状态
docker attach vm1 ##连接容器
docker top vm1 ##查看容器进程
docker logs vm1 ##查看容器指令输出 -f 参数可以实时查看
docker inspect ##查看容器详情
docker stats vm1 ##查看容器资源使用率
docker diff vm1 ##查看容器修改
docker run -d --name vm1 ubuntu bash -c "while true; do echo westos; sleep 1; done" ##后台运行
docker stop vm1 ##停止容器
docker start vm1 ##启动容器
docker kill vm1 ##强制干掉容器
docker restart vm1 ##重启容器
docker pause/unpause vm1 ##暂停/恢复容器
docker rm vm1 ##删除容器
docker export vm1 > vm1.tar ##导出容器
docker import vm1.tar image ##导入容器为镜像 image
镜像用来创建容器,是容器的只读模板,默认可以从 docker hub 上下载。docker 的镜像是增量修改,每次创建新的镜像都会在父镜像上构建一个增量的层,基于 AUFS 技术。
景象是分层构建,这个结构有个很大的优点是不需要重复拉取基础镜像,如果此容器中已经有了新配置服务的所需镜像,那就不需要重复拉取,减小资源压力。那么镜像的分层结构:
- Copy-on-Write 可写容器层。容器层以下所有镜像层都是只读的。
- docker从上至下依次查找文件
- 容器层保存镜像变化部分,不对镜像本身进行修改
- 一个镜像最多127层。
镜像新建基础命令:
docker search ##查询镜像
docker pull ##拉取镜像
docker push ##推送镜像
docker images ##查看本地镜像
docker inspect xxxx ##查看xxxx镜像详情
docker save ubuntu > ubuntu.tar ##导出镜像
docker load -i ubuntu.tar ##导入镜像
docker commit 镜像名 保存镜像名:标示 ##更新镜像,可以保存新建镜像
docker rmi ##删除镜像
通过编辑dockerfile文件,新建镜像。
mkdir docker
vim dockerfile
From busybox ##指定基础镜像层
RUN echo dockerfile1>file1 ##新建文件file1
RUN echo dockerfile1>file2
docker build -t test:v1 . ##在本地新建容器
docker history test:v1 ##查看容器历史命令
对比命令新建容器,使用文件新建容器,容易安全审计,并且具有缓存特性。
如果没有修改之前的配置文件,在其末尾追加命令,那么docker就会使用之前建立的缓存,不再新建中间容器,与之前新建的docker使用一部分相同的镜像文件。
dockerfile构建为逐一构建。通过docker commit进行操作,来执行命令,一句语句一层镜像。