Docker学习记录(centos6.5)

Docker 简介

JavaEE方向只需了解java

Docker方向需要了解go Swarm/Compose/Machine/mesos/k8s/CI/CD jenkens整合

Docker出现原因

版本迭代的时候,运维需要从操作系统、运行环境、依赖包及应用配置等方面调整,若是稍有差池,就会导致开发环境下正常运行的程序上线后程序运行失败。

环境配置换一台机器就需要重新来一次,费时费力。开发人员可以利用Docker消除协作编码时“在我的机器上可正常工作”的问题。

Docker镜像打破过去程序及应用的观念,透过镜像讲作业系统核心除外,运作应用程序所需的系统环境由下而上打包,达到应用程序跨平台间的无缝接轨运作。

Docker是什么

理念

Docker本质上是一个容器,将应用运行在Docker容器上面,Docker出现在热河操作系统上都是一致的,实现了跨平台、跨服务器。只需一次配置好环境,换到别的机器可以一键部署,大大简化了操作。

定义

解决了运行环境和配置问题软件容器,方便做持续记成并有助于整体发布的容器虚拟化技术。

能干什么

之前虚拟机技术 缺点:资源占用多 冗余步骤多 启动慢

针对前面的虚拟机缺点,发展出Linux容器。linux容器不需要模拟一个完整的操作系统,而是对进城进行隔离。

下载地址

官网

docker官网:http://www.docker.com

docker中文官网:http://www.docker-cn.com/

中文文档

http://www.dockerinfo.net/

仓库

Docker Hub官网:https://hub.docker.com

Docker安装

Ubuntu16.04

更新apt包索引:

apt-get update

若报出数字签名的问题

apt-key adv --recv-keys --keyserver keyserver.ubuntu.com ********(多个签名时空格分分离)

安装软件包以允许apt通过HTTPS使用存储库

sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

添加Docker官方的GPG密钥

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

设置stable存储库

add-apt-repository “deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable”

安装最新版本的Docker CE

apt-get install -y docker-ce --fix-missing

检测docker服务

systemctl status docker

启动docker服务

systemctl start docker

三要素

仓库

镜像

容器

命令

运行

docker run hello-world

帮助

docker version

docker info

docker --help

镜像

本机镜像查看

docker images

在这里插入图片描述

RREPOSITORY 镜像仓库源

TAG 镜像标签

IMAGE ID 镜像ID

CREATED 创建时间

SIZE 镜像大小

docker images -a

docker images -q 本地镜像id查看

docker images -qa

远程dockerhub镜像查看

docker search 镜像名称(如tomcat)
Docker学习记录(centos6.5)_第1张图片

NAME 名称

DESCREPTION 描述

STARS 点赞数

OFFICIAL 是否官方

AUTOMATED 是否自动化

docker search -s 50 tomcat 点赞数超出50的镜像罗列
在这里插入图片描述

远程镜像拉取

docker pull tomcat <==> docker pull tomcat:latest

本地镜像删除

删除一个镜像

docker rmi -f 镜像id或者唯一镜像名
在这里插入图片描述
删除多个镜像

docker rmi -f hello-world ngix

删除全部镜像

docker rmi -f ${docker images -qa}

容器

新建并启动容器

docker run [options] IMAGE[command][arg]

options选项说明:

–name=“容器新名字” 为容器指定名称

-d 后台运行容器,并返回容器id(启动守护式容器)

-i 交互模式运行容器,通常与-t同时使用

-t 为容器重新分配一个伪输入终端,通常与-i同时使用

-P 随机端口映射

-p 指定端口映射
在这里插入图片描述

列出docker所有运行的容器

docker ps [options]

options选项说明:

-a 列出所有正在运行的容器和运行过的容器

-l 显示最近创建的容器

-n 显示最近n个创建的容器
在这里插入图片描述

退出容器

exit 容器停止退出

ctrl + P + Q 容器不停止退出

启动容器

docker start 容器名/容器id
在这里插入图片描述在这里插入图片描述

重启容器

docker restart 容器名/容器id

停止容器

docker stop 容器名/容器id 正常停止

docker kill 容器名/容器id 暴力停止

docker ps -a | xargs docker stop 停止全部
在这里插入图片描述

删除容器

docker rm 容器名/容器id 删除关闭的容器
Docker学习记录(centos6.5)_第2张图片
docker rm -f 容器名/容器id 删除未关闭的容器
在这里插入图片描述

docker rm -f ${docker ps -aq}

docker ps -ap | xargs docker rm

重要

启动守护式容器

docker run -d centos

问题:docker ps -a进行查看,会发现容器已经退出

容器运行的命令如果不是一直挂起的命令,会自动退出

docker run -d centos /bin/sh -c “while true; do echo hello zzyy; sleep 2;done”
在这里插入图片描述

查看容器日志

docker logs -f -t --tail n 容器id
Docker学习记录(centos6.5)_第3张图片

查看容器内运行的进程

docker top 容器id
在这里插入图片描述

查看容器内部细节

docker inspect 容器id

进入正在运行的容器并以命令行交互

直接进入容器内

docker attach 容器名/容器id

docker exec -it 容器id /bin/bash

在外部执行容器内命令

docker excc -t 容器id ls -l /tmp
Docker学习记录(centos6.5)_第4张图片

从容器内拷贝文件到主机上

docker cp 容器id:容器内路径 主机路径
Docker学习记录(centos6.5)_第5张图片

容器镜像commit

docker commit -a=“weilong” -m=“add index” 5e8db721aabf weilong/mytomcat:1.1
在这里插入图片描述

容器数据卷

直接命令添加

docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
在这里插入图片描述
在这里插入图片描述

宿机和宿主机之间数据共享

容器停止退出后,主机修改数据宿机仍然数据同步

容器内只读镜像构建

docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名

DockerFile添加

根目录下新建mydocker文件夹并进入

在DockerFile中使用VOLUME指令给镜像添加一个或多个数据卷

FIle构建

在这里插入图片描述

build后生成镜像

docker build -f /mydocker/Dockerfile -t weilong/centos .

run 容器

docker run -it weilong/centos /bin/bash

主机上面会生成默认地址,可通过docker inspect 镜像id 查看

注意

Docker挂在主机目录Docker出现cannot open directory .:Permission denied

解决方法: 挂载时添加参数–Priviledged=true

docker run -it -v 主机目录:宿机目录 --Priviledged=true 镜像名

容器传递

–volume-from

容器之间配置信息的传递,数据卷的生命周期器一直持续到没有容器使用为止

docker run -it --name weilong01 weilong/centos

docker run -it --name weilong02 --volumes-from weilong01 weilong/centos

docker run -it --name weilong03 --volumes-from weilong01 weilong/centos

weilong01、weilong02、weilong03之间数据同步

删除weilong01,weilong02和weilong03数据依然同步

DockerFile

体系结构

FROM 基础镜像,当前新镜像基于哪个镜像

MAINTAINER 镜像维护者的姓名和邮箱地址

RUN 容器构件式需要运行的命令

EXPOSE 当前容器对外暴露的端口

WORKDIR 指定在创建容器后,终端默认登录进来的工作目录

ENV 用来在构建镜像过程中设置环境变量

ADD 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包

COPY 类似ADD,拷贝文件和目录到镜像中

VOLUME 容器数据卷,用于数据保存和持久化工作

CMD 指定一个容器启动时要运行的命令

若有多个CMD命令,只有最后一个生效,CMD会被Docker run 之后的参数替换

ENTRYPOINT 指定一个容器启动时要运行的命令

和CMD一样,都是在指定容器启动程序及参数

ONBUILD 当构建一个被继承的Dockerfile时运行命令,父镜像在被子镜像继承后父镜像的onbuild被触发,类似于触发器

FROM centos

MAINTAINER [email protected]

ENV MYPATH /

WORKDIR $MYPATH

RUN apt-get install vim

RUN apt-get install net-tools

EXPOSE 80

CMD /bin/bash

你可能感兴趣的:(docker)