本文共 3853 字,大约阅读时间需要 12 分钟。
Docker入门
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
沙盒也叫沙箱,英文 sandbox。在计算机领域指一种虚拟技术,且多用于计算机安全技术。安全软件可以先让它在沙盒中运行,如果含有恶意行为,则禁止程序的进一步运行,而这不会对系统造成任何危害。
Docker是一个平台,它提供哪些服务呢?任何一台装有Docker的机器上你都可以建立、发布、运行你的应用程序。
操作系统上面的虚拟化
1开发和运维之间因为环境不同而导致的矛盾(不同的操作系统、软件环境、应用配置等)DevOps
2集群环境下每台服务器都配置相同的环境,太麻烦
3 解决“在我的机器_上可以正常工作”的问题,运维部署后无法正常的现象。
各种虚拟机技术开启了云计算时代;而Docker,作为下一代虚拟化技术,正在改变我们开发、测试、部署应用的方式。那虚拟机与Docker究竟有何不同呢?首先,大家需要明确一点,Docker容器不是虚拟机!
第一次接触Docker的时候,我把它比做一种轻量级的虚拟机。这样做无可厚非,因为Docker最初的成功秘诀,正是它比虚拟机更节省内存,启动更快。Docker不停地给大家宣传,"虚拟机需要数分钟启动,而Docker容器只需要50毫秒"。
Docker简化了环境部署和配置,实现“一次构建,处处运行”,避免了因运行环境不一致而导致的异常
可以将Docker简单的认为是一个虚拟机,可以运行各种软件环境的虚拟机,但与传统虚拟机技术有所不同
Docker容器技术与传统虚拟机技术的区别:
传统虚拟机技术:模拟一个完整的操作系统,先虚拟出一套硬件,然后在其上安装操作系统,最后在系统上再运行应用程序
缺点:资源占用多,启动慢
Docker容器技术:不是模拟一个完整的操作系统,没有进行硬件虚拟,而是对进程进行隔离,封装成容器,容器内的应用程序是直接使用宿主机的内核,且容器之间是互相隔离的,互不影响
优点:更轻便、效率高、启动快、秒级
Docker主机(Host)
安装了Docker程序的主机,运行Docker守护 进程
Docker镜像 (Image)
将软件环境打包好的模板,用来创建容器的,一个镜像可以创建多个容器
Docker容器 (Container)
运行镜像后生成的实例称为容器,每运行一次镜像就会产生一个容器,容器可以启动、停止或删除容器使用是沙箱机制,互相隔离,是独立是安全的可以把容器看作是一个简易版的Linux环境,包括用户权限、文件系统和运行的应用等
Docker仓库 (Repository)
用来保存镜像的,仓库中包含许多镜像,每个镜像都有不同的标签Tag
容器技术的核心概念有容器(container)、镜像(image)、仓库(registry)三个。
Docker容器 (Container):具体的运行应用程序的一个进程,它里面包含应用程序的各种依赖。
Docker镜像 (Image):创建容器的模板,根据不同配置的镜像来创建不同的容器使用。镜像和容器的关系可以理解为面向对象中类和实例对象的关系。
Docker仓库 (Repository):一个镜像只可以创建一种类型的容器,镜像多了就需要放到镜像仓库中存起来,仓库有本地镜像仓库和公共镜像仓库。
容器(container)和镜像(image)之间的区别和联系。
镜像(Image)就是一堆只读层(read-only layer)的统一视角。
容器(container)的定义和镜像(image)几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。
容器 = 镜像 + 读写层。并且容器的定义并没有提及是否要运行容器。
yum install -y yum-utils device-mapper-persistent-data lvm2
yum install -y docker*
docker version #查看版本
docker info #查看docker 信息
systemctl start docker #启动
systemctl stop docker #停止
systemctl status docker #查看 状态
systemctl restart docker #重启
systemctl enable docker #设置开机自动启动
systemctl daemon-reload
{"registry-mirrors": ["http://11-p2p.swr.cn-north-4.myhuaweicloud.com:8090","https://11-p2p.swr.cn-north-4.myhuaweicloud.com:8090"], "insecure-registries": ["11-p2p.swr.cn-north-4.myhuaweicloud.com:8090"], "log-driver":"json-file", "log-opts":{"max-size":"500M","max-file":"3"} }
systemctl daemon-reload
docker search 关键字 , 查找,可以在Docker Hub网站查看镜像的详细信息,如镜像的tag标签
docker pull 镜像名:tag,抽取,:tag表示软件的版本,如果不指定默认是latest。就是下载
docker images,列表,查看所有本地镜像
docker inspect镜像id,获取元信,获取镜像的元信息,详细信息
docker rmi -f 镜像id或镜像名:tag,删除删除指定的本地镜像,-f表示强 制删除
docker 显示有多少命令
docker info –help 显示命令用法
下载redis最新版本
[root@pg11m ~]# docker pull redis
Using default tag: latest
latest: Pulling from library/redis
68ced04f60ab: Pull complete
7ecc253967df: Pull complete
765957bf98d4: Pull complete
91fff01e8fef: Pull complete
76feb725b7e3: Pull complete
75797de34ea7: Pull complete
Digest: sha256:ddf831632db1a51716aa9c2e9b6a52f5035fc6fa98a8a6708f6e83033a49508d
Status: Downloaded newer image for redis:latest
docker rmi -f $(docker images)
docker image rm $(docker images | awk '{ print $1}' | tail -n +2):$(docker images | awk '{ print $2}' | tail -n +2)
强制删除某个应用
docker rmi -f $( docker images |grep keepalived | awk '{ print $1}' )
运行容器和启动容器是有区别的,启动容器是启动已经运行但停止的容器。
docker run --name容器名-i-t -p主机端口:容器端口-d -V主机目录:容器目录:ro镜像id或镜像名称:tag。
--name指定容器名,名称自定义,如果不指定会自动命名; -i 以交互模式运行,即以交互模式运行容器; -t 分配一个伪终端,即命令行,通常组合使用-it ; -p指定端口映射,将主机端口映射到容器内的端口; -d表示后台运行,即守护式运行容器; -V 指定挂载主机目录到容器目录,默认为rw读写模式,ro表示只读
docker run --name syjredis -it f0453552d7f2
docker ps -a
查看容器 -a 所有容器
docker start容器id或容器名称
docker stop 容器id或容器名称
docker rm -f容器id或容器名称
-f 强制删除
docker logs容器id或容器名称
docker exec -it容器id或容器名称/bin/bash
进入正在运行的容器中并开启一个交互模式的终端,可以在容器中执行操作
转载地址:http://ttbai.baihongyu.com/