docker记录

操作docker进程:
  1. 启动docker: systemctl start docker
  2. 停止docker: systemctl stop docker
  3. 重启docker: systemctl restart docker
  4. 查看docker状态: systemtcl status docker
操作docker镜像:
  1. 查看本地镜像: docker images


    image.png
  2. 搜索镜像: docker search 镜像名称


    image.png
  3. 下载docker镜像: docker pull 镜像名称:版本


    image.png
  4. 删除镜像: docker rmi 镜像id/名字:版本


    image.png
  5. 根据现有容器构造出镜像:docker commit -m "注释" -a="作者" 容器id 镜像名字:版本号
  6. 发布镜像到远端:docker login / docker tag / docker push
操作docker容器:
  1. 通过镜像创建并启动容器:
    docker run -it --name=c1 centos:7
    docker run -id --name=c1 centos:7
    -i:保持容器运行。通常与 -t 同时使用。加入it这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭。
    -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用。
    -d:以守护(后台)模式运行容器。创建一个容器在后台运行,需要使用docker exec 进入容器。退出后,容器不会关闭。
    -it 创建的容器一般称为交互式容器, -id 创建的容器一般称为守护式容器
    --name:为创建的容器命名。
  2. 查看正在运行的容器: docker ps
    -a: 查看历史运行过的容器


    image.png
  3. 停止容器: docker stop 容器名称
  4. 启动容器: docker start 容器名称
  5. 删除容器: docker rm 容器名字/id
  6. 查看容器信息: docker inspect 容器名称
  7. 进入容器: docker exec -it 名字,exit后容器不会关闭
  8. 查看容器日志: docker logs id; docker logs -f --tail=100 id
  9. 查看容器内运行的进程:docker top id
  10. 查看容器内部细节:docker inspect id
  11. 拷贝容器内文件到宿主机:docker cp id:path path
数据卷:

数据卷是宿主机中的一个目录或文件
当容器目录和数据卷目录绑定后,对方的修改会立即同步
一个数据卷可以被多个容器同时挂载
一个容器也可以被挂载多个数据卷

数据卷作用:
容器数据持久化
外部机器和容器间接通信
容器之间数据交换

配置数据卷: docker run ... –v 宿主机目录(文件):容器内目录(文件) ...
目录必须是绝对路径
如果目录不存在,会自动创建
可以挂载多个数据卷


image.png

image.png

数据卷容器:
多个容器挂载在同一个数据卷可以实现容器间的数据交互
数据卷容器也是做这个事的
数据卷容器挂载到数据卷上, 其他容器都挂载到数据卷容器上, 就可以实现多个容器的数据交互了, 但本质上还是多个容器挂载到同一个数据卷上

  1. 创建启动c3数据卷容器,使用 –v 参数 设置数据卷
    docker run –it --name=c3 –v 容器目录 centos:7 /bin/bash
    docker会自动在宿主机上分配一个目录作为数据卷
  2. 创建启动 c1 c2 容器,使用 –-volumes-from 参数 挂载到c3
    docker run –it --name=c1 --volumes-from c3 centos:7 /bin/bash
    docker run –it --name=c2 --volumes-from c3 centos:7 /bin/bash
部署mysql案例:
  1. 搜索镜像
    docker search mysql
  2. 拉取镜像
    docker pull mysql:5.6
  3. 在/root目录下创建mysql目录用于存储mysql数据信息
    mkdir ~/mysql
    cd ~/mysql
  4. 创建docker容器
    docker run -id \
    -p 3307:3306 \
    --name=c_mysql \
    -v $PWD/conf:/etc/mysql/conf.d \
    -v $PWD/logs:/logs \
    -v $PWD/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=123456 \
    mysql:5.6
    参数说明:
    -p 3307:3306:将容器的 3306 端口映射到宿主机的 3307 端口。
    -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录
    -v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录
    -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录
    -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
  5. 进入容器,操作mysql
    docker exec –it c_mysql /bin/bash
    使用外部机器连接mysql时, 需要使用宿主机的ip和端口
dockerfile

我们可以通过dockerfile中的命令去自定义镜像, 例如我们自己写了个springboot应用, 想要发布到docker中, 就可以通过dockerfile构建出对应的镜像, 然后再通过镜像启动容器
dockerfile中的一些关键字:

关键字 作用 备注
FROM 指定父镜像 指定dockerfile基于那个image构建
MAINTAINER 作者信息 用来标明这个dockerfile谁写的
LABEL 标签 用来标明dockerfile的标签 可以使用Label代替Maintainer 最终都是在docker image基本信息中可以查看
RUN 执行命令 执行一段命令 默认是/bin/sh 格式: RUN command 或者 RUN ["command" , "param1","param2"]
CMD 容器启动命令 提供启动容器时候的默认命令 和ENTRYPOINT配合使用.格式 CMD command param1 param2 或者 CMD ["command" , "param1","param2"]
ENTRYPOINT 入口 一般在制作一些执行就关闭的容器中会使用
COPY 复制文件 build的时候复制文件到image中
ADD 添加文件 build的时候添加文件到image中 不仅仅局限于当前build上下文 可以来源于远程服务
ENV 环境变量 指定build时候的环境变量 可以在启动的容器的时候 通过-e覆盖 格式ENV name=value
ARG 构建参数 构建参数 只在构建的时候使用的参数 如果有ENV 那么ENV的相同名字的值始终覆盖arg的参数
VOLUME 定义外部可以挂载的数据卷 指定build的image那些目录可以启动的时候挂载到文件系统中 启动容器的时候使用 -v 绑定 格式 VOLUME ["目录"]
EXPOSE 暴露端口 定义容器运行的时候监听的端口 启动容器的使用-p来绑定暴露端口 格式: EXPOSE 8080 或者 EXPOSE 8080/udp
WORKDIR 工作目录 指定容器内部的工作目录 如果没有创建则自动创建 如果指定/ 使用的是绝对地址 如果不是/开头那么是在上一条workdir的路径的相对路径
USER 指定执行用户 指定build或者启动的时候 用户 在RUN CMD ENTRYPONT执行的时候的用户
HEALTHCHECK 健康检查 指定监测当前容器的健康监测的命令 基本上没用 因为很多时候 应用本身有健康监测机制
ONBUILD 触发器 当存在ONBUILD关键字的镜像作为基础镜像的时候 当执行FROM完成之后 会执行 ONBUILD的命令 但是不影响当前镜像 用处也不怎么大
STOPSIGNAL 发送信号量到宿主机 该STOPSIGNAL指令设置将发送到容器的系统调用信号以退出。
SHELL 指定执行脚本的shell 指定RUN CMD ENTRYPOINT 执行命令的时候 使用的shell

一个例子, 部署springboot项目:
dockerfile:

FROM java:8
ADD springboot.jar app.jar
CMD java -jar app.jar

根据dockerfile构建镜像:
docker build -f ./dockerfile -t app:1
-f 指定dockerfile文件
-t 给镜像取名字
启动容器:
docker run -id -p 7777:8080 app

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容

  • docker学习记录 1.linux 部分指令熟悉日志排查,端口,进程查看..2.docker 镜像和容器命令镜像...
    只猿阅读 266评论 0 0
  • 前言 最近有一段时间没有爬虫相关任务,不能让这个系统太荒废下去所以趁着近期任务处理差不多,重新抽出时间来整理下Sp...
    w_小迪子阅读 690评论 0 1
  • 一.docker 是什么: 2.安装docker 系统:ubuntu16.04 使用脚本自动安装 Docker 官...
    Black_Sun阅读 2,063评论 0 2
  • Docker 笔记来源:https://docs.docker.com/ 和 《docker 容器和容器云》 此笔...
    WunHwan阅读 381评论 0 2
  • 一 Docker安装步骤解析 1.1 基础命令 1.1.1 Docker安装前置任务 #使用uname -r ...
    云淡风轻Jackzz阅读 394评论 0 0