虚拟容器技术dokcer--01

一、docker

虚拟机是物理层面的隔离;docker是application层面的隔离。虚拟机如vmware,建2台虚拟机他们的隔离是完全隔离的,使用前要提前好设置cpu/mem/硬盘等硬件资源的大小。

二、操作命令(centos)

安装docker

查询yum版本:yum info yum
查找能安装的安装包:yum search redisyum list| grep redis
查看具体的安装包信息:rpm -qi centos-release-6-10.el6.centos.12.3.x86_64
更新yum:yum update
卸载以前的软件:yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
安装docker依赖:yum install -y yum-utils device-mapper-persistent-data lvm2
添加docker社区版repository:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
列出可安装的版本:yum list docker-ce --showdumplicates|sort -r
选择一个版本进行安装:yum -y install docker-ce-18.06.1.ce-3.e17

启动docker

启动docker:systemctl start docker
设置docker开机自启动:systemctl enable docker
查看版本:docker version

image相关命令

运行helloWorld:docker run hello-world(hello-world是镜像名称)
官方拉取ubuntu系统镜像:docker pull ubuntu:14.04
查看本地有哪些镜像:docker image ls
查看镜像内容:docker history imageId
拉取centos镜像并交互式运行:docker run -it centos。先pull再run
删除镜像:docker rmi imageName
【1】制作docker镜像:docker build -t docker官网用户名/制作的镜像名称 .,如docker build -t dockerLoginName/imageName .。加上docker官网用户名是为分享做准备;如果不加则无法分享。
【2】根据container创建image镜像:docker commit containerName dockerUsername/newImageName
【3】分享镜像:docker login登录已注册的账户;docker image push dockerLoginName/imageName将本地制作的镜像推送到docker官网仓库。

container相关

列出container:docker container lsdocker container ls -a
只列出container的id:docker container ls -aq
移除container:docker container rm containerId
移除所有container:docker container rm $(docker container ls -aq)docker rm $(docker container ls -qa)
查询没有运行的container:docker container ls -f "status=exited"docker container ls -s "status=exited" -q
退出container并关机:在container里执行exit
停止container:docker stop containerId

三、整体架构

docker运行架构

底层技术

Namespaces:命名空间,用来做网络隔离
Control roups:做资源限制,如设置占用多少内存\cpu等
Union file systems:image和container的分层

四、Dockerfile文件内容

镜像文件名称必须是Dockerfile、关键字尽量使用大写,关键命令解析:

1)FROM
FROM scratch    #从头开始
FROM centos #使用centos作为系统,若没有则拉取
FROM centos:7.0 #使用系统+版本号
2)LABEL #相当于注释或者说明信息
LABEL version="1.0"
LABEL author="zhangsan"
3)RUN   #执行命令,每执行一条RUN,就会多一层
RUN yum -y update
RUN yum -y install lrzsz
RUN yum -y update && yum -y install lrzsz \
    net-tools
4)WORKDIR   #进入或创建目录
WORKDIR /root   #进入/root目录
WORKDIR test    #系统没有,则自动创建/test目录
WORKDIR demo
RUN pwd #位于/test/demo目录
5)ADD and COPY  #将本地文件添加到镜像里;ADD可以解压缩文件
ADD hello /
ADD xxx.tar.gz /    #添加并加压到根目录
WORKDIR /root/test
COPY hello .    #将hello拷贝到/root/test/目录下
6)ENV   #
ENV MYSQL_VERSION 5.6   #设置常量
RUN apt-get -y install mysql-server="${MYSQL_VERSION}"
7)shell和exec写法的区别
#shell格式
RUN apt-get -y install lrzse
CMD echo "hello docker"
ENTRYPOINT echo "hello docker"
如内容:
FROM centos
ENV name Docker
ENTRYPOINT echo "hello $name"   <----看这里
#exec格式
RUN ["apt-get","-y","install","lrzsz"]
如内容:
FROM centos
ENV name Docker
ENTRYPOINT ["/bin/bash","-c","echo hello $name"]   <----看这里
8)ENTRYPOINT与CMD的区别
#若docker指定了其他命令,CMD会被忽略
FROM centos
ENV name Docker
ENTRYPOINT echo "hello world" <---执行这条,后面的CMD不会被执行
CMD echo "hello $name"
#若定义多个CMD,只会执行最后一个
FROM centos
ENV name Docker
CMD echo "123"  
CMD echo "hello $name"  <---只会输出本条的CMD,之前的不会被执行输出
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、什么是docker容器? 容器就是在隔离的环境运行的一个进程,如果进程停止,容器就会销毁。隔离的环境拥有自己的...
    Jzyue阅读 2,880评论 0 1
  • 1、分别使用lxc容器和docker容器搭建nginx服务,能够正常访问到容器内的web服务 下载docker-c...
    stephe_c阅读 4,518评论 0 0
  • 一 docker 1 历史的进化 物理机应用安装比较麻烦:部署非常慢,成本高,资源浪费(比方说有的计算耗费cpu不...
    陈朝辉_39f7阅读 5,858评论 0 0
  • 以下所有环境都在vmware 15完成。 ===================centos7基础初始化=====...
    Status_3175阅读 17,791评论 1 1
  • 什么是Image? 废话不多说,先上图 最底层的Linux Kernel就是宿主机的操作系统内核,这一部分是共享的...
    Abububiu阅读 4,502评论 0 0