当前位置: 首页 > news >正文

Docker安装、卸载,以及各种操作

docker是一个软件,是一个运行与linux和windows上的软件,用于创建、管理和编排容器;docker平台就是一个软件集装箱化平台,是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,也可以实现虚拟化,并且容器之间不会有任何接口。

安装Docker

我的安装在了centos 7-64-2上面了

(1).需要会一点linux基础

(2).Centos7以上版本

(3).使用xshell连接远程服务器进行操作

1.环境查看 

查看系统内核 uname -r      需要系统内核3.10以上的

2.查看系统版本
语法:建议使用这条命令查看cat /etc/os-release   或 cat /etc/redhat-release 这个是适合redhat系的linux
需要7版本以上的

3.使用docker官网帮助文档

4.找到Developers里面有个Docs,双击打开

5.Get Docker就是下载docker,找到自己要下载的,我要下载linux版本,根据需求下载

6.找到Docker Engine 这是docker引擎,在下面找到Centos

7.卸载旧的安装包,开始前尽量卸载一下,以防万一

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

8.出现这个没有匹配说明你没装过docker

8.下载安装包

sudo yum -y install  yum-utils 或 sudo yum  install -y yum-utils    ----y放哪都可以


9.设置镜像仓库

官网默认是国外的镜像,速度太慢不建议用,建议用阿里云的镜像,放在下面了
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

这个是阿里云镜像,使用国内阿里云的镜像 ,十分快(推荐用这个镜像)

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

10.更新yum软件包索引

yum makecache fast

11.安装docker相关内容   docker-ce就是社区版本(一般使用的都是社区版)  docker-ee就是企业版本

yum -y install  docker-ce docker-ce-cli containerd.io

12.启动docker (只要下面没提示就是执行成功)

systemctl start docker

如果启动docker报错  

报错原因:这是因为缺少 rhel-push-plugin.socket 单元,该单元是rhel-push-plugin软件包的一部分

接着执行  curl -sSL https://get.docker.com/ | sh

13.使用docker version验证是否安装成功

14.用hello-world测试一下docker引擎,执行 docker run hello-world

15.查看一下下载的这个hello-world镜像 docker images

16.同时也可以给docker设置开机自启状态,这样每次都不用手动启动了

systemctl enable docker  开启自启动

systemctl status docker  查看docker状态

查看已启动的服务

systemctl list-units --type=service

查看是否设置开机启动

systemctl list-unit-files | grep enable

到此docker下载完成

卸载Docker

想要卸载docker怎么做?

只需要两步:

1.卸载依赖

yum remove docker-ce docker-ce-cli containerd.io

2.删除资源

rm -rf /var/lib/docker             /var/lib/docker 是docker默认工作路径          

Docker镜像加速器

1.百度aliyun

2.找到容器镜像服务ACR

3.搞一个个人版,用身份证验证一下就行了,很简单

4.找到镜像加速器Centos

5.在xshell执行下面4条命令:4条命令直接从上面加速器中粘贴,不容易出错

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://qhceg9a4.mirror.aliyuncs.com"] } EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

到此镜像加速器配置完成

Run流程和Docker原理

这个就是Run流程和Docker原理图

底层原理

Docker是怎么工作的?

Docker是一个Client -Server结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问。

DockerServer接收到Docker-Client指令,就会执行这个命令

为什么Docker比VM快?

1.Docker有着比虚拟机更少的抽象

由于docker不需要Hypervisor(虚拟机),实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源,因此在CPU,内存利用率上docker有绝对优势

2.Docker利用的是宿主机的内核,不需要加载操作系统OS内核,而VM需要Guest OS内核

新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核,虚拟机需要加载OS,返回新建过程是分钟级别,而docker直接利用宿主机操作系统,省略了此过程,因此新建一个docker容器,只需要几秒

Docker和VM区别

1,启动速度不同:docker启动快速属于秒级别,而虚拟机通常需要几分钟去启动;2、性能不同:docker需要的资源更少;3、隔离性不同:docker属于进程之间的隔离,隔离性较弱,而虚拟机可以实现系统级别的隔离。4.安全不同,docker 的安全性更弱,5.利用率不同:利用率上docker有绝对优势

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

容器内的应用直接运行在宿主机的内核,容器是没有自己的内核的,也没有虚拟我们的硬件,很轻便

每个容器是相互隔离,每个容器内都有一个属于自己的文件系统,互不影响

Docker常用命令

官方文档找到docker命令大全

docker version   显示docker的版本信息

docker info         显示docker的系统信息,包括镜像和容器的数量

docker --help      帮助命令  如:docker images --help

镜像命令

docker images  查看所有本机的主机上的镜像

REPOSITORY  镜像的仓库    TAG 镜像的标签   IMAGE D   镜像的id  

CREATED   镜像创建的时间   SIZE  镜像的大小

查看镜像的常用选项 docker images --help  一般常用的选项就是-a和-q

常用的两个选项

  -a         列出所有镜像
  -q         只显示镜像id

一般 -aq一块使用

docker search 搜索镜像

这个搜索和你在官网上搜索的效果是一样的

我去搜索mysql镜像 docker search mysql

docker search --help  查看可用选项

案例:docker search mysql --filter=STARS=3000

索索出来的镜像是STARS大于3000的

docker pull 下载镜像

下载mysql镜像 docker pull mysql   不指定默认下载最新版本

指定版本下载

docker pull mysql:5.7   版本一定是官网有的,不能乱写

再次查看镜像docker images  

docker rmi 删除镜像

指定删除mysql5.7的镜像,根据镜像id去删除  docker rmi -f 镜像id

也可以指定多个镜像一块删除  docker rmi -f 镜像id1 镜像id2 镜像id3 

递归删除所有镜像 docker rmi -f $(docker images -aq)

查看rmi可用选项

容器命令

说明:我们有了镜像才能去创建容器,我们下载个centos镜像来测试学习

下载centos镜像

新建容器并启动    启动就是用run     语法: docker run [参数] 镜像

-P是随机指定端口 docker run -d -p --name tomcat01 tomcat

查看run常用选项  docker run --help   上面图就是常用选项 -d,-it -p,-P

进入了容器,从主机名变成就id号

ls查看容器内的centos,与外部的centos没有一点关系 容器内部命令还不算完善

退出容器,容器直接退出停止exit     想要退出容器不想停止容器按ctrl+p+q

列出所有运行的容器

docker ps 列出正在运行的容器

docker ps -a 列出正在运行的容器和历史运行的容器

docker ps -n=?显示最近创建的容器  docker ps -n=2

docker ps -q 只显示容器的编号id   一般与a连用

删除容器

语法:docker rm 容器id         指令删除容器,不能删除正在运行的容器,强制删除docker rm -f id

删除所有容器 docker rm $(docker ps -aq)   

docker ps -a -q |xargs docker rm  也是删除所有容器

启动和停止容器操作

docker start 容器id       #启动容器

docker restart 容器id    重启容器

docker stop 容器id       停止正在运行的容器

docker kill 容器id         强制停止当前容器(如果stop不能停掉,就用kill)

一个images镜像通过run命令启动成容器

常用其他命令

通过镜像centos启动容器  docker run -d centos     -d选项是后台运行方式

当你docker ps 查看,发现没启动

常见的坑:docker容器使用后台运行(docker run -d centos),必须要有一个前台进程(docker run -it centos ),如果没有,docker发现没有应用,就会停止掉

查看日志

语法:docker logs -tf --tail 10 id号

logs帮助命令:docker logs --help

-tf  显示日志 

--tail number  显示日志条数

查看容器的进程信息top命令

语法:docker top 容器id

查看镜像元数据

语法:docker inspect 容器id

inspect的帮助命令

进入当前正在运行的容器

语法1:docker exec -it 容器id /bin/bash         -it就是交互式进入

语法2:docker attach 容器id

两者的区别:

docker exec  进入容器后开启一个新的终端,可以在里面操作(常用)

docker attach  进入容器正在执行的终端,不会启动新的进程

从容器内拷贝文件到主机上

语法:docker cp 容器id: 容器内路径  目的的主机路径    (冒号别忘记)

大致流程:进入容器 docker attach 容器id  ,在容器创建一个文件,然后退出容器exit,查看容器docker ps 尽管容器关闭了,只要他的容器id在就没事,接着开始拷贝,因为我们拷贝到/home目录,一定要cd切换到home目录查看。

docker部署Nginx

1.去搜索Nginx    docker search nginx

2.下载Nginx   docker pull nginx       不指定默认是最新版

3.查看下载的nginx镜像

4.通过镜像去run启动容器

-d  就是后台运行   --name   给容器取个新名字

-p 3344:80 宿主机端口和容器端口(nginx默认端口就是80)

5.本机测试一下3344      curl localhost:3344    看到了Welcome to nginx 说明测试通过

6.通过公网可以访问:   http://192.168.211.15:3344

7.进入容器 docker exec -it nginx01 /bin/bash

8.查找一下nginx配置文件  whereis nginx

9.退出容器,并停止容器

10.发现访问不了了

思考一个问题:我们每次改动nginx配置文件,都需要进入容器内部十分麻烦,我要可以在容器外部提供一个映射路径,达到在容器外修改文件,容器内就可以自动修改,该怎么做到,以后再学习-v 就是数据卷 就能达到这个效果

端口暴露的概念

总结命令                       

docker images   或 docker image ls         查看所有本地主机上的镜像 

docker search 镜像                      搜索镜像

docker pull 镜像                           下载镜像

docker rmi 镜像ID                          删除镜像

docker run 镜像id                           新建容器并启动

docker ps                                      列出所有运行的容器

docker rm 容器id                          删除指定容器

docker rm -f $(docker ps -aq)         删除所有的容器

docker start 容器id                启动容器

docker restart 容器id            重启容器

docker stop 容器id                停止当前正在运行的容器

docker kill 容器id                  强制停止当前容器(stop停不掉用kill)

exit                                       容器直接退出

ctrl +P +Q                             容器不停止退出 ---注意:这个很有用的操作

docker run -d 镜像名            后台启动命令

docker logs                          查看日志

docker top 容器id                查看容器中进程信息ps

docker inspect 容器id            查看镜像的元数据

docker exec -it 容器id /bin/bash                   进入当前容器后开启一个新的终端,可以在里面操作(常用)

docker attach 容器id                                    进入容器正在执行的终端

docker cp 容器id: 容器内路径  目的的主机路径                从容器内拷贝到主机上     

free -m  查看虚拟机内存

docker stats 显示容器资源使用的情况(cpu,内存)

systemctl disable NetworkManager  永久关闭网络管理命令

systemctl stop NetworkManager      临时关闭网络

systemctl start network.service        开启网络服务

systemctl disable firewalld.service   永久关闭防火墙

systemctl start docker                      启动docker

systemctl enable docker                   开启自启docker

docker start 容器ID                          启动docker里的容器

docker restart 容器ID                     重启docker容器

docker exec -it 容器ID或名称 /bin/bash       进入容器

systemctl status firewalld                虚拟机查看防火墙状态

systemctl stop firewalld                   虚拟机关闭防火墙

docker network ls                        查看docker配置网络

systemctl status firewalld            查看防火墙状态

firewall-cmd --permanent --zone=public --list-ports          查看防火墙开了哪些端口

firewall-cmd --permanent --zone=public --add-port=xxxx/tcp   防火墙开放xxxx端口

yum list docker-ce --showduplicates | sort -r      查看docker可以版本

docker inspect 容器id                    获取容器信息

docker info                    显示docker的系统信息,包括镜像和容器的数量

docker version             显示docker的版本信息

            

docker attach    #连接到正在运行中的容器
docker build    #使用 Dockerfile 创建镜像
docker builder    #管理builds
    docker builder prune    #清除build缓存
docker checkpoint    #管理checkpoints
    docker checkpoint create    #从正在运行的容器创建检查点
    docker checkpoint ls    #列出容器的检查点
    docker checkpoint rm    #删除指定的检查点
docker commit    #从容器创建一个新的镜像
docker config    #管理Docker配置
    docker config create    #创建配置文件
    docker config inspect    #查看配置文件信息
    docker config ls        #显示docker里已经保存得配置文件
    docker config rm        #删除配置文件
docker container    #管理容器
    docker container prune    #删除所有已停止的容器
docker context    #管理contexts
    docker context create    #创建一个上下文
    docker context export    #将上下文导出到tar或kubecconfig文件中
    docker context import    #从tar或zip文件导入上下文
    docker context inspect    #在一个或多个上下文上显示详细信息
    docker context ls        #列出上下文
    docker context rm        #删除一个或多个上下文
    docker context update    #更新
    docker context use        #设置当前docker的上下文
docker cp        #用于容器与主机之间的数据拷贝
docker create    #创建一个新的容器但不启动它
docker diff        #检查容器里文件结构的更改
docker events    #从服务器获取实时事件
docker exec        #在运行的容器中执行命令
docker export    #将文件系统作为一个tar归档文件导出到STDOUT
docker history    #查看指定镜像的创建历史
docker image    #管理镜像
    docker image inspect    #显示一个或多个镜像的元数据
    docker image ls            #列出本地镜像
    docker image prune        #删除没有使用的镜像
    docker image rm            #删除一个或多个镜像
docker images    #列出本地镜像
docker import    #从归档文件中创建镜像
docker info        #显示 Docker 系统信息,包括镜像和容器数
docker inspect    #获取容器/镜像的元数据
docker kill        #杀掉一个运行中的容器
docker load        #导入使用 docker save 命令导出的镜像
docker login    #登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
docker logout    #登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
docker logs        #获取容器的日志
docker manifest    #管理manifest(实验,不应用于生产环境)
    docker manifest annotate    #向本地镜像清单添加附加信息
    docker manifest create        #创建用于注释和推入注册表的本地清单列表
    docker manifest inspect        #显示镜像清单或清单列表
    docker manifest push        #将清单列表推入仓库
    docker manifest rm            #从本地存储中删除一个或多个清单列表
docker network    #管理网络
    docker network connect        #将容器连接到网络
    docker network create        #创建一个网络
    docker network disconnect    #断开容器的网络
    docker network inspect        #显示一个或多个网络的元数据
    docker network ls            #列出网络
    docker network prune        #删除所有没有使用的网络
    docker network rm            #删除一个或多个网络
docker node        #管理集群(swarm)节点
    docker node demote            #从群集(swarm)管理器中降级一个或多个节点
    docker node inspect            #显示一个或多个节点的元数据
    docker node ls                #列出群集(swarm)中的节点
    docker node promote            #将一个或多个节点推入到群集管理器中
    docker node ps                #列出在一个或多个节点上运行的任务,默认为当前节点
    docker node rm                #从群集(swarm)删除一个或多个节点
    docker node update            #更新一个节点
docker pause    #暂停容器中所有的进程
docker plugin    #管理插件
    docker plugin create        #从rootfs和配置创建一个插件。插件数据目录必须包含config.json和rootfs目录。
    docker plugin disable        #禁用插件
    docker plugin enable        #启用插件
    docker plugin inspect        #显示一个或多个插件的元数据
    docker plugin install        #安装一个插件
    docker plugin ls            #列出所有插件
    docker plugin push            #将插件推送到注册表
    docker plugin rm            #删除一个或多个插件
    docker plugin set            #更改插件的设置
    docker plugin upgrade        #升级现有插件
docker port        #列出指定的容器的端口映射,或者查找将PRIVATE_PORT NAT到面向公众的端口
docker ps        #列出容器
docker pull        #从镜像仓库中拉取或者更新指定镜像
docker push        #将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
docker rename    #重命名容器
docker restart    #重启容器
docker rm        #删除一个或多个容器
docker rmi        #删除一个或多个镜像
docker run        #创建一个新的容器并运行一个命令
docker save        #将指定镜像保存成 tar 归档文件
docker search    #从Docker Hub查找镜像
docker secret    #管理Docker secrets
    docker secret create    #从文件或STDIN创建一个秘密作为内容
    docker secret inspect    #显示有关一个或多个秘密的详细信息
    docker secret ls        #列出秘密
    docker secret rm        #删除一个或多个秘密
docker service    #管理服务
    docker service create    #创建一个服务
    docker service inspect    #查看服务的元数据
    docker service logs        #获取服务的日志
    docker service ls        #列出服务
    docker service ps        #列出一个或多个服务的任务
    docker service rm        #删除一个或多个服务
    docker service rollback    #将更改恢复到服务的配置
    docker service scale    #缩放一个或多个复制服务
    docker service update    #更新服务
docker stack    #管理堆栈
    docker stack deploy        #部署新的堆栈或更新现有堆栈
    docker stack ls            #列出现有堆栈
    docker stack ps            #列出堆栈中的任务
    docker stack rm            #删除堆栈    
    docker stack services    #列出堆栈中的服务
docker start    #启动一个或多个已经被停止的容器
docker stats    #显示容器的实时流资源使用统计信息
docker stop        #停止一个运行中的容器
docker swarm    #管理集群(Swarm)
    docker swarm ca            #查看或旋转当前群集CA证书。此命令必须针对管理器节点
    docker swarm init        #初始化一个群集(Swarm)
    docker swarm join        #加入群集作为节点和/或管理器
    docker swarm join-token    #管理加入令牌
    docker swarm leave        #离开群集(Swarm)
    docker swarm unlock        #解锁群集(Swarm)
    docker swarm unlock-key    #管理解锁钥匙
    docker swarm update        #更新群集(Swarm)
docker system    #管理Docker
    docker system df        #显示docker磁盘使用情况
    docker system events    #从服务器获取实时事件
    docker system info        #显示系统范围的信息
    docker system prune        #删除未使用的数据
docker tag        #标记本地镜像,将其归入某一仓库
docker top        #查看容器中运行的进程信息,支持 ps 命令参数
docker trust    #管理Docker镜像的信任
    docker trust inspect    #返回有关key和签名的低级信息
    docker trust key        #管理登入Docker镜像的keys
        docker trust key generate    #生成并加载签名密钥对
        docker trust key load        #加载私钥文件以进行签名
    docker trust revoke        #删除对镜像的认证
    docker trust sign        #镜像签名
    docker trust signer        #管理可以登录Docker镜像的实体
        docker trust signer add        #新增一个签名者
        docker trust signer remove    #删除一个签名者
docker unpause    #恢复容器中所有的进程
docker update    #更新一个或多个容器的配置
docker version    #显示 Docker 版本信息
docker volume    #管理volumes
    docker volume create    #创建一个卷
    docker volume inspect    #显示一个或多个卷的元数据
    docker volume ls        #列出卷
    docker volume prune        #删除所有未使用的卷
    docker volume rm        #删除一个或多个卷
docker wait        #阻塞运行直到容器停止,然后打印出它的退出代码
 

相关文章:

  • MySQL性能分析工具的使用
  • python自动化测试selenium核心技术3种等待方式详解
  • OC-编译错误
  • 前端小技巧: 防抖和节流的区别
  • 根据json生成Java类
  • 关于navigator.userAgent判断苹果手机的问题和踩坑
  • Java中的反射机制
  • 09-MySQL主从复制
  • idea 一直卡在maven正在解析maven依赖
  • asp.net core 生命周期
  • SpringBoot Kafka消费者 多kafka配置
  • 【星海出品】flask(一)demo
  • 【Nginx39】Nginx学习:upstream服务器组模块
  • 教给孩子们如何认真听讲
  • windowCPU虚拟化已禁用解决方案
  • 【技术性】Search知识
  • Asm.js的简单介绍
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • javascript 哈希表
  • Javascript基础之Array数组API
  • Less 日常用法
  • Material Design
  • MySQL数据库运维之数据恢复
  • Promise面试题,控制异步流程
  • Python打包系统简单入门
  • SegmentFault 2015 Top Rank
  • unity如何实现一个固定宽度的orthagraphic相机
  • XForms - 更强大的Form
  • 闭包--闭包之tab栏切换(四)
  • 从输入URL到页面加载发生了什么
  • 分类模型——Logistics Regression
  • 服务器之间,相同帐号,实现免密钥登录
  • 想写好前端,先练好内功
  • 硬币翻转问题,区间操作
  • MPAndroidChart 教程:Y轴 YAxis
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • #NOIP 2014# day.2 T2 寻找道路
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • (10)ATF MMU转换表
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (第二周)效能测试
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (三)模仿学习-Action数据的模仿
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (转)Android学习笔记 --- android任务栈和启动模式
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
  • [2016.7 test.5] T1
  • [20181219]script使用小技巧.txt
  • [2019/05/17]解决springboot测试List接口时JSON传参异常
  • [AUTOSAR][诊断管理][ECU][$37] 请求退出传输。终止数据传输的(上传/下载)
  • [AX]AX2012 R2 出差申请和支出报告