Docker

一、Docker概述

容器技术和虚拟机技术的不同

1.传统虚拟机,虚拟出一套硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件;

2.容器内的应用直接运行在宿主机的内核,容器没有自己的内核,也没有虚拟硬件,所以轻便;

3.容器之间相互隔离,每个容器内都有一个自己的文件系统,互不影响。

镜像(images)

相当于是一个模板,通过镜像可以创建多个容器

容器(container)

通过镜像来创建,通过容器技术,独立运行一个或者一组应用

可以理解为一个简易的linux系统

仓库(repository)

仓库是存放镜像的地方,仓库分为私有和公有。

Docker的底层原理

docker是一个client-server结构的系统,docker的守护进程运行在主机上,通过socket从客户端访问,docker-server接受到docker-client指令,就会执行这个命令。

Docker为什么比VM快?

1.docker有着比虚拟机更少的抽象层;

2.docker利用的是宿主机的内核,vm需要的是guest OS;

所以说,新建一个容器的时候,docker不需要像虚拟机一样重新加载一个操作系统内核,避免引导性的操作。虚拟机是加载guest OS,是分钟级别的,而docker利用宿主机的操作系统,省略了这个复杂的过程,是秒级别的。

二、Docker的安装和卸载

环境查看

uname -r   #查看操作系统版本

cat /etc/os-release  #查看系统信息

安装Docker

#1.卸载旧的版本
 sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
#2.需要的安装包
yum install -y yum-utils
#3.设置镜像仓库
yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#更新yum软件包索引
yum makecache fast
#4.安装docker相关内容(注:-ce社区版)
yum install docker-ce docker-ce-cli containerd.io

启动Docker

#启动docker
systemctl start docker

#查看是否启动成功
docker version
#运行hello world
docker run hello-world

#查看hello-world镜像
docker images

卸载Docker

#卸载docker
yum remove docker -ce docker-ce-cli containerd.io
#删除资源
rm -rf /var/lib/docker  #(注:docker的默认工作路径)   

二、Docker命令

1.帮助命令

docker version #显示docker的版本信息
docker info #查看docker系统信息,包括镜像和容器的数量
docker 命令 --help #帮助文档
官网帮助文档:https://docs.docker.com/engine/reference

2.镜像命令

docker images #查看本地主机上所有的镜像
[root@192 /]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
hello-world   latest    feb5d9fea6a5   11 days ago   13.3kB

#注释
REPOSITORY 镜像的仓库源
TAG   镜像标签
IMAGE ID    镜像的ID
CREATED        镜像的创建时间
SIZE         镜像的大小
#可选项
-a #列出所有
-q #只显示镜像的id

docker search mysql        #搜索命令
docker search mysql --filter=STARS=3000     #搜索过滤,搜索镜像STARS大于3000的

拉取镜像

docker pull 镜像名:tag

[root@192 /]# docker pull mysql
Using default tag: latest        #默认tag是最新版本
latest: Pulling from library/mysql
07aded7c29c6: Pull complete     #分层下载
f68b8cbd22de: Pull complete 

Digest: sha256:4fcf5c80e2c6577213d #签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest    #真实镜像地址    
 #等价于docker pull docker.io/library/mysql:latest 

删除镜像

docker rmi -f 镜像ID #删除指定镜像
docker rmi -f $(docker images -aq)    #删除所有镜像
docker rmi -f 镜像ID1 镜像ID2 镜像ID3  #删除多个镜像 

3.容器命令

新建容器并启动

docker run 可选参数 镜像名

#可选参数说明
--name="name" #容器名称 用来区分容器
-d 	    #后台运行
-it		#使用交互方式运行,进入容器查看内容
-p		#指定容器的端口 
		#-p 主机端口:容器端口
		#-p	ip:主机端口:容器端口
		#-p 容器端口
		#容器端口
-P 		#随机指定端口

 启动并进入容器

[root@192 /]# docker run -it centos /bin/bash
[root@09a /]# ls		#查看容器内的centos
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

退出容器

exit		#停止并退出
ctrl+P+Q	#退出但不停止
[root@192 /]# docker exec -it 容器ID /bin/bash   #ctrl+P+Q退出后,通过容器ID再次进入容器

列出运行中的容器

docker ps 可选参数
-a 		#列出当前正在运行的容器,带出历史运行过的容器
-n=n	#显示最近创建的n个容器
-q		#只显示容器的ID

删除容器

docker rm 容器id		#删除指定容器
docker rm -f $(docker ps -aq)	#强制删除所有容器,-f标识强制删除所有,包括正在运行的容器
docker ps -a -q|xargs docker rm  #删除所有容器

 停止/启动容器

docker start 容器id	    #启动容器
docker restart 容器id	#重启容器
docker stop 容器id	    #停止容器
docker kill 容器id 	    #强制停止运行中的容器服务,实例仍存在

4.其他常用命令

后台运行容器

docker run -d centos	#后台运行容器(注意:必须要有一个前台进程,否则会被停止)

 查看日志

docker logs -ft --tail 日志条数 容器id

-tf	#显示日志
--tail 日志条数	#要显示的日志条数

查看容器中的进程信息

docker top 容器id

查看镜像的元数据

docker inspect 容器id

 进入当前正在运行的容器

docker exec -it 容器id /bin/bash    #进入容器后开启一个新的终端,可以在里面操作(常用)
docker attach 容器id                #进入容器正在执行的终端,不会开启新的进程

从容器中拷贝文件到主机

dokcer cp 容器id:容器路径 主机路径   #在主机执行该命令
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值