Docker入门(二)

简介:

一、Docker相关概念

1.Docker:

namespace,cgroup:

解决方案:

lxc,openvz

lxc:linux containers

docker最初就是lxc的封装版本。

docker engine/docker server:输出一个api,用于接受外部请求

接受到client请求,借助于lxc虚拟化技术,在lxc上创建一个虚拟机实例。

docker借助于外部的dockerhub,实现image

后台docker不再使用lxc,使用libcontainer[centos 7],隔离用户空间的引擎

在前端使用没有区别

2.容器虚拟化

例如kvm也需要images,有一个完整的OS

而容器所需的images,并非完整的OS,只拥有FS,没有内核

借助于AUFS技术对映像文件进行分层,容器运行一个独立的FS上

运行nginx需要nginx依赖的库,运行mysql需要依赖mysql的库

把FS做成一个base image,再做几个专用的image,例如nginx专用的,MySQl专用的

  [docker hub]

 /

/

  [cn1][cn2]...

[API] [docker  engine   ]

=======================

Hypervisor

=============

Host OS

==============

【硬件】

3.核心组件;

docker client:docker的client工具,用户使用docker的接口,docker client与docker daemon通信。并将结果返回给client

docker daemon:运行在宿主机,Docker的守护进程,用户可通过docker client与其交互;

image :只读的,基于aufs或者UnionFS叠加在一起,用来创建container

一个镜像可以运行多个container;镜像文件可以通过Dockerfile创建,也可以从docker hub/registry 下载

repository

公共仓库 //提供有base image Docuer hub/registry

私有仓库 //docker repository 

docker container:docker的运行实例,容器是一个隔离环境

另外两个重要组件:

docker link:各docker之间的通信,openvswtich,netns构建,

docker volume:容器中的数据的持久化


二、安装Docker:

centos6 ;epel

centos7: extra

docker-engine

安装Docker:

https://mirrors.aliyun.com/docker-engine/yum/repo/main/centos/7/

yum install docker-engine

[root@node1 ~]# rpm -ql docker-engine |egrep -v "share"

/etc/udev/rules.d/80-docker.rules

/usr/bin/docker

/usr/bin/docker-containerd

/usr/bin/docker-containerd-ctr

/usr/bin/docker-containerd-shim

/usr/bin/docker-init

/usr/bin/docker-proxy

/usr/bin/docker-run

/usr/bin/dockerd

/usr/lib/systemd/system/docker.service

docker子命令有很多

systemctl start docker.service

docker images //查看镜像

docker search centos 

Name DESCRIPTION STARS STARS OFFICAL AUTOMATED

自动生成

darksheer/centos //用户名:镜像名

docker search busybox 

docker pull busybox //拉取官方镜像 base iamge

tag : lastest //最新版本,默认最新版本

docker pull hub.mt.com:5000/busybox //执行私有仓库获取image,必须支持ssl。或者禁止使用tls

docker help run //运行

docker run [OPTIONS] IMAGS [COMMAND] [AEG,...]

//image应该有一个运行起来后,默认运行的命令。

-t --tty=false 分配一个默认的伪终端

-i --interactive=false 打开之后运行在交互式

[root@node1 ~]# docker run -it busybox:latest /bin/sh 

docker ps //查看正在运行的 docker

需要借助于外 volume 保存创建的数据。

docker help commit //基于当前容器的所有修改,创建一个新的images

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

三、docker常用命令:

1.环境信息相关

info 

version

2.系统维护相关

images 

inspect :容器的详细信息

build:基于dockerfile创建image文件

commit:基于运行中的容器创建映像文件

pause:暂停

unpause

rm

rmi //删除映像文件

run //基于image运行一个容器

start/stop/restart 

top //资源占用情况

ps 

kill

...

3.日志相关

events;

hisgory;

logs;

        4.Docker hub 相关

login

logout

pull

push 

search 

基本操作:

获取映像:pull

启动容器:run

-i,-t 

docker run -it centos:latest /bin/bash 

ifconfig //docker0 一个虚拟接口

一半在虚拟机, 一半在宿主机

docker kill c98dac012556 //kill 掉容器,容器ID

docker ps -a //可以查看所有的

关闭后,默认还是会占用内存,可以在启动的时候

docker run --rm //退出则,rm自动移除容器

docker rm  c98dac012556 //删除该容器

docker image的创建:

1.基于dockerfile

2.基于运行中的容器修改

//仅仅是打包最上面一层,只有最上面一层是可写的。

实验:commit,保存文件

[root@node1 ~]# docker run -it centos:latest /bin/bash

在home中 useradd centos 

[root@node1 ~]# docker commit faecb4def9d5 centos:newuser

[root@node1 ~]# docker images

有 newuser

[root@node1 ~]# docker kill faecb4def9d5

[root@node1 ~]# docker rm faecb4def9d5

[root@node1 ~]# docker ps -a

没有之前的容器了

[root@node1 ~]# docker run -it --rm centos:newuser /bin/bash

rm用于关闭后,就删除容器

[root@3f20a3c7f5df /]# id centos

uid=1000(centos) gid=1000(centos) groups=1000(centos)

[root@3f20a3c7f5df /]# exit

[root@node1 ~]# docker ps -a //将没有容器运行










本文转自MT_IT51CTO博客,原文链接:http://blog.51cto.com/hmtk520/1946362,如需转载请自行联系原作者

相关文章
|
10月前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
421 2
|
11月前
|
Kubernetes Cloud Native 云计算
云原生入门:从Docker到Kubernetes的旅程
【10月更文挑战第2天】本文将带你走进云原生的世界,从基础的Docker容器技术开始,逐步深入到Kubernetes集群管理。我们将通过实际代码示例,探索如何利用这些工具构建、部署和管理现代云应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和技能,让你在云原生领域迈出坚实的一步。
195 5
|
6月前
|
Ubuntu Linux Docker
Docker 入门全攻略:安装、操作与常用命令指南
Docker 的世界非常广阔,这只是一个开始,请继续探索和学习 Docker 的高级特性和最佳实践。后续也会继续更新相关的理论与实践内容。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
9月前
|
Ubuntu 应用服务中间件 nginx
docker入门-快速学会docker
本文介绍了Docker的基本概念,包括镜像、容器、tar文件、Dockerfile和仓库,并通过实际操作演示了如何使用Docker。从拉取Nginx镜像、运行容器、修改容器内容、保存容器为新镜像,到使用Dockerfile构建自定义镜像,最后讲解了如何保存和恢复镜像。文中还推荐了一个在线实践平台Play with Docker,方便读者快速上手Docker。
835 5
docker入门-快速学会docker
|
11月前
|
Linux 持续交付 Docker
掌握Docker:从入门到实践
Docker 是一个开源容器引擎,允许开发者将应用及其依赖打包成可移植的容器,在任意 Linux 机器上运行。本文从基本概念入手,详细介绍 Docker 的安装、基本操作、镜像构建及 Docker Compose 的使用,并通过实战案例展示如何部署 Web 应用、构建微服务架构及实现 CI/CD。通过学习,你将掌握 Docker 的核心功能,提升应用开发和部署效率。
|
10月前
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【10月更文挑战第43天】在云计算时代,云原生技术成为推动现代软件部署和运行的关键力量。本篇文章将带你了解云原生的基本概念,重点探讨Kubernetes和Docker如何协同工作以支持容器化应用的生命周期管理。通过实际代码示例,我们将展示如何在Kubernetes集群中部署和管理Docker容器,从而为初学者提供一条清晰的学习路径。
|
10月前
|
Cloud Native 持续交付 Docker
Docker容器化技术:从入门到实践
Docker容器化技术:从入门到实践
|
10月前
|
运维 持续交付 虚拟化
docker入门详解!!!
本文介绍了容器技术的发展历程,从物理机到虚拟化再到容器化,重点讲解了Docker的诞生及其优势。Docker通过轻量级的容器技术,实现了资源的高效利用、快速启动、环境一致性、持续交付和部署等优点。文章还详细解析了Docker的架构和工作原理,包括Docker Daemon、REST接口、Docker Client等组件,以及容器与虚拟机的差异。
270 2
|
10月前
|
Kubernetes Cloud Native 开发者
云原生技术入门:Kubernetes和Docker的协作之旅
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,引领读者步入云原生的世界,着重介绍Kubernetes和Docker如何携手打造弹性、可扩展的云环境。我们将从基础概念入手,逐步深入到它们在实际场景中的应用,以及如何简化部署和管理过程。文章不仅为初学者提供入门指南,还为有一定基础的开发者提供实践参考,共同探索云原生技术的无限可能。
189 3
|
11月前
|
存储 运维 云计算
探索Docker容器化:从入门到实践
在这个快速发展的云计算时代,Docker容器化技术正在改变应用的开发、部署和管理方式。本文旨在为初学者提供一个关于Docker的全面入门指南,并通过实践案例展示Docker在实际开发中的应用。我们将一起了解Docker的核心概念、基本操作、网络和存储,以及如何构建和部署一个简单的Web应用。无论你是开发者还是运维人员,本文都会帮助你快速掌握Docker的核心技能。