docker基础学习记录

一。安装docker 的前提条件:
1.linux系统 centos6.8以上,且虚拟机系统是64位的 操作系统
centos系统镜像文件下载地址:http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso
2.linux安装图形化界面:
第一步登录后连接到命令行界面,输入以下指令安装图形化桌面安装包,然后输入’Y’确认安装
yum groupinstall “GNOME Desktop” “Graphical Administration Tools”**
第二步,设置默认启动是图形化界面输入以下指令
ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target
第三步重启机器.进入默认图形化界面
3.安装好centos操作系统后,配置网络环境
vi /etc/sysconfig/network-scripts/ifcfg-ensXXX
输入 i 经行编辑:
PEERDNS=yes
PEERROUTES=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPADDR=192.168.0.99 //增加IP地址
NETMASK=255.255.255.0 //增加子网掩码
GATEWAY=192.168.0.1 //增加网关,,此网关中的《0》 是更据本机ip的网关设置的,要和本机的一样最后一位默认1
DNS1=8.8.8.8 //增加DNS
参考:https://blog.csdn.net/VickHUC/article/details/82562017

二、docker概念
1.docker:docker就是一个容器的运行载体或者是一个管理引擎
2.docker的三要素:镜像,容器,仓库
镜像:就是一个容器模板,可以生成多个容器实例。相当于java中的类对象,可以以此生成多个对象
容器:就是镜像的一个运行实例。
仓库:就是存放许多镜像的一个场所。
在这里插入图片描述
3.docker的安装 (centos7)

  1. 1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS
    版本是否支持Docker 。
    通过 uname -r 命令查看你当前的内核版本
    $ uname -r
    2、使用 root 权限登录 Centos。确保 yum 包更新到最新。
    $ yum update
    3、卸载旧版本(如果安装过旧版本的话)
    $ yum remove docker docker-common docker-selinux docker-engine
    4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
    $ yum install -y yum-utils device-mapper-persistent-data lvm2
    5、设置yum源
    $ sudo yum-config-manager --add-repo
    https://download.docker.com/linux/centos/docker-ce.repo
    6、可以查看所有仓库中所有docker版本,并选择特定版本安装
    $ yum list docker-ce --showduplicates | sort -r
    7、安装docker
    $ yum install docker-ce //最新版本,,
    8、启动并加入开机启动
    $ systemctl start docker
    $ systemctl enable docker
    9、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
    $ docker version
    4.配置docker 镜像加速器:
    1.登陆阿里云-----控制台-------镜像服务----镜像加速器设置镜像加速地址
    2.将配置文档copy到虚拟机执行即可
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    5.执行helloworld
    执行命令:docker run hello-world
    run命令解析:
    在这里插入图片描述
    6.docker容器虚拟化技术,与虚拟机的区别:
    https://blog.csdn.net/kaizuidebanli/article/details/83742757
    7.docker常用命令
    docker version //查看版本
    docker info //查看详细版本
    dcoker --help // 命令帮助文档

    dcoker ps //列出运行的容器
    -l 上次运行的容器
    -n 3 最近运行的3次容器
    docker rmi -f $(docker images -qa) //批量删除所有镜像
    docker rm -f $(docker ps -q -a) //批量删除所有容器
    docker run -it --name //运行镜像,并打开交互窗口, --name给容器命名

    docker images //列出所用镜像
    -a 列出所有镜像包括中间层
    -q 显示当前镜像的id
    dcoker run -it -p 7777:8080 tomcat //启动tomcat 并且指定映射端口号
    docker attach ‘容器名/id’ //进入某个运行的额容器
    docker exec ‘容器id’ ls -l /tmp //在宿主机的交互页面,操作某个容器里显示容器里的tmp 目录
    docker search tomcat ///=从docker hub 上查找tomcat的镜像
    -s 30 tomcat //-s代表star星数,表示使用的次数大于30的tomcat
    docker pull tomcat //从仓库拉最新版的tomcat ,后面可加标签,下载指定版本

    docker start 容器id //启动容器
    docker stop 容器id //关闭容器
    docker run -it -p 7777:8080 tomcat //启动tomcat,映射端口为7777,外部访问用7777
    -P 会随机分配映射的端口号

    docker logs -t -f --tail 容器id //查看该容器的后台日志,-t 时间戳 -f 跟随最新日志打印 ,–tail 30 最近30条
    docker cp 容器id: /容器里的目录 /宿主机目录结构

    按键:ctril +p +q 退出当前的容器实例,不会关闭,(相当于从鲸鱼背上跳到大海里)输入exit 退出容器并关闭

docker 镜像原理:是由一个联合文件系统构成(unioneFS),
1.最底层是bootfs,包含boot加载器和内核,当加载完内核,内核就存在内存中了,内存的使用权就交给了内核
2.bootfs 的上一层是rootfs,就是一个操作系统,比如linux系统
3.镜像就如一个千层饼,一层套一层,
在这里插入图片描述
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hwbGoyMDEz,size_16,color_FFFFFF,t_70)
为什么使用联合文件操作系统:因为这样可以共享资源,多个镜像都是从base镜像构建而来,只需要一个base镜像,就可以为多个容器实例使用,达到的共享资源的目的

容器数据卷:相当关于移动硬盘,就是用来持久化,共享数据文件

docker run -it -v /宿主机绝对路径:/容器内目录:ro(只读权限) 镜像名 //将宿主的目录和 该镜像生成的容器的目录相关联

docker run -it --name ‘目标容器’ --volumes-from ‘源容器’ 镜像名字 //从镜像开启一个名字叫 ‘目标容器’的容器实例,,数据卷配置继承自 ‘源容器’;
容器间的信息具有传递性,数据卷的生命周期持续到没有使用他的容器为止;

dockers inspect 容器id //用来查看宿主目录与容器目录是否挂载成功

dockerFile 命令解释:
1.FROM
格式为FROM image或FROM image:tag,并且Dockerfile中第一条指令必须是FROM指令,且在同一个Dockerfile中创建多个镜像时,可以使用多个FROM指令。

2.MAINTAINER
格式为MAINTAINER user_name user_email,指定维护者信息

3.RUN
格式为RUN command或 RUN [“EXECUTABLE”,“PARAM1”,“PARAM2”…],前者在shell终端中运行命令,/bin/sh -c command,例如:/bin/sh -c “echo hello”;后者使用exec执行,指定其他运行终端使用RUN["/bin/bash","-c",“echo hello”]
每条RUN指令将当前的镜像基础上执行指令,并提交为新的镜像,命令较长的时候可以使用\来换行。

4.CMD
支持三种格式:
CMD [“executable”,“param1”,“param2”],使用exec执行,这是推荐的方式。
CMD command param1 param2 在/bin/sh中执行。
CMD [“param1”,“param2”] 提供给ENTERYPOINT的默认参数。
CMD用于指定容器启动时执行的命令,每个Dockerfile只能有一个CMD命令,多个CMD命令只执行最后一个。若容器启动时指定了运行的命令,则会覆盖掉CMD中指定的命令。

5.EXPOSE
格式为 EXPOSE port [port2,port3,…],例如EXPOSE 80这条指令告诉Docker服务器暴露80端口,供容器外部连接使用。
在启动容器的使用使用-P,Docker会自动分配一个端口和转发指定的端口,使用-p可以具体指定使用哪个本地的端口来映射对外开放的端口。

6.ENV
格式为:EVN key value 。用于指定环境变量,这些环境变量,后续可以被RUN指令使用,容器运行起来之后,也可以在容器中获取这些环境变量。
例如
ENV word hello
RUN echo $word

7.ADD
格式:ADD src dest
该命令将复制指定本地目录中的文件到容器中的dest中,src可以是是一个绝对路径,也可以是一个URL或一个tar文件,tar文件会自动解压为目录。

8.COPY
格式为:COPY src desc
复制本地主机src目录或文件到容器的desc目录,desc不存在时会自动创建。

9.ENTRYPOINT
格式有两种:
ENTRYPOINT [“executable”,“param1”,“param2”]
ENTRYPOINT command param1,param2 会在shell中执行。
用于配置容器启动后执行的命令,这些命令不能被docker run提供的参数覆盖。和CMD一样,每个Dockerfile中只能有一个ENTRYPOINT,当有多个时最后一个生效。
若容器启动时指定了运行的命令,则会追加到启动命令后面。
例如:docker run -it 容器id ‘其他命令’ ///‘其他命令会追加到启动命令后面,与add 的区别’

10.VOLUME
格式为 VOLUME ["/data"]
作用是创建在本地主机或其他容器可以挂载的数据卷,用来存放数据。

11.USER
格式为:USER username
指定容器运行时的用户名或UID,后续的RUN也会使用指定的用户。要临时使用管理员权限可以使用sudo。在USER命令之前可以使用RUN命令创建需要的用户。
例如:RUN groupadd -r docker && useradd -r -g docker docker

12.WORKDIR
格式: WORKDIR /path
为后续的RUN CMD ENTRYPOINT指定配置工作目录,可以使用多个WORKDIR指令,若后续指令用得是相对路径,则会基于之前的命令指定路径。

13.ONBUILD
格式ONBUILD [INSTRUCTION]
该配置指定当所创建的镜像作为其他新建镜像的基础镜像时所执行的指令。
例如下面的Dockerfile创建了镜像A:
ONBUILD ADD . /app
ONBUILD RUN python app.py

则基于镜像A创建新的镜像时,新的Dockerfile中使用from A 指定基镜像时,会自动执行ONBBUILD指令内容,等价于在新的要构建镜像的Dockerfile中增加了两条指令:
FROM A
ADD ./app
RUN python app.py

14.docker build
创建好Dockerfile之后,通过docker build命令来创建镜像,该命令首先会上传Dockerfile文件给Docker服务器端,服务器端将逐行执行Dockerfile中定义的指令。
通常建议放置Dockerfile的目录为空目录。另外可以在目录下创建.dockerignore文件,让Docker忽略路径下的文件和目录,这一点与Git中的配置很相似。

通过 -t 指定镜像的标签信息,例如:docker build -t regenzm/first_image . ##"."指定的是Dockerfile所在的路径

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值