docker安装与使用

前言

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
一个完整的Docker有以下几个部分组成:

  • dockerClient客户端
  • Docker Daemon守护进程
  • Docker Image镜像
  • DockerContainer容器 [2]

安装

注意:本文是基于Centos7.5讲解

操作系统要求

如需安装 Docker CE,您需要 64 位版本的 CentOS 7。

卸载旧版本

没有安装过旧版本,此步骤可以跳过
Docker 的早期版本称为 docker 或 docker-engine。如果安装了这些版本,请卸载它们及关联的依赖资源。

$ sudo yum remove docker \
                  docker-common \
                  docker-selinux \
                  docker-engine

本文是使用镜像仓库进行安装,当然还有其他方式,此处只讲通过镜像安装

安装依赖包
 $ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
设置 stable 镜像仓库
 $ sudo yum-config-manager \
     --add-repo \
     https://download.docker.com/linux/centos/docker-ce.repo
更新 yum 软件包索引。
 $ sudo yum makecache fast

如果这是自添加 Docker 镜像仓库以来您首次刷新软件包索引,系统将提示您接受 GPG 密钥,并且将显示此密钥的指纹。验证指纹是否正确,并且在正确的情况下接受此密钥。指纹应匹配 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35。

安装最新版本的 Docker CE
$ sudo yum install docker-ce

安装指定版本的通过下面这个命令:

$ sudo yum install docker-ce-<VERSION>
启动
 $ sudo systemctl start docker
验证
 $ sudo docker run hello-world
配置阿里镜像

默认情况下,我们下载镜像都是从官方下载,由于是国外的网站,所有速度很慢。阿里云同步了一份国外的镜像仓库,速度比较快
创建文件:/etc/docker/daemon.json输入以下内容:

{
  "registry-mirrors": ["https://o8xmh69u.mirror.aliyuncs.com"]
}

这里的加速器地址是本人的,你自己的加速器,可以到https://dev.aliyun.com/search.html去查找。注册下帐号就有了。

使用

基本概念

镜像与容器的关系 :
镜像时死的,容器是运行的。一个镜像可以生成无数个容器,可以类比为一个类和无数个类实例。
镜像的版本:
镜像名字不加任何后缀表示最新版,例如docker run tomcat 等价于 docker run tomcat:latest

常用命令:

下面以tomcat镜像进行讲解:

  • docker search tomcat : 在远程仓库查询tomcat相关的所有镜像
  • docker pull tomcat : 把镜像拉取到本地
  • docker images :查询当前本地的所有镜像
  • docker run tomcat : 运行tomcat镜像,不指定名字每次都会生成新容器
  • docker run -it tomcat :交互式运行,可以进行操作,例如可以ctrl + p + q 退出,但是容器还在运行
  • docker attach 容器id或名称:重新进入运行的容器
  • docker run -d tomcat : 以后台的方式运行 -d表示deamon
  • docker run --name mytomcat tomcat:运行tomcat容器,并且命名为mytomcat
  • docker run -d -p 8888:8080 --name mytomcat -v /home/app/:/usr/local tomcat-v表示本地数据卷映射,可以理解为目录的影响,两个指针指向同一个位置,独立操作互相都可见。-p表示端口映射
  • docker stop 容器id或名称:停止正在运行的容器
  • docker stop $(docker ps -q): 停止所有正在运行的容器
  • docker start 容器id或名称:启动一个停止的容器
  • docker restart 容器id或名称 : 重启一个运行中的容器
  • docker ps : 查询当前正在运行的容器
  • docker ps -a :查询所有容器,包括停止运行的
  • docker rm 容器id或名称 : 删除容器
  • docker rm -f 容器id或名称 : 强制删除,运行中的容器可以会被删除
  • docker rm $(docker ps -aq) : 删除所有容器
  • docker rmi 镜像名称或id: 删除镜像
  • exit : 退出并关闭容器
  • ctrl + p + q : 退出但不关闭容器
  • docker inspect 镜像或容器id/名称 : 查看镜像或者容器的详细信息
  • docker exec 容器id/名称 命令 : 在运行中的容器执行命令
  • docker cp src 容器标识:des : 复制本地文件或目录到容器中,src为本地路径,des为容器路径
  • docker cp 容器标识:src des :复制容器中的文件到本地
  • docker commit -a "runoob.com" -m "my apache" a404c6c174a2 tomcat:v1 : 把修改后的容器a404c6c174a2 ,打包成一个镜像 tomcat:v1 -a表示作者信息, -m是提交时的注释
  • docker build:用Dockerfile来构建镜像。

Dockerfile

重要指令(指令必须大写):

  • FROM : 基础镜像,当前镜像是基于哪个镜像的
  • MAINTAINER : 镜像维护者的名字和邮箱地址
  • RUN : 容器构建时,需要执行的命令
  • EXPOSE : 当前容器对外暴露的端口
  • WORKDIR : 指定在容器创建完成之后,终端默认打开的工作目录
  • ENV :构建镜像时,设置环境变量
  • ADD : 将宿主机目录的文件,拷贝进镜像,且ADD命令会自动处理url和解压tar压缩包
  • COPY : 类似于ADD,拷贝文件和目录到镜像中,但是不会执行解压等操作,仅仅是拷贝。
  • VOLUME : 容器数据卷,用于数据保存和持久化工作
  • CMD :指定一个容器启动时,要运行的命令,Dockerfile中可以有多个CMD指令,但是只有最后一个生效,另外CMD会被docker run之后的参数替换
  • ENTRYPOINT : 指定容器启动时要运行的命令,ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及参数,但是它不会被覆盖
  • ONBUILD : 都此镜像被继承时,在构建子镜像时,该指令会被执行

示例:

/*使用当前目录下的Dockerfile来构建一个新的镜像,文件名称必须为Dockerfile*/
$ docker build -t centos:v1 .
/*通过 -f Dockerfile 文件的位置*/
$ docker build -f /path/to/a/Dockerfile .  
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值