浅谈docker的使用

一、前言

我写本博客的目的

  • 我是学后台开发的,对于docker的学习是非常有必要的
  • 对于docker来说主要是记其的命令,而写这边博客最重要的目的是以后我有需求的时候随时查阅,如果对于其他有用也可以随时转发。
  • 这篇博客只描述docker最基本的使用,需要深入了解的可能无法满足,若以后有时间我会写一份深入了解docker的博客

二、什么是docker

用比较官方的语言来说,docker是一种虚拟化技术,虚拟化是一种资源管理技术。这种官方的话解释起来也没啥意思,就拿docker的一个图片来说吧,他的图片很生动形象,一条鲸鱼,上面堆着很多的集装箱,

  • 我们的操作系统就相当于这条大鲸鱼,这条大金鱼在docker中我们常称之为宿主机
  • docker就是这上面的集装箱,可以装载不同的东西,如:tomcat,mysql等软件

这些软件互不影响,对我们开发来说好处大大的有,我们不用因此过多的担心什么端口冲突的等无脑问题。

dockerfile ADD 什么情况下会自动解压缩文件_Docker

三、docker的好处

  • 提供一个简单的轻量级的建模方式
  • 职责逻辑分离
  • 兼容软件依赖的环境不同的问题
  • 快速高效的的开发生命周期
  • 鼓励面向服务的框架
    docker和虚拟机的区别。这个大家去百度吧,我不想过多的解释,没必要

四、docker的镜像和组件

在进入正题之前,还是要解释一下什么是镜像,什么是组件

  • 镜像:镜像是构建Docker世界的基石。用户基于镜像来运行自己的容器。
    镜像也是Docker生命周期中的 “构建” 部分。
  • 容器:Docker 可以帮助用户和部署容器,用户只需要把自己的应用程序或
    者服务打包放进容器即可,容器是基于镜像启动起来的,容器中可
    以运行一个或者多个进程,我们可以认为 镜像是Docker生命周期中
    的构建或打包阶段,而容器则是启动或者执行阶段

五、进入正题

1、安装

条件如下:

  • 宿主机需要64位操作系统,不支持32位
  • 需要 Linux3.8 或者更高版本内核
  • 内核必须支持一种适合的存储驱动
  • AUFS
  • vfs
  • btrfs
  • ZFS
  • 默认的存储驱动通常是 Device Manager 或者 AUFS
  • 内容必须支持并开启 cgroup 和 命名空间功能
检查

内核检查

uname -a

输出如下正常

Linux wangzh 4.15.0-123-generic #126-Ubuntu SMP Wed Oct 21 09:40:11 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

存储驱动检查

ls -l /sys/class/misc/device-mapper

输出结果如下正常

lrwxrwxrwx 1 root root 0 Nov 27 07:13 /sys/class/misc/device-mapper -> ../../devices/virtual/misc/device-mapper

经过上诉检查,我们的虚拟机满足做docker宿主机的要求

2、安装docker引擎
  • 第一步:切换到root用户(这样我们权限就无敌了)
su root

密码是你们虚拟机管理员的密码,别来问我

  • 第二步:卸载旧版本(如果没有安装过就不用卸载)
apt-get remove docker docker-engine docker.io
  • 第三步:更新系统
apt-get update
  • 第四步:获取https请求
apt-get install apt-transport-https cacertificates curl software-properties-common
  • 第五步:添加dockers官方的密钥
curl -fsSL
https://download.docker.com/linux/ubuntu/gpg | apt-key add -
  • 第六步:设置稳定版docker仓库
add-apt-repository "deb [arch=amd64]
https://download.docker.com/linux/ubuntu
$(lsb_release -cs) stable"
  • 第七步:再次更新系统
apt-get update

第八步:安装dockers ce

apt-get install docker-ce

注意:dockers有两个版本一个是ce版本,一个是ee版本,ee版本是要收费的,ce已经足够我使用了,如果ee不够大家使用,大家交钱去吧*(支持正版哦)

  • 最后一步:测试
docker run hello-world

看到如下界面:恭喜你成功了

dockerfile ADD 什么情况下会自动解压缩文件_docker_02

2、配置国内的站点

因为docker访问国外的镜像是很慢的,所所以我们要配置国内的站点,这样用起来就快了了
国内可用的如下:

  • Docker 官方中国区:https://registry.docker-cn.com
  • 网易:http://hub-mirror.c.163.com
  • 中国科技大学:https://docker.mirrors.ustc.edu.cn
  • 阿里云:https://y0qd3iq.mirror.aliyuncs.com

在/etc/docker/下新建一个文件:daemon.json(我记得默认是没有的哦)

vim daemon.json

dockerfile ADD 什么情况下会自动解压缩文件_nginx_03


重启docker服务

service docker restart

查看是否生效

docker info|grep Mirrors -A 1

dockerfile ADD 什么情况下会自动解压缩文件_nginx_04


已经生效了

3、使用docker

关闭docker

systemctl stop docker

启动dockers

systemctl start docker

重启docker

systemctl restart docker

查看docker的状态

systemctl status docker

开机自动启动docker

systemctl enable docker(我没用过)

查看镜像

docker images

dockerfile ADD 什么情况下会自动解压缩文件_docker_05


搜索镜像

docker search 镜像名称

dockerfile ADD 什么情况下会自动解压缩文件_Docker_06


删除镜像:

我就拿我有的nginx删了给你们做测试吧

docker rmi IMAGE ID(镜像的id)

注意:如果不能删除镜像:建议停止镜像中的容器,实在不行就删除镜像中的容器(后面会有容器的教程)

dockerfile ADD 什么情况下会自动解压缩文件_docker_07


看,这不就删除了吗(废了为师很大的劲,我先删除了容器,)

拉取镜像:(不填写镜像版本,默认拉去的是最新的版本)

docker pull 镜像名称:版本

我来拉去nginx的镜像做测试,拉去最新的吧(可能时间比较长,主要是看你的网速,因为他是从网上拉去下来的)

docker pull nginx

我们查看,发现镜像已经下载好了

dockerfile ADD 什么情况下会自动解压缩文件_Docker_08


还有一个命令是删除所有镜像,我这就不演示了

docker rmi `docker images -q`

4有关容器的基本命令

查看所有的容器

docker ps -a

查看,正在运行的容器

docker ps

查看最后一次运行的容器

docker ps -l

查看已经停止的容器

docker ps -f status=exited

4.2 容器的创建等相关命令

交互式创建容器

docker run -it --name=容器名称 镜像名称:标签
/bin/bash

我再创建一个nginx容器给大家做测试吧

docker run -it --name=nginx nginx:latest /bin/bash

看,我们就进入了容器

dockerfile ADD 什么情况下会自动解压缩文件_Docker_09


第二步:我们查看当前目录如下(命令为:ls):

dockerfile ADD 什么情况下会自动解压缩文件_Docker_10


我们创建一个容器(nginx)并且启动他的命令如下

docker run --name=nginx -p 80:80 -d nginx

如图发现已经启动成功

dockerfile ADD 什么情况下会自动解压缩文件_Docker_11


退出容器:

exit

停止容器:

docker stop 容器的id

时间问题,就写到这里吧,再见