docker初识

1.基础简介

1.1 docker是什么?

docker项目的目标是实现轻量级的操作系统的虚拟化解决方案。docker的基础是Linux容器(LXC)技术。
对比传统虚拟机总结:
在这里插入图片描述

1.2 docker的安装和卸载命令

centos6安装
–配置yum源
sudo yum install http://mirrors.yun-idc.com/epel/6/i386/epel-release-6-8.noarch.rpm
sudo yum install docker-io
centos7安装
方式一:yum install –y docker(默认安装)
方式二:docker-ce安装(最新版安装)
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install docker-ce

查看docker版本/信息
docker version/info
注:docker启动和未启动 docker version信息不一样

查看与docker相关的
yum list installed | grep docker “|”管道符号 前一个命令的输出作为后一个命令的输入

卸载docker
yum remove -y docker.x86_64 docker-client.x86_64 docker-common.x86_64

启动docker
sudo service docker start/restart
sudo chkconfig docker on ##开机自启

关闭docker
sudo service docker stop

1.3 docker仓库命令

查询仓库里面的镜像
docker search redis (带有 official的为官方正版)
Ps:vi /usr/lib/systemd/system/docker.service

从仓库拉镜像到本地(不指定ip端口,默认官方网址)
docker pull docker.io/hello-word:latest
docker拉取慢的问题:1.为docker配置代理,Environment=“HTTP_PROXY=http://172.16.42.124:808”
2.仍然有可能超时,为docker配国内加速器或者直接拉取国内镜像

从指定仓库拉取镜像
docker pull ip:port/peter2enjoy/hello:1.0
注:peter2enjoy是https://hub.docker.com中的唯一仓库 1.0为版本号

标记本地镜像,将其归入某一仓库(tag==生成副本+取个别名)
docker tag hello-word peter2enjoy/hello:100.0

docker login
Username:perter2enjoy
Password:enjoy123
docker push peter2enjoy/hello:100.0

私有docker仓库的搭建
docker pull registry
docker run -d -p 5000:5000 --name reg registry ##创建私有仓库
curl http://主机ip:5000/v2/_catalog ##查看私有仓库镜像
http://主机ip:5000/v2/hello/tags/list ##查看私有仓库镜像版本,hello为镜像名字

docker tag hello-world 宿主机ip:5000/hello:1.0
docker push 宿主机ip:5000/hello:1.0 ###需修改配置文件https://www.cnblogs.com/hobinly/p/6110624.html

1.4 docker镜像命令

查看镜像
docker images

删除镜像
docker rmi 镜像id(有容器使用此镜像则无法删除,先删容器再删镜像)

查看镜像层
docker history 镜像名

(docker info 查看docker root dir: /var/lib/docker)
镜像文件列表(一个镜像文件是由一个或多个镜像层组成)
cd /var/lib/docker/image/overlay2/imagedb/content/sha256

打开镜像的配置内容
cat 9f38484d220fa527b1fb19747638497179500a1bed8bf0498eb788229229e6e1 前12位是镜像ID
其中history显示镜像层 rootfs:diff_ids:sha256:后面显示的实际的镜像层文件id

镜像层文件列表
cd /var/lib/docker/image/overlay2/layerdb/sha256

镜像层文件结构
ll d69483a6face4499acb974449d1303591fcbb5cdce5420f36f8a6607bda11854

镜像总结:镜像的本质就是一个文件夹
在这里插入图片描述

1.5 docker容器命令

创建启动容器并进入内部
docker run -dit --name cent centos:latest /bin/bash
-d:后台运行并返回容器id,不进入容器 -it:保证容器不退出,交互shell进程
-p 8081:8080 ##宿主机端口:容器端口
–privileged=true -v /宿主机目录:/容器目录 -v /宿主机目录2:/容器目录2
注:如果你同步的是多级目录,可能会出现权限不足的提示,Centos7中的安全模块selinux把权限禁掉了,我们需要添加 --privileged=true 来解决挂载的目录没有权限的问题。

退出容器且不关闭容器
ctrl+q+p

进入运行的容器
docker exec -it cent /bin/bash

查看docker所有容器
docker ps -a

在容器外部关闭容器(优雅的关闭:发出信号等待10s)/立刻停止容器
docker stop cent/docker kill cent

删除容器
docker rm cent

启动容器
docker start cent

查看容器信息
docker inspect cent/容器id

查看容器日志 #在宿主机上查看容器生成的日志
docker logs 容器名

复制主机文件到容器内
docker cp 文件 cent:容器路径

2.dockerfile

dockerfile是一个文本格式的配置文件,用户可以使用dockerfile快速创建自定义镜像。

2.1 dockerfile的基本要素

在这里插入图片描述

2.2 dockerfile常用指令

FROM:第一条指令必须为FROM指令,用于指定基础镜像。
MAINTAINER:指定维护者信息。
RUN:会在shell终端上执行命令。一个RUN相当于加了一个镜像层。
EXPOSE:格式为[…],声明容器需要暴露的端口号。镜像启动可以通过-p或者-P进行端口映射的绑定。
ENV:指定一个环境变量,可以被后续的RUN引用,并在容器中记录该环境变量。
ADD:该命令复制指定的文件到容器中,其中可以是dockerfile所在目录相对路径,也可以是tar文件(自动解压)。
VOLUME:格式为VOLUME[path],挂载。
USER:指定运行容器时的用户名,后续的RUN也会指定该用户。
WORKDIR:指定工作空间,切换目录。
CMD ENTRYPOINT。
CMD:给出的是一个容器的默认的可执行体
entrypoint:才是正统地用于定义容器启动以后的执行体的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值