[docker]docker基本使用

docker[Centos 7]:

    个人理解的docker,核心为镜像容器。docker可以运行在各大系统上,这里记录运用在linux上的情况。其中,镜像可以理解为就是一个打包完毕的对应应用的安装介质,容器可以理解为一个一个独立的用来放镜像对应应用的独立沙箱。


常用命令:

1.docker相关命令:

安装命令:

卸载旧版本yum -y remove docker docker-common docker-selinux docker-engine 

安装需要的软件包 yum install -y yum-utils device-mapper-persistent-data lvm2

设置stable镜像仓库yum-config-manager --add-repohttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新yum软件包索引yum makecache fast

安装DOCKER CEyum -y install docker-ce

测试docker version

卸载systemctl stop docker yum -y remove docker-ce rm -rf /var/lib/docker

查看是否安装完毕 docker -v

启动 systemctl start docker

关闭 systemctl stop docker

状态 systemctl status docker

开机自启 systemctl enable docker

2.配置阿里云镜像加速

sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://sd7sgxrc.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker 直接运行即可

3.镜像相关命令:

查看目前有的镜像:docker images

搜索镜像 : docker search images(可以上hub.docker.com进行查找)

下载镜像:docker pull 镜像名字:版本号 例: docker pull redis:5.0

删除镜像:

3.1 删除单个: docker rmi -f 镜像ID

3.2 删除多个: docker rmi -f 镜像名1:版本号 镜像名2:版本号

3.3 删除全部 : docker rmi -f `docker images -p` (这里`为esc下方按键 其实就是列出所有镜像 名 然后删除)

4.容器命令

新建并启动交互型容器(exit后就退出容器) : docker run -it --name=xx 镜像名:版本号 /bin/bash

新建并启动守护型容器 : docker run id --name=xx 镜像名:版本号

i :与容器交互 t: 终端 d:守护进程 it:打开容器的时候,直接打开终端,一旦exit,离开终端同时该容器会被关闭. id:打开容器的时候,为守护进程,不直接打开终端,exit不会关闭容器。若需要进入终端, 使用exec命令

查看正在运行的容器: docker ps

查看所有容器(不管是否在运行) docker ps -a

若是守护进程类型的容器,打开终端与其交互命令: docker exec -it 容器名 /bin/bash

启动容器 docker start 容器ID/容器名称

关闭容器 docker stop 容器ID/容器名称

删除容器 docker rm 容器ID/容器名称

查看容器信息 docker inspect 容器ID/容器名称

5.数据卷

    个人理解:docker大体的结构是 主机 - 容器 ,数据卷就是一个 目录或者文件 ,用于和容器进行绑定的一个东西。可用于持久数据。

用法 : 创建启动容器时 使用-v命令 如: docker run id/it --name=xx -v /root/data:/root/container [格式 : docker run ... -v 宿主机目录(文件):容器内目录(文件)]

6.数据卷容器

    个人理解:主要作用,就是创建一个容器,专门和宿主机进行绑定。而后有要和这个数据卷绑定的,直接和该容器绑定即可。相当于第5点数据卷中,多个容器想绑定同个目录时,分别创建-v 去绑定相同宿主机目录一样.

用法 :

    创建数据卷容器 docker run -it --name = c3 /volume centos:7 /bin/bash(如果直接这样写 他会在宿主机分配一个地址,可以通过docker inspect 容器ID/容器名称进行查看)

创建要和该数据卷容器绑定的容器:

docker run -it --name=c1 --volumes-from c3 centos:7 /bin/bash

docker run -it --name=c2 --volumes-from c3 centos:7 /bin/bash

这样 c1 c2 c3则已经完全绑定一起,共享同一个数据卷

7. mysql应用部署

1. 搜索mysql镜像

docker search mysql

2. 拉取mysql镜像

docker pull mysql:5.6

3. 创建容器,设置端口映射、目录映射

# 在/root目录下创建mysql目录用于存储mysql数据信息

mkdir ~/mysql

cd ~/mysql

docker run -id \

-p 3306:3306 \

--name=docker_mysql5.7 \

-v $PWD/conf:/etc/mysql/conf.d \

-v $PWD/logs:/logs \

-v $PWD/data:/var/lib/mysql \

-e MYSQL_ROOT_PASSWORD=Cx776815 \

mysql:5.7

- 参数说明:

- **-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 用户的密码。

4. 进入容器,操作mysql

docker exec –it c_mysql /bin/bash

8.Tomcat 部署

    过程如同部署mysql , 分为四步,找到自己要的镜像,拉取下来到docker,创建对应的tomcat容器,创建时将数据卷设置好。真正运用的时候,个人认为最好将数据卷定位到tomcat文件夹 而非webapps 可以方便启动 或者 关闭等 还未进行实战

实战记录

1. 部署tomcat

docker run -id --name=c_tomcat -p 8080:8080 -v /root/tomcat/bin:/usr/local/tomcat/bin -v /root/tomcat/webapps:/usr/local/tomcat/webapps -v $PWD/logs:/usr/local/tomcat/logs -v $PWD/conf:/usr/local/tomcat/conf tomcat /bin/bash

创建成功,但是容器那边的bin conf logs webapps 均变成了空 故是有问题的

最终还是只对webapps文件夹进行了数据卷操作。

docker run -id --name=c_tomcat -p 80:8080 -v /root/tomcat/webapps:/usr/local/tomcat/webapps tomcat /bin/bash

最终查询资料得:

    数据的覆盖问题

    如果挂载一个空的数据卷到容器中的一个非空目录中,那么这个目录下的文件会被复制到数据卷中。

    如果挂载一个非空的数据卷到容器中的一个目录中,那么容器中的目录中会显示数据卷中的数据。如果原来容器中的目录中有数据,那么这些原始数据会被隐藏掉。

    这两个规则都非常重要,灵活利用第一个规则可以帮助我们初始化数据卷中的内容。掌握第二个规则可以保证挂载数据卷后的数据总是你期望的结果。

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

推荐阅读更多精彩内容

  • Docker安装与使用 一、docker安装。 1、安装要求: 1)docker要求服务CentOS6以上,ker...
    卬之别录阅读 1,949评论 0 1
  • 01【熟悉】docker简介 1,什么是docker Docker是一个开源项目,诞生于2013年初,最初是d...
    北辰_6666阅读 335评论 0 0
  • Docker 简介 背景 开发和运维之间因为环境不同而导致的矛盾 集群环境下每台机器部署相同的应用 DevOps(...
    段永平阅读 614评论 0 0
  • 一篇文章学会docker docker安装 docker在线安装 1.更新yum到最新 2.卸载旧版本 3.安装需...
    饶一熊阅读 770评论 0 1
  • 深入浅出Docker Docker概述 基于GO语言开发 Docker的思想来自于集装箱。Docker通过隔离机...
    summerbythesea阅读 408评论 0 0