时隔四年重温docker

今天公司出来秦皇岛团建,同事们都去唱歌了,我也不太会唱,自己独自守在宾馆,把好多年前的docker在熟悉熟悉,记得上一次使用docker已经是16年前后的事了,依稀记得当时使用docker搭建了一个分布式文件服务器,好多年不用了,今天从新玩一玩。

1. docker安装

  • 由于我这边租的是CentOS 8.2 64位的服务器环境,所以安装命令为:
# 安装yum-utils
yum install -y yum-utils
# 配置国内镜像源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 解决problem with installed package podman-1.6.4-10.的报错(小插曲)
yum erase podman buildah
# 安装docker
yum install -y docker-ce docker-ce-cli  containerd.io 

2. docker版本信息查看

# 简单信息
docker -v
# 查看docker的版本号,包括客户端、服务端、依赖的Go等
docker version
# 查看系统(docker)层面信息,包括管理的images, containers数等
docker info

3. docker服务操作

# 3.1 docker启动配置项
# 启动
systemctl start docker
# 开机自启
systemctl enable docker
# 3.2 docker状态查看
systemctl status docker
# 3.3 docker停止和重新启动
systemctl stop docker
systemctl restart docker

4. 仓库、镜像和容器

在正式开启docker镜像和docker容器相关操作之前,简单唠叨一下仓库、镜像和容器之间的关系:
参考知乎某大神的说法,类比win
镜像: 程序安装包
容器: 安装好的程序
(镜像的)仓库: 放安装包的仓库.

  • 算了还是详细说一下吧:(都是做讲师时留下的毛病,生怕谁理解不透彻…,慢慢改…)
  • 镜像
    Docker镜像里包含了已打包的应用程序及其所依赖的环境。它包含应用程序可用的文件系统和其他元数据,如镜像运行时的可执行文件路径。
  • 镜像仓库
    Docker镜像仓库用于存放Docker镜像,以及促进不同人和不同电脑之间共享这些镜像。当编译镜像时,要么可以在编译它的电脑上运行,要么可以先上传镜像到一个镜像仓库,然后下载到另外一台电脑上并运行它。某些仓库是公开的,允许所有人从中拉取镜像,同时也有一些是私有的,仅部分人和机器可接入。
  • 容器
    Docker容器通常是一个Linux容器,它基于Docker镜像被创建。一个运行中的容器是一个运行在Docker主机上的进程,但它和主机,以及所有运行在主机上的其他进程都是隔离的。这个进程也是资源受限的,意味着它只能访问和使用分配给它的资源(CPU、内存等)。
  • 流程说明:
  • a:首先开发者在开发环境机器上开发应用并制作镜像;(Docker执行命令,构建镜像并存储在机器上)
  • b:开发者发送上传镜像命令;(Docker收到命令后,将本地镜像上传到镜像仓库)
  • c:开发者向生产环境机器发送运行镜像命令;(生产环境机器收到命令后,Docker会从镜像仓库拉取镜像到机器上,然后基于镜像运行容器)

具体流程参考下图:(此图来自网络)
在这里插入图片描述

5. 镜像相关

# 查看镜像
docker images
# 搜索镜像
docker search 镜像名
# 拉取镜像
docker pull 镜像名:版本号
# 删除镜像
docker rmi 镜像名:版本号
  • 镜像信息保存地址

/var/lib/docker/image/overlay2/repositories.json

6. 容器相关操作

# 查看正在运行的容器
docker ps
# 查看所有容器
docker ps -a
# 创建容器,在此以mysql为例简单说明
# 拉取mysql指定版本镜像(此处自定义即可,选哪个版本主要看我心情)
docker pull mysql:5.5.62
  • 查看下载镜像
    在这里插入图片描述
  • 创建容器
    在这里插入图片描述
  • 此处简单说明,run docker其实参数有很多,简单说明,有兴趣的自己看吧。
run参数说明:

-rm

在容器退出时自动清理容器内部的文件系统

在Docker容器退出时,默认容器内部的文件系统仍然被保留,以方便调试并保留用户数据.

但是,对于前台运行的容器,由于其只是在开发调试过程中短期运行,其用户数据并无保留的必要.

启动时设置-rm选项,这样在容器退出时就能够自动清理容器内部的文件系统.

-i

保持容器运行

-p

端口映射

-e

传递环境变量

-t

为容器重新分配一个伪输入终端

-d

以守护进程模式运行容器,退出后容器不会停止

-it

创建一个交互式容器,推出后容器容器停止运行

-id

创建一个守护容器;退出后容器不停止运行

–-name

为创建的容器命名

  • 进入docker容器
    在这里插入图片描述

  • 退出docker容器
    在这里插入图片描述

  • 停止容器
    在这里插入图片描述

  • 启动容器
    在这里插入图片描述

  • 删除容器
    在这里插入图片描述

  • 查看容器详细信息
    在这里插入图片描述

  • 查看容器存储位置

cd /var/lib/docker/containers

在这里插入图片描述

7. 网络相关参数

容器可以比拟做一个独立的系统环境,能配置自己网络,所以说容器里的localhost不一定等于宿主机的localhost

网络模式

bridge:桥接docker(默认创建时,不指定网络驱动,将使用bridge模式)

none:不配置网络

host:和宿主机共享网络

例如:当你在容器上使用80端口访问其他应用,使用的是宿主机的80端口.

container:容器网络连通(用的少,印象中使用时,局限很大)

  • 查看服务器IP:
    在这里插入图片描述
  • 查看docker网络列表
    在这里插入图片描述
  • 查看单个网络详细信息
    在这里插入图片描述
  • 创建网络
# 不指定网络驱动时,默认创建的是bridge网络.
docker network create networkname
  • 删除网络
docker network rm networkname

8. 日志相关

docker logs [OPTIONS] CONTAINER

# Options参数
--details: 显示更多的信息
--follow(-f): 跟踪实时日志
--since string: 显示自某个timestamp之后的日志,或相对时间,如40m(即40分钟)
--tail string: 从日志末尾显示多少行日志, 默认是all
--timestamps(-t): 显示时间戳
--until string: 显示自某个timestamp之前的日志,或相对时间,如40m(即40分钟

  • 参考示例:
# 查看容器mysql 最近30分钟的日志:
docker logs --since 30m mysql
# 查看容器mysql 某时间之后的日志:
docker logs -t --since="2019-11-02T13:23:37" mysql
#查看容器mysql 某时间段日志:
docker logs -t --since="2019-11-02T13:23:37" --until "2019-11-03T12:23:37" mysql

9. 国内加速配置

vim  /etc/docker/daemon.json

# 镜像信息
{
    "registry-mirrors": ["https://registry.docker-cn.com"],
    "live-restore": true
}
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值