docker
LXC: linux Container 容器级虚拟化的解决方案
docker: 是LXC的增强版
docker宗旨一个容器,只运行一个进程
docker镜像是分层构建,联合挂载
容器编排工具
- machine+swarm+compose docker自身研发的
- mesos+marathon apache基金会的
- kubernets ---> k8s 谷歌研发的
docker镜像
镜像标签
nginx:latest latest代表最新版
nginx:stable stable 代表稳定版中的最新版
镜像和容器的关系相当于程序和进程,因此我们要把容器持久化的数据映射到本地。
镜像是静态,只读的
容
器:是动态的,在最上的一层镜像上加了一层可写层
安装docker
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache
yum -y install docker-ce
docker version 查看docker版本
配置docker镜像加速器
# 可以配置阿里云,中国科技大,网易云,七牛云,docker cn
[root@db02 ~]# cat /etc/docker/daemon.json
{
"registry-mirrors":["https://reg-mirror.qiniu.com/"]
}
systemctl start docker
docker info 查看信息
docker 命令
新版docker命令进行了分组
docker image --help //docker镜像的命令
docker contanier --help //docker容器的命令
docker network --help // docker网络的命令
docker version
老版docker命令
docker search 搜索镜像
docker pull 拉去镜像 == docker image pull
docker pull <registry>:<port>/<namespace>/<name>:<tag>
port 默认是443
如果使用第三方镜像,需要指定
docker images 列出所有镜像 == docker image ls
docker ps 列出正在运行的容器 == docker contanier ls
docker container top 查看那个容器更消耗资源
docker run [options]
-i: 交互式
-t: 给容器一个终端
-d: 置于后台
--name: 给运行的镜像一个名字
docker run -it --name b1 busybox:latest /bin/sh
# inspect 查看docker对象的详细信息
docker container inspect b1 查看容器b1的详细信息
docker image inspect busybox:latest 查看镜像 busybox的详细信息
docker network inspect bridge 查看网络桥bridge的信息信息
# 基于容器制作镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
docker commit -a "cazam" -p -c 'CMD ["/bin/httpd","-f","-h","/data"]' b1 czazm:v0.1
-p 暂停容器,进行打包,防止容器进行写入
-a 加入作者信息
-c 改变dockerfile中的命令
docker tag 重新给镜像打标签
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
测试环境下可以使用alpine版,或其他版本,但在生产环境要自己做镜像,带调试工具,和配置文件调优
docker 容器中运行的程序的PID为1的,即它停止了,整个用户空间关闭,容器也就关闭,在容器中跑的任何程序,一定不能置于后台,如果程序置于后台,说明此程序,是在某个程序之下运行的。即PID不为1,而容器指定此程序的PID1,所以程序置于后台,就相当于PID为1的程序已经停止了,即容器一启动就停止
docker镜像的详细描述
docker 镜像含有启动容器所需的文件系统及其内容,因此用于创建启动docker容器。采用分层构建的机制,最底层为bootfs,其上为rootfs
bootfs:用于系统引导的文件系统,包括bootloader和kernel,容器启动完成后,会被卸载已节约内存资源
rootfs:位于bootfs之上,表现为docker的根文件系统
传统模式中,系统启动之时,内核挂载rootfs时,会首先将其挂载为只读模式,完整性,自检完成后,将其重新挂载为读写模式
docker中,rootfs由内核挂载为"只读模式",而后通过联合挂载技术,额外挂载一个可写层
位于下层的镜像称为父镜像,最底层的称为基础镜像。
最上层为"可读写层",其下的均为只读层
docker 镜像使用联合挂载系统 overlay2
第三方镜像仓库
quay.io
镜像生成途径
dockerfile
基于容器制作 => 把最上面的可写层,制作成镜像
docker hup automated builds => docker hup 基于dockerfile 自动构建镜像
基于容器制作镜像: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
推送镜像
docker login 登录
docker push 推送镜像
我们如果想把镜像,推到第三方仓库,我们镜像的名字签名的标签,必须有为第三方仓库,http的标签。
如阿里的docker仓库
https://cr.console.aliyun.com/cn-beijing/instances/repositories
docker login --username=czazm registry.cn-beijing.aliyuncs.com
docker tag czazm:v0.1 registry.cn-beijing.aliyuncs.com/nairui/busybox:v0.1
docker push registry.cn-beijing.aliyuncs.com/nairui/busybox:v0.1
docker logout 退出登录
镜像的导入和导出
docker save [OPTIONS] IMAGE [IMAGE...] 导出镜像
-o 把导出的镜像输出个文件
docker save -o busybox.gz busybox:latest czazm:v0.1 导出busybox和czazm镜像到busybox的文件
docker load [OPTIONS] 导入镜像
-i: 从哪个文件中导入镜像
docker load -i busybox.gz
网友评论