一、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:容器路径 主机路径 #在主机执行该命令
12万+

被折叠的 条评论
为什么被折叠?



