前言
hello
本章的整体流程大概是这样的,docker 的一个安装和基本命令
先发自己的一个帮助理解图,其实挺不错,大概所有的docker就围绕这些。
docker 介绍
什么是Docker?
-
Docker时Docker.Lnc公司开源的一个基于LXC技术之上搭建的Container容器引擎,源代码托管在Github上,基于Go语言并遵从Apache2.0协议开源。
-
Docker属于Linux容器的一种封装,提供简单易用的容器使用接口。
-
Docker将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了Docker,就不用担心环境问题。
总体来说, -
Docker的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。
优点:
-
灵活:即使是复杂的应用程序也可封装。
-
轻量级:容器利用并共享主机内核。
-
便携式:您可以在本地构建,部署到云上并在任何地方运行。
-
可扩展性:您可以增加和自动分发容器副本。
-
可堆叠:您可以垂直堆叠服务并及时并及时堆叠服务。
如果是本机运行其一个Docker运行内存,一个容器中运行原生Linux和共享主机与其它容器的内核,它运行一个独立的进程,不占用任何其它可执行文件的内存,使其轻量化。
Infrastructure - 表示真实电脑。
Host OS - 真实电脑的操作系统,例如:Windows,Linux
Docker - 新一代虚拟化技术,不需要包含单独的操作系统。
App - 所有的应用程序现在都作为Docker容器运行。
一般来说,虚拟机提供的环境比大多数应用程序需要的资源多。
Infrastructure - 表示真实电脑。
Host OS - 真实电脑的操作系统,例如:Windows,Linux
Hypervisor - 虚拟机平台,模拟硬件,如VMWare,VirtualBox
Guest OS - 虚拟机平台上安装的操作系统,例如CentOS Linux
App - 虚拟机操作系统上的应用,例如nginx
面的一个演示案例也是直接使用在我们的VM虚拟机上的操作。
一、docker的安装
安装步骤
1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
通过 uname -r 命令查看你当前的内核版本
$ uname -r
2、使用 root 权限登录 Centos。确保 yum 包更新到最新。
$ yum update
3、卸载旧版本(如果安装过旧版本的话)
$ yum remove docker docker-common docker-selinux docker-engine
4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
$ yum install -y yum-utils device-mapper-persistent-data lvm2
5、设置yum源
$ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
6,安装最新版本的Docker
$ yum install docker-ce docker-ce-cli containerd.io
7,启动Docker并设置开机启动
$ systemctl start docker
$ systemctl enable docker
8,验证Docker
$ docker version
9,Docker HelloWorld测试;
$ docker run hello-world
可能会出现的问题
一、下载出现故障
出现下载docker 失败。
1、没网,试着:ping www.baidu.com
如果显示没有连接的话,就说明没网,也就无法使用yum 命令。
2、ping通了的话,还是是用不了yum命令,说明是yum镜像没有了,那么就得下载一个来更新。
在安装完CentOS后一般需要修改yum源,才能够在安装更新rpm包时获得比较理想的速度。国内比较快的有163源、sohu源。这里以163源为例子。
A、 cd /etc/yum.repos.d
B、 mv CentOS-Base.repo CentOS-Base.repo.backup
C、wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
D、mv CentOS6-Base-163.repo CentOS-Base.repo
E、yum clean all
最后在使用yum 就可以了
二,加快下载速度
记住,是在自己已经安装成功的基础上优化,
没有安装docker就不用搞了。
注册一个阿里云的账户,进入:
输入:cd /etc/docker/
输入:vi darmon.json
复制上去:
二、docker基本命令
启动Docker
systemctl start docker
停止Docker
systemctl stop docker
重启Docker
systemctl restart docker
开机启动Docker
systemctl enable docker
查看Docker概要信息
docker info
查看Docker帮助文档
docker --help
查看Docker版本信息
docker version
三、docker镜像常用命令
1,docker images 列出本机所有镜像
docker images
ps部分: 后面可以加的内容:
-a 显示所有镜像(包括中间层)
-q 只显示镜像ID
-qa 可以组合
--digests 显示镜像的摘要信息
--no-trunc 显示完整的镜像信息
2,docker search 搜索镜像(基本不用)
docker search
和 https://hub.docker.com/ 这里的搜索效果一样;
ps部分: 后面可以加的内容:
--no-trunc 显示完整的镜像描述
-s 列出收藏数不小于指定值的镜像
--automated 只列出Docker Hub自动构建类型的镜像
3,docker pull 下载镜像
docker pull 镜像名称:[TAG]
4,docker rmi 删除镜像
4.1,删除单个:docker rmi 镜像名称:[TAG]
如果不写TAG,默认删除最新版本latest
有镜像生成的容器再运行时候,会报错,删除失败;
我们需要加 -f 强制删除
4.2,删除多个:docker rmi -f 镜像名称1:[TAG] 镜像名称2:[TAG]
中间空格隔开
4.3,删除全部:docker rmi -f $(docker images -qa)
四、Docker 容器常用命令
1、Docker创建并启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
--name="容器新名字":为容器指定一个名称;
-i:以交互模式运行容器,通常与-t或者-d同时使用;
-t:为容器重新分配一个伪输入终端,通常与-i同时使用;
-d: 后台运行容器,并返回容器ID;
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
在上面是有多种启动方式的:
简单的说:
1、docker run -it --name 别名 镜像ID (启动后并进入)
2、docker run -di --name 别名 镜像ID(启动后不进入)
3、docker run -it -d -p 8888:8080 tomcat (启动tomcat在后台运行并且端口为8888)
2、Docker列出容器
docker ps [OPTIONS]
OPTIONS说明:
-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容。
--format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
--no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。
常用命令:
1,docker ps 查看正在运行的容器
2,docker ps -a 查看所有容器
3、Docker退出容器
1、exit (容器停止退出)
2、ctrl+P+Q (容器不停止退出)
4、Docker进入容器
1、docker attach 容器ID or 容器名 (不能进入已关闭的容器)
2、docker exec -it 容器名称 或者 容器ID 执行命令 (不进去容器,却能执行容器的方法,比如:启动tomcat)
5、Docker启动容器
docker start 容器ID or 容器名
6、Docker重启容器
docker restart 容器ID or 容器名
7、Docker停止容器
1、docker stop 容器ID or 容器名
ps做法:暴力删除,直接杀掉进程 (不推荐)
2、docker kill 容器ID or 容器名
8、Docker删除容器
1、docker rm 容器ID
2、docker rm -f 容器ID (强制删除)
3、docker rm -f $(docker ps -qa) (删除所有容器)
9、寻找日记
可以根据docker命令来,但最好自己去查看文件:
文件路径
/var/lib/docker/containers/