Docker学习(一)

简介: Docker学习(一)

Docker是什么

docker是一种容器虚拟化技术,它不像虚拟机一样模拟操作系统,而是对程序进行隔离。有了容器,就可以将软件运行所需的所有资源打包到一个隔离的容器中。容器与虚拟机不同,不需要拥绑整套操作系统,只需要软件工作所需的库资源和设置。系统因此而变得高效轻量并保证部署在任何环境中的软件都能始终如一地运行。


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


与虚拟机的区别


https://www.jianshu.com/p/50f48eb25215

为什么要使用Docker

容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可。

具体说来,Docker 在如下几个方面具有较大的优势。

1、更快速的交付和部署

对开发和运维(devop)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。

开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。 Docker 可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。 Docker 容器很轻很快!容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。

2、更高效的虚拟化

Docker 容器的运行不需要额外的 hypervisor 支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。

3、更轻松的迁移和扩展

Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。 这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。

4、更简单的管理

使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。

docker三个要素

  • Docker image:镜像是只读的,镜像中包含有需要运行的文件。镜像用来创建container,一个镜像可以运行多个container;镜像可以通过Dockerfile创建,也可以从Docker hub/registry上下载。
  • Docker container:容器是Docker的运行组件,启动一个镜像就是一个容器,容器是一个隔离环境,多个容器之间不会相互影响,保证容器中的程序运行在一个相对安全的环境中。可以把容器看作是一个简易版的Linux环境(包括root用户权限,进程空间)和运行在其中的应用程序。
  • Docker hub/registry: 共享和管理Docker镜像,用户可以上传或者下载上面的镜像,官方地址为https://registry.hub.docker.com/,也可以搭建自己私有的Docker registry。

正确的理解它们之间的关系

     Docker本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就似乎image镜像文件。只有通过这个镜像文件才能生成Docker容器。image 文件可以看作是容器的模板。Docker根据image文件生成容器的实例。同一个image文件,可以生成多个同时运行的容器实例。


     * image文件生成的容器实例,本身也是一一个文件,称为镜像文件。


     *一个容器运行一 种服务,当我们需要的时候,就可以通过docker客户端创建一个对应的运行实例,也就是我们的容器


     *至于仓储,就是放了一堆镜像的地方,我们可以把镜像发布到仓储中,需要的时候从仓储中拉下来就可以了。

Centos7下安装docker

官网网址:https://docs.docker.com/install/linux/docker-ce/centos/

安装gcc
yum -y install gcc
yum -y install gcc- c++
yum install -y yum-utils device-mapper-persistent-data lvm2
设置存储库,官网上面地址太慢容易出错这里使用阿里云地址
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum索引库
yum makecache fast
安装
yum -y install docker-ce
卸载指令
yum -y remove docker-ce
rm -rf /var/lib/docker

启动docker

systemctl start docker

20190313214252974.png

配置阿里云镜像加速

创建目录

mkdir -p /etc/docker

获取加速网址https://cr.console.aliyun.com/#/accelerator,把加速地址配置到docker中

1. vim /etc/docker/daemon.json
2. 填写保存
3. {"registry-mirrors": ["你的加速地址"]}

重新加载并重启,使用docker info就可以看到我们配置的地址

1. systemctl daemon-reload
2. systemctl restart docker

加载第一个镜像

docker run hello-world

出错解决方法https://www.jb51.net/article/145998.htm

它首先会从本地仓库中找是否有这个镜像,如果没有的话会从阿里云的仓库中pull一个到本地仓库,并在容器中运行。

20190314152538484.png

如何查找镜像支持的版本

由于docker search命令只能查找出是否有该镜像,不能找到该镜像支持的版本,所以我们需要通过docker hub来搜索支持的版本。

进入docker hub的官网,地址:https://hub.docker.com

docker命令

docker inspect   [容器或者镜像id] 查看基本信息
docker info      查看docker信息
docker run       把镜像放入容器并运行,不写版本号默认是latest
docker images    查看所有的镜像
docker ps        查看当前正在运行的容器[-a -q 表示当前正在运行的容器并只显示id可以用&{docker ps -a -q}组合使用批量删除]
docker start     运行容器
docker stop      停止容器
docker build     创建镜像
docker pull      获取镜像[如果不添加tag的话默认是下载最新版本latest]
docker rm        删除容器
docker rmi       删除镜像[-f强制,如果不添加tag的话默认是删除最新版本latest]可以跟多个镜像名称,空格分开
docker cp        从本机上拷贝到容器
docker commit    保存改动为新的容器
docker --help查看所有指令
docker kill :杀掉一个运行中的容器

docker run 只在第一次运行时使用,将镜像放到容器中,以后再次启动这个容器时,只需要使用命令docker start 即可。


docker run相当于执行了两步操作:将镜像放入容器中(docker create),然后将容器启动,使之变成运行时容器(docker start)。


docker交互式运行


docker run it [名字或者容器id]  [run后面 -p 8888:8080  8888为主机端口,8080为内部docker端口]


--name:容器新名字


-i:以交互模式运行容器


-t:为容器重新分配一个伪输入终端


-P:随机端口映射


-p:指定端口映射


20190708212248424.png

后台运行,并返回容易id,启动守护式容器


docker run -d [名字或者容器id]


docker容器后台运行,就必须有一个前台进程


容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。


查看容器日志


t:是加入时间戳


f:是最新的日志打印


tail:是显示最后8条


docker logs -f -t --tail 8 [容器ID]


退出容器的两种方法


exit  容器停止退出


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


重新进入容器


docker attach [容器id]


在外面对容器执行指令


docker exec -it [容器id]  [指令]


20190708221206411.png

拷贝文件从容器中拷贝文件到宿主机中

docker cp [容器id]:/路径文件   宿主机位置

 

以当前容器为标准创建镜像(就是修改完配置后)【a表示作者,m标准信息,最后表示镜像名称和版本】

docker commit -a="lq" -m="new tomcat" a8c7a03ee12a tomcat02:1.2

dockerfile命令

FROM        基础镜像
RUN         执行命令
ADD         添加文件
COPY        拷贝文件
CMD         执行命令
EXPOSE      暴露端口
WORKDIR     指定路径  
MAINTAINER  维护者
ENV         设定环境变量
ENTRYPOINT  容器入口
USER        指定用户
VOLUME      安装点


相关文章
|
7月前
|
运维 虚拟化 开发者
Docker-全面详解(学习总结---从入门到深化)
Docker-全面详解(学习总结---从入门到深化)
125 1
|
7月前
|
分布式计算 Java Linux
【深入浅出Docker原理及实战】「原理实战体系」零基础+全方位带你学习探索Docker容器开发实战指南(Dockerfile使用手册)
Docker 是一套构建在 Linux 内核之上的高级工具,旨在帮助开发人员和运维人员更轻松地交付应用程序和依赖关系,实现跨系统和跨主机的部署。使用安全且轻量级的容器环境来实现这一目标。容器可以手动创建,也可以通过编写 Dockerfile 自动创建。开发人员和运维人员可以将应用程序及其依赖打包到容器中,实现应用程序的可移植性和环境一致性。
264 5
【深入浅出Docker原理及实战】「原理实战体系」零基础+全方位带你学习探索Docker容器开发实战指南(Dockerfile使用手册)
|
2月前
|
存储 Ubuntu Linux
学习docker
学习docker
40 1
|
2月前
|
NoSQL Linux Redis
Docker学习二(Centos):Docker安装并运行redis(成功运行)
这篇文章介绍了在CentOS系统上使用Docker安装并运行Redis数据库的详细步骤,包括拉取Redis镜像、创建挂载目录、下载配置文件、修改配置以及使用Docker命令运行Redis容器,并检查运行状态和使用Navicat连接Redis。
336 3
|
2月前
|
运维 Kubernetes 开发者
Docker Swarm学习
【10月更文挑战第5天】
42 3
|
2月前
|
Kubernetes Linux 持续交付
docker容器学习
【10月更文挑战第1天】
45 1
|
3月前
|
存储 Ubuntu Docker
Docker学习
Docker学习
66 4
|
2月前
|
Linux 应用服务中间件 Shell
docker学习--docker容器镜像常用命令大全(简)
本文档详细介绍了Docker中的镜像命令与容器管理命令。镜像命令部分涵盖了镜像搜索、下载、上传等操作;容器管理命令则包括了容器的创建、启动、停止、删除及日志查看等功能。通过具体示例,帮助用户更好地理解和使用Docker相关命令。
186 0
|
2月前
|
Shell 应用服务中间件 nginx
docker学习--最详细的docker run 各子命令解释与应用
`docker run` 是 Docker 中用于启动容器的基本命令。常用子命令包括 `-i`(交互模式)、`-t`(分配终端)、`-d`(后台运行)、`-p`(端口映射)、`--name`(指定容器名)。例如,`docker run -it nginx:1.20 /bin/bash` 可以创建并进入交互式容器。使用 `-d` 可在后台运行容器,`-p` 可将容器端口映射到主机端口,`--name` 则用于自定义容器名称以便管理。
298 0
|
4月前
|
网络协议 Shell Docker
docker 学习之路
docker 学习之路
42 1