docker分为docker CE 和docker EE,CE即免费社区版,EE即企业付费版。下面基于centos7安装docker CE,其它linux版本可以参考官方文档https://docs.docker.com/install/linux/docker-ce/centos/。docker CE支持64位CENTOS7,并且内核版本不低于3.10,查看当前linux内核版本 uname -r,如果内核版本不符合要求,要先升级内核版本,有两种安装方式yum安装和脚本安装。

  yum源安装

  1. 卸载旧的docker
  2. sudo yum remove docker
  3. 安装
  4. sudo yum install docker-ce ,如果提示没有可用的软件包,则安装相应的依赖包
  5. 安装相关依赖包
  6. sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  7. 加载docker-ce yum
  8. sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

  脚本安装

  1. 获取脚本
  2. curl -fsSL https://get.docker.com -o get-docker.sh
  3. 执行
  4. sudo sh get-docker.sh --mirror Aliyun

  设置docker开机启动

  1. sudo ststemctl enable docker

  默认情况下 docker命令会使用unix socket与docker引擎通信,但是只有root和docker组的用户才可以,所以需要将使用docker的用户添加到docker用户组下

  1. sudo groupadd docker
  2. sudo usermod -aG docker $USER

  校验是否安装成功

  1. docker run hello-world 是否有对应输出

  docker卸载

  1. sudo yum remove docker-ce

  配置镜像加速

  1. docker info 可以查看docker配置信息
  2. vim /etc/docker/daemon.json,没有deamon.json则创建一个,加入如下配置
  3. {
  4. "registry-mirrors":[
  5. "http://hub-mirror.c.163.com"
  6. ]
  7. }
  8. 重启后生效
  9. sudo systemctl daemon-reload
  10. sudo systemctl restart docker

  docker 基本操作

  1. docker 获取镜像 docker pull [选项] [仓库地址[:端口号]/] 仓库名:[标签]
  2. docker search 搜索可用镜像
  3. docker pull --help 查看可用参数
  4. 默认仓库地址为docker hub 默认用户名为 library
  5. 例如 docker pull ubuntu:16.04 将拉取 docker 官方地址下library/ubuntu16.04版本的镜像
  6. 运行镜像
  7. docker run -it -rm ubuntu:16.04 bash 容器启动后将进入容器,执行exit退出容器
  8. -i 交互式操作 -t 启动终端 -rm 退出后删除容器 bash 容器启动后执行的命令
  9. 列出镜像
  10. docker image ls 或者 docker images
  11. 查看镜像、容器、数据卷所占用的空间
  12. docker system df
  13. 仓库名、标签均为NONE的镜像称为虚悬镜像,没有什么价值
  14. docker images -f dangling=true
  15. 删除虚悬镜像
  16. docker image prune
  17. 删除本地镜像 镜像删除前必须确保该镜像没有对应的容器实例
  18. docker image rm [选项] [镜像1] [镜像2] 其中镜像可以是镜像id或者镜像名
  19. 批量删除镜像
  20. docker image rm ${docker image ls -q redis} 删除所有redis镜像
  21. 删除所有ubuntu:16.04以前的镜像
  22. docker image rm ${docker image ls -q -f before=ubuntu:16.04}
  23. 删除容器
  24. docker ps -a 查看容器
  25. docker rm -f 容器id 删除容器
  26. docker container prune 删除所有停止的容器
  27. 容器操作
  28. docker run [image]创建并启动容器
  29. docker start [容器id或者容器名字] 启动已创建的容器
  30. docker run -it ubuntu:16.04 /bin/bash 启动并进入容器
    后台运行 加入 -d参数,此时控制台不会再打印日志 docker容器是否长久运行和run指定的命令有关 和-d参数无关
  31. 后台运行后可以通过 docker logs 容器id查看对应的日志
  32. 进入正在运行的容器
  33. docker exec -it 容器id /bin/bash
  34. 导出和导入容器
  35. docker export 容器id >导出文件名.tar
  36. 导入镜像 cat hello.tar | docker import - study/hello:1.0 运行导入的镜像的时候必须带command,具体命令可以通过docker ps -a 看到
    docker save docker load 保存和加载镜像
    docker save nginx | gzip > nginx.tar.gz
    docker load -i nginx.tar.gz

  基于Dockerfile创建镜像

  1. Dockerfile构建镜像. Dockerfile 所在目录下 执行docker build -t mynginx:1.0 . 构建镜像,常用命令如下
  2. FROM 指定基础镜像 可以是服务镜像(nginx,redis),也可以是操作系统(centos,ubuntu),还有一个特殊镜像scratch,表示空白镜像
  3. RUN 用来执行命令行命令,其格式有两种
  4. shell格式 RUN echo '<h1>hello,hehang</h1>' > /usr/share/nginx/html/index.html,
  5. EXEC格式 RUN tar -xzf redis.tar.gz -C /usr/local
  6. COPY 两种格式
  7. COPY <源路径>...<目标路径>
  8. COPY [<源路径>,...<目标路径>]
  9. 源路径可以是多个,COPY指令将从构建上下文目录中<源文件>的目录/文件复制到新的一层镜像的目标路径,例如 copy redis.conf /usr/local/redis/
  10. 源路径使用通配符,例如 COPY hom* /mydir/
  11. ADD COPY性质一样,文件复制使用COPY,仅在需要自动解压缩的场合使用ADD
  12. CMD RUN类似
  13. shell格式 CMD 命令
  14. exec CMD [可执行文件 参数]
  15. 参数列表格式 在使用ENTRYPOINT后用CMD指定具体的参数
  16. ENTRYPOINT CMD一样,用于指定容器启动程序即参数 docker run --entrypoint,当使用了ENTRYPOINTCMD指令含义发生了变化,不再是执行其后的命令,
    而是将CMD的内容作为参数传递给ENTRYPOINT指令
  17. ENV 指定环境变量
  18. ENV <key><value> 或者ENV <key1=value1> <key2>=<value2>
  19. 无论是其后的指令RUN等或者程序运行时都可以使用这里定义的环境变量 $key
  20. ARG 构建参数,和ENV一样,不同的是ARG所设置的环境变量在容器运行时是不存在的,DockerfileARG是定义参数名称即默认值,在创建镜像时可以用-build-arg <参数名> = <值>来覆盖
  21. VOLUME 定义匿名卷 格式为[<路径1>,<路径2>]或者 VOLUME <路径1>,容器运行时应尽量保持容器存储层不发生写操作,对于数据库类需要动态保存数据的应用应该将数据文件保存在VOLUME中,
    为了防止运行时用户忘记讲动态文件挂载到卷中,可以在Dockerfile中事先将指定目录设置为匿名卷 容器运行时可以覆盖这个挂载设置 docker run -d -v mydata:/data ,
    使用宿主机上当前mydta目录替代了匿名的挂载卷
  22. EXPOSE 用于声明容器提供的服务端口,只是一个声明,容器运行时并不会因此启动这个端口对应的服务,这样做有两个好处
  23. 1、帮助镜像使用者理解这个镜像服务的守护端口,方便映射,
    2、在运行时使用随机端口映射时,docker run -P 会自动随机映射EXPOSE的端口
  24. WORKDIR 指定工作目录 格式WORKDIR<目录>,指定其后的各层的工作目录,因为Dockerfile是分层存储,连续的RUN命令并不是在一个进程中运行,因此在需要改变后续各层的工作目录时需要使用WORKDIR
  25. USER WORKDIR一样指定以后的层执行命令的身份
  26. HEALTHCHECK 健康检查 格式HEALTHCHECK [选项] CMD <命令> 设置容器健康检查的命令 ,例如发送http请求、ping
  27. ONBUILD 后面跟其它指令,如RUNCOPY,这些指令在构建当前镜像不会执行,只有以当前镜像为基础构建下层镜像才会被使用

  docker仓库

  推送自己的镜像到dockerhub

  1. 注册dockerhub用户,登陆后 docker push 可以推送自己的镜像到dockerhub
  2. docker tag 镜像id 用户名/仓库名:标签 ,将镜像重新命名
  3. docker push 用户名/仓库名:标签 推送镜像

  搭建本地仓库

  1. docker run --name registry -d -p 5000:5000 --restart=always -v /opt/data/registry:/var/lib/registry registry
  2. docker tag session-web:latest 127.0.0.1:5000/session-web:latest
  3. docker push 127.0.0.1:5000/session-web:latest
  4. 查看 仓库中的镜像 curl 127.0.0.1:5000/v2/_catalog
    默认私有仓库只支持本机push镜像,即便在同一个网段内,因为docker 默认不支持使用非HTTPS的方式推送镜像,
    可以通过配置取消这个限制
  5. vim /etc/docker/daemon.json 加入 "insecure-reistries":["127.0.0.1:5000"]

  数据挂载

  1. docker 挂载数据
  2. 两种方式 挂载数据卷(doker区域)挂载主机目录(filesystem)
  3. 创建数据卷
  4. docker volume create my-volume
  5. 查看具体数据卷
  6. docker volume inpect my-volume
  7. 挂载数据卷
  8. docker run --name myweb -d -p 8080:8080 -mount source=my-volume ,target=/webapp session-web:latest
  9. 删除数据卷
  10. docker volume rm my-volume
  11. 清理无主数据卷
  12. docker volume prune
  13. 挂载主机目录
  14. docker run --name myweb -d -p 8080:8080 -mount type=bind,source=my-volume ,target=/opt/webapp session-web:latest
  15. taget 必须为绝对路径
  16. 挂载单个文件到容器
  17. docker run --name myweb -d -p 8080:8080 -mount type=bind,source=$HOME/.bash_history ,target=/root/.bash_history session-web:latest 这样可以记录容器中输入的命令

docker安装及基本使用的更多相关文章

  1. 理解Docker(1):Docker 安装和基础用法

    本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

  2. docker安装

    系统要求:需要一个64位的centos7操作系统和版本3.10或更高版本的Linux内核 开始安装: uname -r   //查看内核版本yum -y update //更新系统更新到最新 #安装d ...

  3. 2. Docker - 安装

    一.Docker介绍 1. Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上, 也可以实现虚拟化. 容器时完全使用沙 ...

  4. Docker 安装部署

    Docker学习笔记 一.Ubuntu Docker 安装 (1).获取最新版本Docker安装包 lyn@lyn:/data/docker$ sudo wget -qO- https://get.d ...

  5. docker 安装

    Docker使用了一种叫AUFS的文件系统,这种文件系统可以让你一层一层地叠加修改你的文件,最底下的文件系统是只读的,如果需要修改文件,AUFS会增加一个可写的层(Layer),这样有很多好处,例如不 ...

  6. Docker安装及基本使用方法

    Docker安装 CentOS6上安装Docker # yum -y install epel-release # yum -y install docker-io CentOS7上安装Docker ...

  7. Mac 下 docker安装

    http://www.th7.cn/system/mac/201405/56653.shtml Mac 下 docker安装 以及 处理错误Cannot connect to the Docker d ...

  8. docker安装caffe

    [最近一直想要学习caffe,但是苦苦纠结于环境安装不上,真的是第一步都迈不出去,还好有docker的存在!下面,对本人如何利用docker安装caffe做以简单叙述,不属于教程,只是记录自己都做了什 ...

  9. Docker安装Gitlab

    一.Ubuntu16.4上Docker安装Gitlab 1.安装docker 参见:https://docs.docker.com/engine/installation/linux/ubuntuli ...

  10. 使用docker安装部署Spark集群来训练CNN(含Python实例)

    使用docker安装部署Spark集群来训练CNN(含Python实例) http://blog.csdn.net/cyh_24/article/details/49683221 实验室有4台神服务器 ...

随机推荐

  1. java项目代码上线

    java项目代码上线   1:java项目代码上线架构图 ip地址及主机名规划 10.0.0.11 deploy 10.0.0.12 tomcat-web01 10.0.0.13 git.oldboy ...

  2. supervisord守护进程的使用

    原文链接:http://blog.csdn.net/xyang81/article/details/51555473 Supervisor(http://supervisord.org/)是用Pyth ...

  3. Centos7 卸载 Nginx 并重新安装 Nginx

    1)  卸载nginx [root@locahost /]# yum remove nginx 2) 查看nginx是否还存在 [root@localhost /]# which nginx 3)重新 ...

  4. python脚本使用源码安装不同版本的python

    # coding=utf-8 import os import sys # 判断是否是root用户 if os.getuid() == 0: pass else: print('当前用户不是root用 ...

  5. SqStack进制计算

    基于SqStack 进制计算 #include<malloc.h> #include<stdio.h> #include<stdlib.h> typedef int ...

  6. linux安装qt

    1.下载run文件 2../运行 3.修改配置文件 sudo gedit /etc/profile 添加如下: port QTDIR=/home/rainbow/zhuxy/soft/Qt5.9.0/ ...

  7. Qt编写气体安全管理系统9-数据查询

    一.前言 数据查询模块在整个系统中难度最低,由于Qt对数据库操作的封装堪称完美,所以各种查询都是手到擒来,不费吹灰之力.Qt中内置了sqlite数据库,你可以在数据库插件目录sqldrivers发现q ...

  8. 宣化上人: 大佛顶首楞严经四种清净明诲浅释(8-9)(转自学佛网:http://www.xuefo.net/nr/article23/230825.html)

    大佛顶首楞严经四种清净明诲浅释(8) 唐天竺·沙门般剌密帝译 宣化上人主讲 一九八三年四月十七日晚讲于万佛圣城 各自谓己得上人法.詃惑无识.恐令失心.所过之处.其家耗散. 各自谓己:每一个都是自己称赞 ...

  9. Java Sound : audio inputstream from pcm amplitude array

    转载自:http://ganeshtiwaridotcomdotnp.blogspot.com/2011/12/java-sound-making-audio-input-stream.html In ...

  10. 【ML】京东人工智能设计神器「羚珑」

    https://www.uisdc.com/linglong 文后的彩蛋说的特别好,让设计师发挥更高阶的价值.