docker学习笔记——安装及基础命令

一、docker安装(Cenos7操作系统)

1)检查前提条件
uname -a(检查内核版本,需要高于3.8)
grep device-mapper /proc/devices(检查是否存在Device Mapper)
yum instal -y device-mapper(如果不存在device-mapper则安装)
modprobe dm_mod(加载Device Mapper模块)
2)安装Docker
yum install -y epel-release
yum install -y docker-io
3)启动Docker守护进程
systemctl start docker(启动docker)
systemctl enable docker(启动docker守护进程)

二、docker基础操作

docker info    ---->   查看当前docker的所有容器、镜像及驱动等详细信息
docker run -i -t <image name> /bin/bash    ---->    启动一个指定镜像的Docker容器(-i 保证容器STDIN是开启的,-t为创建的容器分配一个伪tty终端,这两个命令行参数为新创建的容器提供了一个交互式shell)
docker run --name <docker name> -i -t <image name>:<version> /bin/bash    ---->    启动一个指定容器名称及镜像版本的Docker容器
docker run -d -p <host ip>:<host port>:<docker port> <image name>    ---->    后台一个对应端口映射的Docker容器
docker start <docker name/docker id>    ---->    启动容器
docker attach <docker name/docker id>    ---->    进入到容器会话中
docker run --name <容器名称> -d <镜像名称> /bin/sh -c "while true; do echo hello world; sleep 1; done"    ---->    创建守护式容器(docker run使用了-d参数,Docke会将容器放到后台运行)
docker ps    ---->    显示当前运行中的容器
docker ps -a    ---->    显示当前所有容器
docker logs <docker name>    ---->    获取容器的日志
docker logs --tail 10 -f <docker name>    ---->    始终获取容器最后10行的日志
dokcer top <docker name>     ---->    查看容器内的进程
docker exec -d <docker name> <cmd>    ---->    在容器后台运行命令
docker exec -i -t <docker name> /bin/bash    ---->    在容器内运行交互式命令
docker stop <docker name/docker id>    ---->    停止守护进程
docker run --restart=always --name <docker name> -d <image name> /bin/sh        ---->    创建一个自动重启的容器,当--restart参数的为on-failure:5时,则可设置容器最多重启5次
docker inspect <docker name>        ---->    获取指定容器的详细信息
docker inspect --format '{{.Name}} {{.State.Running}}'            ---->    指定多个容器,并显示每个容器的输出结果
docker kill <docker name/docker id>        ---->    强制停止容器
docker rm <docker name/docker id>        ---->    删除容器
docker rm 'docker ps -a -q'        ---->    删除所有容器(docker ps -a表示列出了所有的容器,-q表示只返回容器的ID,获取所有容器的ID信息传给docker rm)

三、docker镜像与仓库

1、镜像与仓库
Docker镜像最底层是一个引导文件系统(bootfs),当一个容器启动后,容器将会被移动到内存中,而引导文件系统将会被卸载,以留出更多内存空间供initrd磁盘镜像使用。第二层是root文件系统(rootfs),它位于引导文件系统之上。Docker通过联合加载技术在roofs上,一次同时加载多个文件系统,将各层文件系统叠加到一起,最终仅以一个文件系统呈现给用户。Docker将这样的文件系统称作镜像。

Docker文件系统层

父镜像:B镜像位于A镜像下面,则B镜像称为A镜像的父镜像
基础镜像:镜像栈最底部的镜像

Docker会在会在镜像的最顶层加载一个读写文件系统,供Docker运行程序在读写层执行。Docker使用写时复制的机制来对文件进行处理。写时复制:当创建一个新容器,Docker会构建一个镜像栈,并在栈的最顶端添加一个读写层,每次修改文件,Docker首先会从该读写层下面的只读层中获取该文件的复制副本,在通过修改读写层的文件副本来实现操作。Docker的写实复制机制+镜像分层框架,使用户可以快速构建镜像并运行包含应用服务的容器。

顶层仓库:Docker内部人员管理的公共仓库
用户仓库:Docker用户创建的个人仓库

docker images ubuntu:latest    ---->   列出最新ubuntu镜像
docker pull fedora:20    ---->   从顶层仓库拉取fedora:20镜像到本地
docker search puppet    ---->   查找公共可用puppet镜像

2、构建自定义镜像
创建DockerHub账号:
通过https://hub.docker.com/signup注册一个Docker Hub账号并激活
本地通过docker login命令登录账号
1)commit命令创建镜像:
a:使用基础镜像创建并运行一个容器
b:进入容器安装或设置需要的服务及环境
c:退出容器,执行命令docker commit -m="<comment>" --author="<author>" <docker id> <customed image name>:<tag>
2)Dockerfile构建镜像:
a:编写一个Dockerfile文件

dockerfile配置

b:执行命令docker build -t <image name>:<tag name> -f <docker file name> .
c:如果build失败,可以执行命令docker run -it <最后成功那一步的docker id> /bin/bash

docker images <image name>    ---->   查看上步中构建的本地镜像
docker history <image name/id>    ---->   查看镜像的历史记录
docker push <image repository>:<tag>    ---->   上传到指定仓库
docker rmi <image name/id>    ---->   删除镜像(==docker image rm <image name/id>)
docker port <dokcer name/id>    ---->   查看容器的端口映射

四、docker容器网络

1、新建网络:
docker network create -d bridge test-net   (-d:参数指定 Docker 网络类型,有 bridge、overlay。)

2、连接容器:
docker run -itd --name test1 --network test-net ubuntu /bin/bash

3、设置容器DNS:
1)全局设置容器dns

可以在宿主机的 /etc/docker/daemon.json 文件中增加以下内容来设置全部容器的 DNS:
{ "dns" : [ "114.114.114.114", "8.8.8.8" ]}
重启 docker后,执行命令docker run -it --rm ubuntu cat etc/resolv.conf,会输出容器的 DNS 信息。

2)手动指定容器的dns
docker run -it --rm -h host_ubuntu --dns=114.114.114.114 --dns-search=test.com ubuntu

参数说明:
--rm:容器退出时自动清理容器内部的文件系统。
-h HOSTNAME 或者 --hostname=HOSTNAME: 设定容器的主机名,它会被写到容器内的 /etc/hostname 和 /etc/hosts。
--dns=IP_ADDRESS: 添加 DNS 服务器到容器的 /etc/resolv.conf 中,让容器用这个服务器来解析所有不在 /etc/hosts 中的主机名。
--dns-search=DOMAIN: 设定容器的搜索域,当设定搜索域为 .example.com 时,在搜索一个名为 host 的主机时,DNS 不仅搜索 host,还会搜索 host.example.com。

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

推荐阅读更多精彩内容

  • 深入浅出Docker学习笔记 Docker引擎 Docker引擎:用来运行和管理容器的核心文件模块化(基于开放容器...
    yuq329阅读 809评论 0 4
  • 1 Docker 简介 Docker 两个主要部件: Docker: 开源的容器虚拟化平台 Docker Hub:...
    小波同学阅读 491评论 0 3
  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 10,468评论 0 120
  • 【版权声明】本博客转载自汤小洋 一、Docker简介 1. Docker是什么? ​ 产生背景: 开发和运维之...
    云未声阅读 447评论 0 7
  • 目录 [TOC] 1. 简介 Docker是GO语言实现的开源项目,基于Linux容器技术,主要目标是一次封装,到...
    水煮鱼又失败了阅读 262评论 0 2