首页 > 其他分享 >Docker如何使用

Docker如何使用

时间:2022-10-31 20:34:55浏览次数:62  
标签:daemon nginx 环境 如何 使用 镜像 Docker docker


目录

  • ​​1、Docker是什么​​
  • ​​1.1、Docker优点​​
  • ​​1.2、Docker缺点​​
  • ​​2、Docker安装部署​​
  • ​​2.1、安装​​
  • ​​2.2、开启服务​​
  • ​​2.3、安装镜像(这里是以centos为例)​​
  • ​​3、开启该镜像的服务​​
  • ​​4、错误的解决方案​​
  • ​​4.1、Docker出现“. Is the docker daemon running”的解决方案​​
  • ​​4.2、Docker报错“Error response from daemon: Container *”的解决方案​​
  • ​​5、Docker实例​​
  • ​​5.1、docker run​​
  • ​​5.2、docker cp​​

1、Docker是什么

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

1.1、Docker优点

1.简化配置
这是Docker初始目的,虚拟机VM最大的好处是基于你的应用配置能够无缝运行在任何平台上。Docker提供同样类似VM的能力,但是没有任何副作用,它能让你将环境和配置放入代码然后部署,同样的Docker配置能够在各种环境中使用,这实际是将应用环境和底层环境实现了解耦。

2.代码管道化管理
能够对代码以流式pipeline管道化进行管理,从开发者的机器到生产环境机器这个流程中都能有效管理。因为在这个流程中会有各种不同的环境,每个都可能有微小的区别,Docker提供了跨越这些异构环境以一致性的微环境,从开发到部署实现流畅发布。

3.开发人员的生产化
在一个开发环境,我们希望我们的开发环境能更加接近于生产环境,我们会让每个服务运行在自己的VM中,这样能模拟生产环境,比如有时我们并不总是需要跨越网络连接,这样我们可以将多个Docker装载一系列服务运行在单机上最大程度模拟生产分布式部署的环境。

4.应用隔离
有很多理由你需要在一台机器上运行多个应用,这就需要将原来铁板一块monolithic的应用切分为很多微服务。实现应用之间的解耦,将多个应用服务部署在多个Docker中能轻松达到这个目的。

5.服务合并
使用Docker也能合并多个服务以降低费用,不多的操作系统内存占用,跨实例共享多个空闲的内存,这些技术Docker能以更加紧密资源提供更有效的服务合并。

6.多租户
Docker能够作为云计算的多租户容器,使用Docker能容易为每个租户创建运行应该多个实例,这得益其灵活的快速环境以及有效diff命令。

7.快速部署
Docker通过创建进程的容器,不必重新启动操作系统,几秒内能关闭,你可以在数据中心创建或销毁资源,不用担心额外消耗。典型的数据中心利用率是30%,通过更积极的资源分配,以低成本方式对一个新的实例实现一个更聚合的资源分配,我们很容易超过这个利用率,大大提高数据中心的利用效率。

8.环境统一 docker将容器打包成镜像,创建符合docker hub规范的镜像,上传进个人的私有docker hub,转换环境时直接pull即可,最大程 度的保证了开发环境,正式环境统一

1.2、Docker缺点

Docker并不是全能的,设计之初也不是KVM之类虚拟化手段的替代品,简单总结几点:
1、Docker是基于Linux 64bit的,无法在32bit的linux/Windows/unix环境下使用
2、LXC是基于cgroup等linux kernel功能的,因此container的guest系统只能是linux base的
3、隔离性相比KVM之类的虚拟化方案还是有些欠缺,所有container公用一部分的运行库
4、网络管理相对简单,主要是基于namespace隔离
5、cgroup的cpu和cpuset提供的cpu功能相比KVM的等虚拟化方案相比难以度量(所以dotcloud主要是按内存收费)
6、Docker对disk的管理比较有限
7、container随着用户进程的停止而销毁,container中的log等用户数据不便收集

2、Docker安装部署

2.1、安装

yum install docker

2.2、开启服务

systemctl start  docker.service

2.3、安装镜像(这里是以centos为例)

docker pull centos:7.2.1511

可以利用以下命令查看是否安装成功

docker images

Docker如何使用_使用

3、开启该镜像的服务

一个镜像可以开启N多次,彼此操作之间不影响。也就是说你在A镜像中删除某文件,但是B镜像中的该文件还依然存在,不会影响。以下举个例子,其中4cbf是镜像IMAGE ID字段,前四位的缩写。

docker run -ti 4cbf /bin/bash

开启后会自动进入到镜像中,此时操作就是再镜像中了,查看是否真的是在镜像中

uname -a

Docker如何使用_使用_02

记住按“ctrl + q + p”组合键退出该镜像,这样镜像并不会停止服务,可以通过该命令查看

docker ps

如果不小心结束了该服务,比如说按了exit等,还可以通过该命令查看

docker ps -a

Docker如何使用_使用_03


如何再进入到开启的服务中呢?

直接输入以下命令即可(其中469a913f3c26是该Image的Container ID)

docker exec -it 469a913f3c26 /bin/bash

Docker如何使用_使用_04

4、错误的解决方案

4.1、Docker出现“. Is the docker daemon running”的解决方案

执行docker ps命令,出现"Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?”问题。此时已确定Docker本身已经安装正常。
问题原因是因为docker服务没有启动,所以在相应的/var/run/ 路径下找不到docker的进程。
执行以下命令,启动docker服务

service docker start

4.2、Docker报错“Error response from daemon: Container *”的解决方案

例如:
现象:

docker exec -it 7c5a2350c4cb /bin/bash
Error response from daemon: Container * is not running。

原因:
因为这个exec跑不起来,那就用start
解决:

docker start 7c5a2350c4cb

5、Docker实例

5.1、docker run

docker run -d -p 8082:80 --name nginx -v /usr/sinatra/nginx/www:/usr/share/nginx/html 
-v /usr/sinatra/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
-v /usr/sinatra/nginx/logs:/var/log/nginx:ro nginx
  • 挂载数据卷默认权限是rw,可以通过ro指定为只读
  • -d 开启Daemon模式
  • :左边是主机的配置,右边是docker里面的配置
  • -p 8082:80: 将容器的 80 端口映射到主机的 8082 端口
  • 记住进程是

5.2、docker cp

docker cp 6dd4380ba708:/etc/nginx/nginx.conf ~/nginx/conf
  • 拷贝容器内 Nginx 默认配置文件到本地当前目录下的 conf 目录,容器 ID 可以查看 docker ps 命令输入中的第一列


标签:daemon,nginx,环境,如何,使用,镜像,Docker,docker
From: https://blog.51cto.com/u_15854865/5811176

相关文章

  • Qt on Mac 开发之 Qt程序加入Objective-C代码(包含如何查找Objective-C的库)
    目录​​1、引入OC文件​​​​2、引入OC库​​​​3、引入Plist文件​​​​4、编译程序​​1、引入OC文件在pro(或pri)中加入Objective-C的头文件和源文件例如:HEADERS+=$$......
  • 非关系型数据库 之 Key-Value数据库 Redis的使用(Python3)
    文章目录​​1、Redis简介​​​​1.1、简述​​​​1.2、特点​​​​1.3、优势​​​​2、CentOS操作Redis​​​​2.1、安装启动​​​​2.1.1、安装​​​​2.1.2、......
  • Go开发 之 Go如何引用github包
    Go如何引用github包​​Linux上如何引用​​​​如果定义了环境变量​​​​进入正题​​​​①、创建引用目录​​​​②、拷贝源码​​​​③、引用​​​​Windows上如何......
  • Linux如何在history命令时,查看命令执行时间
    效果如下实现过程直接在/etc/profile文件的末尾,加上:exportHISTTIMEFORMAT="%Y-%m-%d%H:%M:%S"注意:在末尾的“引号”与“S”之间,加入一位空格,将日期时间和历史命令用空格......
  • HTML如何让IMG自动适应DIV容器大小
    HTML如何让IMG自动适应DIV容器大小为了让IMG自适应大小,如下我做了一个横向自适应的示例:IMG样式(横向拉伸,纵向自动匹配大小)DIV样式(元素居中显示)IMG样式(横向拉伸,纵向自动匹配大......
  • mongodb主要使用规则
    mongodb:ObjectId的结构:_id是集合中文档的主键,用于区分文档(记录),_id自动编入索引。默认情况下,_id字段的类型为ObjectID,是MongoDB的BSON类型之一。如果需要,用户......
  • 设计模式-策略模式在Java中的使用示例
    场景策略模式(StrategyPattern)是指定义了算法家族并分别封装起来,让它们之间可以互相替换,此模式使得算法的变化不会影响使用算法的用户。策略模式的应用场景1、系统......
  • QML与QWidget简单的联合使用(QQuickWidget衔接)
    如果碰到这种情况,可能软件整体并不复杂也不需要太多炫酷的效果,此时我们可能选择QWidget体系来做。但是,可能某个小部件又非常需要炫酷的效果,QWidget并不是我们此时想要的,可以......
  • 使用Vue来制作导航栏超级简单
    在我们还没有学习Vue的时候一般都是使用JQ来制作导航栏,但是太复杂。而使用Vue来制作你会发现异常简单话不多说上代码 css代码随便写一写样式  HTML部分,要给div......
  • 转: docker-compse build 镜像指定版本 tag
    转: https://stackoverflow.com/questions/56082506/docker-compose-build-with-new-tagIhaveadocker-composewhichlookslike:version:'3.2'services:jobsaf......