Docker概述
Docker是一个开源的应用容器引擎,开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,可以直接使用该镜像做容器做底层的封装。
docker是一套完整的容器管理系统。
docker提供了一组命令,让用户更加方便直接的使用容器技术,而不需要过多关心底层内核技术。
Namespace(命名空间)——实现容器内的用户、进程、网络、消息、文件系统和主机名的隔离。
Cgroup——实现对资源的分配,可以指定实例使用的cpu个数,内存大小等。
安装docker
yum -y install docker && systemctl restart docker
镜像操作:
装完可以搜索镜像,可以直接搜索云上的镜像(nginx、httpd等)
docker search centos // 搜索镜像,需联网操作
docker images //查看本地镜像
docker history docker.io/busybox //查看镜像制作历史
docker inspect docker.io/busybox //查看镜像底层信息
docker pull docker.io/centos //下载镜像
docker push 镜像名 //上传镜像,一般不常用
docker rmi //删除本地镜像,rmimage的意思
docker save docker.io/busybox:latest -o busybox.tar //导出镜像备份为tar包
rsync -av busybox.tar 192.168.1.2:./ //rsync同步到另一台机器
docker load -i busybox.tar //导入tar镜像
docker tag docker.io/busybox:latest oo:xx 修改镜像名称和标签,相当于添加一个软链接
容器操作:
docker run -itd docker.io/centos //运行容器,-it启动容器,-d为后台运行容器
docker ps -a //查看容器列表,-a查看全部,-q只看容器id
docker start f2c775ebfc47 //启动容器
docker restart //重启容器
docker stop //关闭容器
docker inspect 7e1b0f46cbb6 //查看容器底层信息
docker top //查看容器进程列表
docker rm //删除容器//需要关闭容器才可以删除
docker attach //进入容器,但exit容器会自动停止
docker exec -it //进入容器,一般使用这个
docker run --name nginx-test -p 8080:80 -d nginx //运行nignx程序容器
自定义镜像:
docker run -it docker.io/centos//启动容器,安装添加的服务或者包
docker commit a7b myos:latest //然后ps -a找到容器id,使用commit命令自定义一个新的镜像
docker images //查看镜像
Dockerfile:
Dockfile相当于是docker的脚本,将docker命令直接写到Dockfile文件中统一执行,生成定制的image,有额外的需求时,只需在Dockerfile上添加或者修改指令即可。
Dockerfile写法
FROM //指定基础镜像
EXPOSE //开放的端口
ENV // 设置变量
ADD // 复制文件到镜像
RUN // 制作镜像时执行的命令,可以有多个
WORKDIR //定义容器默认工作目录
CMD // 容器启动时执行的命令,仅可以有一条
创建一个Dockerfile文件,简单装几个包
mkdir -p /tmp/Dockerfile
vim /tmp/Dockerfile
FROM docker.io/centos:latest
RUN yum repolist
RUN yum -y install vim net-tools psmisc iproute
然后执行下面命令
docker build -t test:latest /opt/dockerfile/ //运行dockerfile文件
查看结果
docker run -itd test:latest
docker exec -it d5bddf9de1b7 /bin/bash