Docker 安装及常用命令详解

前言:

Docker 是一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,沙箱提供的环境相对于每一个运行的程序都是独立的,而且不会对现有的系统产生影响。

docker历史:

docker的前身是一个2010年创建的dotcloud公司,该公司提供一些pass云计算服务、容器技术。但是这个公司一直不怎么火,老板为了生活吧,在2013年就将他们的容器技术也就是docker开源了,也是因为开源docker一下子就火了,从2013年到2014年基本上一个月就可以发布一版,由此可见开源的魅力!

环境配置

系统

1、目前docker在linux和windows上都可以运行,不过推荐使用Linux。
对于windows系统可以安装一个虚拟机,我是使用的是VMware,通过虚拟机可以虚拟一个Linux系统
这里有一篇很全面的VMware安装centos7的教程
安装完成之后的界面。(VMware需要注册码,如果资金充足的情况下,可以去VMware官网购买,或者去网上搜,很多!)centos7

注意:
安装centos时,一定要记得自己设置的root密码和登陆密码,因为这个我们之后操作docker会用到!

2、Linux系统我们有了,我使用的是Xshell连接,来操作系统。
安装完成之后配置一下会话,就可以连接到我们的Linux系统
连接页面
至此,我们所需要的环境就搭建好了!

安装docker

安装docker之前还是”安利“一下docker官网,docker官网上的文档讲的特别详细!!!非常值得一看!!!docker官方文档
官方文档上告诉了我们非常详细的安装docker过程如图:
在这里插入图片描述
1、首先就是卸载Linux中的老版本docker(因为是新装的centos,这个步骤可以省略的!)
相关命令:

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

使用这个命令可能会遇到问题,是关于Linux用户权限的。
需要权限
我们可以使用:su root 这个命令来切换到root用户下,当然sudo也是可以的。
使用su root 命令会让我们输入root密码也就是我们安装centos是自己设置的root密码
2、安装docker用到的安装包

yum install -y yum-utils

3、设置镜像仓库

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

这个镜像地址是国外的非常慢,最好不用。
我们可以百度:docker 阿里云镜像地址。

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

4、更新yum软件包索引。

Yum makecache fast 
Yum makecache fast 是生成缓存,这个命令是将软件包信息提前在本地缓存一份,用来提高搜索安装软件的速度!

5、安装docker引擎
-ce是社区版 -ee是企业版 不过推荐使用社区版,官方也是推荐使用哈哈

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

6、启动docker

systemctl start docker

可以通过docker version来判断docker 有没有启动成功,docker info 等等都可以的
7、运行holle word

docker run hello-world

有人会很好奇,怎么突然就多出来一个hello-world,如果想要答案,那么请看下面截图:
hello-world
解释:截图上提示我们不能找到镜像hello-world,这时docker会去镜像仓库中 pull 也就是在镜像仓库中寻找并下载hello-world镜像。
然后就是提示我们下载了 latest(最新版)的hello-world。
并且我们可以通过Hello from Docker 来判断hello-world 镜像运行成功!
8、查看docker 镜像

docker images

9、卸载docker
这个命令我就不提供了,我使用自己的手机流程下载的,心疼还来不及呢,让我卸载, 抱歉不可能的。所以这个命令就不学了!

至此,docker 安装完毕,并且我们还运行一个镜像!

10、镜像加速!!!
虽然使用了阿里的镜像仓库,但是有时候还是很慢的,因此一般我们会再配置一个镜像加速!
这个镜像加速阿里有提供免费的加速地址,只需要我们去注册一个账号就ok了
镜像加速
我们需要的操作文档是Centos的,按照文档上的命令敲一遍就设置完毕了!

常用命令演示

首先讲一下docker的完成命令,当我们被命令折磨的焦头烂额时,只需要输入一下命令就可以解决我们的问题
docker 命令 --help
例如 docker images --help

1、镜像命令
Docker images 查看所有本机所下载的镜像
镜像
介绍:
REPOSITORY 镜像的仓库源
TAG 镜像的标签(版本)
IMAGE ID 镜像的id
CREATED 镜像的创建时间
SIZE 镜像的大小

扩展
docker images -a 列出所有的镜像
docker images -q 只显示镜像id
也可以
docker images -aq 列出所有镜像的id

2、搜索命令
docker search 镜像名字

也可以添加过滤项,
例如:docker search mysql --filter=STARS=6666
STARS 代表被收藏的次数,这个过滤条件时搜索mysql收藏次数大于6666的项。

3、下载镜像命令
docker pull mysql

扩展:
①:docker pull mysql:tag 版本 ##可以通过tag来指定下载的版本
一下是对下载的一些解释:

docker pull mysql:tag latest    下载mysql镜像通过tag指定版本。
Using default tag: latest    如果不写tag 就会默认下载latest
latest: Pulling from library/mysql
8559a31e96f4: Pull complete    分层下载  docker images的核心  联合文件系统,极大的节省了内存!!!
d51ce1c2e575: Pull complete 
c2344adc4858: Pull complete 
fcf3ceff18fc: Pull complete 
16da0c38dc5b: Pull complete 
b905d1797e97: Pull complete 
4b50d1c6b05c: Pull complete 
c75914a65ca2: Pull complete 
1ae8042bdd09: Pull complete 
453ac13c00a3: Pull complete 
9e680cd72f08: Pull complete 
a6b5dc864b6c: Pull complete 
Digest: sha256:8b7b328a7ff6de46ef96bcf83af048cb00a1c86282bfca0cb119c84568b4caf6  签名防伪标志
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest    真实地址

docker pull mysql 等价于 docker pull docker.io/library/mysql:latest
②:也可以指定msql版本
docker pull mysql:5.7

注意:分层的好处就是可以公用相同的文件 极大的节省内存,只需要更新新的东西,以前跟其他冲突的层就可以不用更新了。

4、删除镜像

docker rmi -f 删除所有的镜像
docker rmi -f dockerid 删除指定id的docker镜像。
docker rmi -f $(docker images -qa) 删除所有的容器。

可以通过$() 传递要删除的docker镜像id,如果有多个,就类似于递归删除一样。

5、容器命令(我们有了镜像才可以创建容器)
docker run [可选参数] images

参数介绍:
–name=”name” 容器名字 tomcat01 用来区分容器
-d 后台方式运行
-it 进入容器(交互式运行)
-p 指定容器的端口 -p 8080:8080 docker容器端口号和主机映射起来。
-P(大写) 随机指定端口号。
例如:
docker run -it centos /bin/bash
/bin/bash解释: 因为要交互运行,所以要有一个控制台(linux控制台一般都在bin目录下,控制台有bash、sh)

输入玩命令之后就会进入容器中(本例是centos)可以在容器中查看centos文件夹,这个只是一个基础版本,很多命令都是不支持的。
可以通过exit 退出容器,但是容器会被关闭!!!

6、查看容器命令
docker ps 当前正在运行的容器。
docker ps -a 列出正在运行的容器 + 历史运行过的容器
docker ps -n=? 显示最近创建的容器
docker ps -aq 显示所有运行过的容器编号

7、退出容器(进入容器之后想要退出容器)
Exit 直接退出容器并停止
Ctrl + p + q 容器不停止退出。

8、删除容器
docker rm 容器id 删除指定的容器 ,不能删除正在运行的容器,如果要强制删除rm -f
docker rm -f $(docker ps -aq) 删除所有的容器
docker ps -aq|xargs docker rm 也是删除所有的容器。

9、启动和停止容器的操作
docker start 容器id
docker restart 容器id
docker stop 容器id
docker kill 容器id

10、查看日志
docker logs 容器id
扩展:
docker logs -t id 显示当前时间的所有日志(会有日期较详细)
docker logs -f id 显示实时动态的日志(没有日期不详细)
docker logs –tail 10 id 只显示10条日志(不详细)
docker logs -t --since “2020-07-11T23:10:10” id 显示这个时间之后的日志
docker logs -t --until “2020-07-11T23:10:10” id 显示这个时间之前的日志

查看日志的时候遇到一个非常坑的地方,docker中的时间比目前时间慢8小时,如果我们按照docker中的时间查看某个时间段的日志,会发现找不到日志,如果我们按照我们目前的时间去查日志,那么就可以查看日志。如图:

日志

注意看打印日志的时间和我查看日志的时间段!

11、查看容器中的进程信息
docker top id

12、查看镜像的元数据
这个以后会非常重要
docker inspect id

13、进入当前正在运行的容器
我们通常容器是使用后台方式运行的,需要进入容器,我们需要修改一些配置
方式1:docker exec -it 容器id /bin/bash
进入容器后开启一个新的终端,可以在里面操作。
方式2:docker attach id
进入容器正在执行的终端,不会启动新的终端。

14、从容器内拷贝文件到主机上
docker cp id:容器内路径 主机路径

这个拷贝只是一个手动拷贝,后期我们需要用到卷技术,实现主机和容器之间文件同步!!

扯淡环节

VMware和docker的对比

1、
VMware 属于虚拟化技术
docker 容器技术,也属于虚拟化技术。
2、
VM虚拟的是一个完整的电脑系统,如果想要隔离的话,就需要虚拟多个虚拟机,启动是分钟级别
docker 核心环境只有4m,十分轻巧,运行速度也快。启动是秒级别的。
3、
docker是基于go语言开发的,开源项目!
4、
传统虚拟机,虚拟的是一个完整的操作系统,然后在这个系统上安装和运行软件。
而容器内的应用直接运行在宿主上的,容器没有自己的内核的,也并没有虚拟我们的硬件。
5、
docker容器时项目隔离的,每个容器内部都有一个属于自己的文件系统,互不影响!!!

DevOps好处(使用docker部署项目)

开发兼运维,哈哈就是钱加钱,
1、可以更快的交付和部署。
2、更方便的升级和扩缩容。
3、更简单的系统运维(可以保证开发和测试环境高度统一)
4、更高效的计算资源利用。

docker的基本组成

docker由客户端、服务器、仓库、镜像、容器组成。
docker通过一个镜像可以创建多个容器。
仓库分为公有仓库和私有仓库,公有仓库也就是Docker Hub,私有仓库常见的就是阿里云。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值