docker原理与使用

本文包括:

  • Docker 简单概念
  • 如何安装(centos7)
  • container和image操作命令
  • Dockfile 简单实用
  • dockerHub 简单使用

Docker简单概念

  • Docker 为C/S 架构模式,使用远程API管理和创建容器。
  • 使用docker前, 必须确保有启动状态的docker-daemon作为服务端 和 docker 命令作为客户端。docker client 发送请求,docker-daemon拉取所需镜像,创建容器。
  • 容器必须通过运行镜像启动
  • 镜像是一个可执行包,包含运行所需要的一切代码、运行时、环境变量和配置文件。
    我们可将镜像理解成一个或多个可执行的层(一般为多个),这个层是可读的。在可读层上添加一个读写层,即形成容器。再为容器分配一个独立的进程空间,即形成运行态容器。

安装

清理旧版本

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

设置docker存储库,后期通过存储库安装和更新

$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

安装

//默认最新版本
$ sudo yum install docker-ce

//指定版本
$ yum list docker-ce --showduplicates | sort -r
$ sudo yum install docker-ce-<VERSION STRING>

启动

sudo systemctl start docker

container 操作

commandact
create为镜像添加可读写层,构成一个未运行的容器
start为上面没有运行的容器添加一个进程隔离空间,即启动容器
runcreate + start
stop向容器主进程发送SIGTREM信号,给容器收尾时间,然后发送SIGKILL强行终止进程
kill给docker中的所有进程发送SIGKILL信号
pause利用cgroup特性将运行中的容器进程空间暂停,发送SIGTSTP信号
rm移除镜像的可读写层,仅对非运行态容器有效
logs查看容器日志 -f <containerID>
ps陈列容器信息 -a查看所有状态的容器 -q仅显示containerID
exec通过宿主机在容器中执行一个新进程
inspect提取容器或镜像的元数据 docker inspect containerId(或imageId)
重要 stats实时监测宿主机的容器资源使用情况,在docker里,free等命令监测的是宿主机资源

image操作

commandact
images列出所有顶层镜像,即创建容器时使用的镜像 golang为基础创建一个新的镜像后,images仅显示新镜像,查看所有镜像层使用-a
commit将容器的可读写层转换为只读层,形成一个顶层镜像
rmi移除构成镜像的只读层,并且只能移除顶层。也可使用-f参数移除中间的层
save将image归档到文件 docker save imageName > /home/image.tar
load加载到本地 docker load < /home/image.tar
tag重新标记镜像 docker tag oldImageName newImageName
history递归输出镜像的历史镜像
简单的Dockerfile使用

docker会通过Dockerfile的指令来一步步创建容器

# 使用centos7基础镜像
FROM centos:7.2.1511

# 指定工作路径
WORKDIR  /home

# 开启容器的 80 端口,使得外部可以访问
EXPOSE 80

# 定义环境变量
ENV NAME World

# 拷贝文件
ADD  lxd.txt  /tmp/

# 镜像内执行命令
RUN ["yum", "install", "vim", "-y"]

命名必须为Dockerfile,使用命令构造镜像

docker build -t imageName  .  

再引用镜像创建容器:

docker run -d -p 4000:80 imageName

通过在容器内运行bash进入容器:

docker exec -it /bin/bash  <dockerID>

dockerHub使用

dockerHub使用方法和gitHub相同。

  1. 在hub.docker.com注册账号lxdtest
  2. 将自己的镜像并推送到本地仓库
$ docker   images

//标记到本地仓库,注意仓库必须是用户名
$ docker  tag  myImageName   lxdtest/myImageName
  1. push到dockerhub
//推送客户端登录docker账号
$ docker login
$ docker  push  lxdtest/myImageName 

此时远程已存在镜像,可pull使用:

$ docker pull  lxdtest/myImageName
//push后建议清理本机镜像
 $ docker rmi lxdtest/myImageName

就先这样,想到了再补充。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值