Docker基础实践

1.Docke介绍

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。

Docker通常用于如下场景:

web应用的自动化打包和发布;

自动化测试和持续集成、发布;

在服务型环境中部署和调整数据库或其他的后台应用;

从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

1.1 Docker镜像

镜像是一个只读的模板,用来创建Docker容器;

Docker提供了一个简单的机制来创建或更新现有的镜像,用户可以直接从其他人那里下载一个已经做好的镜像来直接使用;

1.2 Docker容器

容器是从镜像创建的运行实例;可以看做是一个简易版的Linux环境和运行在其中的应用程序;(镜像是只读的)

1.3仓库

集中存放镜像文件的场所;仓库注册服务器(Register)存放着多个仓库,每个仓库包含了多个镜像,每个镜像有不同的标签;

类比:

Docker仓库--Git

注册服务器--GitHub

2.Docker安装(CentOS7)

CentOS7系统Centos-Extras库已经自带Docker,可以直接安装:

# yum -y install docker

启动Docker服务:

# systemctl start docker

# systemctl status docker

测试运行hello-world

# docker run hello-world

[root@localhost qwq_bak]# docker run hello-world

Hello from Docker!

This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:

1. The Docker client contacted the Docker daemon.

2. The Docker daemon pulled the "hello-world" image from the Docker Hub.

3. The Docker daemon created a new container from that image which runs the

executable that produces the output you are currently reading.

4. The Docker daemon streamed that output to the Docker client, which sent it

to your terminal.

To try something more ambitious, you can run an Ubuntu container with:

$ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:

https://cloud.docker.com/

For more examples and ideas, visit:

https://docs.docker.com/engine/userguide/

3.镜像

3.1获取镜像

$ docker pull ubuntu:16.04


docker pull

3.2 列出本地镜像

# docker images


docker images

3.3 创建

$ docker run learn/tutorial apt-get install -y ping


install ping

4 容器

4.1启动、运行、终止

4.1.1启动容器

两种方式:

    基于镜像新建容器并启动:docker run

    将终止状态的容器重启:docker start

# docker run -t -i ubuntu:16.04 /bin/bash

    -t  分配一个伪终端并绑定到容器标准输入

    -i  让容器的标准输入保持打开

docker run


# docker run ubuntu:16.04 /bin/echo "hello World"

利用docker run创建容器时,其执行步骤为:

1.检查本地是否存在指定镜像,否则下载

2.利用镜像创建并启动一个容器

3.分配文件系统

4.从宿主机网桥借口桥接一个虚拟接口到容器

5.配置IP

6.执行用户指定应用程序

7.执行完毕后终止容器

run ubuntu


# docker ps

docker ps

4.1.2后台运行 -d

# docker run -d ubuntu:16.04 /bin/sh -c "while true;do echo hello World;sleep 2;done"

docker run


# docker logs a2130bf7254c

通过docker logs获取容器输出信息

docker logs


# docker run -d -P training/webapp python app.py

app.py


# docker port ...

docker port


hello world web

4.1.3终止容器

docker stop

终止状态的容器可以用docker ps -a命令看到


docker ps -a

4.2进入容器(-d 容器进入后台)

4.2.1 attach命令:

# docker run -idt ubuntu

# docker ps

# docker attach <docker-name>

docker run -idt


docker attach

4.2.2 nsenter命令

安装:

#cd /tmp

#curl https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz | tar -zxf-;

#cd util-linux-2.24

#./configure --without-ncurses && make nsenter

#cp nsenter /usr/local

使用:

#docker inspect -f {{.State.Pid}} <container>

#nsenter --target <pid> --mount --uts --ipc --net --pid

解释nsenter指令中进程id之后的参数的含义:

* –mount参数是进去到mount namespace中

* –uts参数是进入到uts namespace中

* –ipc参数是进入到System V IPC namaspace中

* –net参数是进入到network namespace中

* –pid参数是进入到pid namespace中

* –user参数是进入到user namespace中

更简单的,建议大家下载 .bashrc_docker,并将内容放到 .bashrc 中。

# wget -P ~https://github.com/yeasy/docker_practice/raw/master/_local/.bashrc_docker;

# echo “[ -f ~/.bashrc_docker ] && . ~/.bashrc_docker” >> ~/.bashrc; source ~/.bashrc

这个文件中定义了很多方便使用 Docker 的命令,例如 docker-pid 可以获取某个容器的 PID;而 docker-enter 可以进入容器或直接在容器内执行命令。

# echo $(docker-pid )

# docker-enter

4.3导入导出

4.3.1导出容器:docker export

#docker export ed1a7cb1f5af > ubuntu.tar

4.3.2导入容器快照为镜像:docker import

#cat ubuntu.tar | docker import ubuntu.tar

也可以通过指定URL或某个目录来导入:

#docker import http://example.com/exampleimage example/imagerepo

4.3.3导入镜像存储文件到本地镜像库:docker load

4.4删除容器

删除终止状态的容器:docker rm

删除运行中的容器:docker rm -f

清理所有处于终止状态的容器:docker rm $(docker ps -a -q)

5 仓库

5.1登录

#docker login


docker login

5.2基本操作

5.2.1查找仓库中的镜像

#docker search ...

5.2.2下载镜像

#docker pull ...

docker push推送镜像到Docker Hub

5.2.3自动创建

5.3私有仓库

5.3.1安装运行docker-registry


6 基本命令总结

docker attach   登录一个已经在执行的容器

docker build    建立一个新的image

docker commit   提交一个新的image

docker cp   将容器中的文件拷贝到主机上

docker daemon    docker运行可指定项详解

docker diff     较一个容器不同版本提交的文件差异

docker events     获取sever中的实时事件

docker export    导出一个容器

docker history    显示一个image的历史

docker images     列出image

docker import     导入已有的image

docker info    展示docker的信息

docker inspect     显示更底层的容器或image信息

docker kill     杀死docker进程

docker load     加载image

docker login     登录docker注册服务器

docker logs     获取容器的日志

docker pause    暂停容器中的所有进程

docker port     端口转发

docker ps     列出所有容器

docker pull     从远端拉取一个image

docker push    推送image到注册服务器

docker restart     重启一个容器或多个容器

docker rmi    删除image

docker rm    删除一个或多个容器

docker run     运行一个新的容器

docker save    打包image

docker search     搜索images

docker start    启动一个容器

docker stop    停止一个容器

docker tag    为image打标签

docker top    显示容器中的进程

docker unpause    取消暂停所有的进程

docker version    显示版本信息

docker wait     阻塞容器运行

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

推荐阅读更多精彩内容

  • Docker — 云时代的程序分发方式 要说最近一年云计算业界有什么大事件?Google Compute Engi...
    ahohoho阅读 15,506评论 15 147
  • 一、Docker 简介 Docker 两个主要部件:Docker: 开源的容器虚拟化平台Docker Hub: 用...
    R_X阅读 4,377评论 0 27
  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 10,468评论 0 120
  • 简述docker一些常用的操作 查看到docker是否正常运行docker info 返回所有docker所有容器...
    翼动晴空阅读 998评论 0 10
  • 绿色的叶子缀满了晶莹的水珠 整个天空漂浮着像棉花糖一样的朵朵白云 雨后空气清新了好多 树上的叶子更加葱绿 太阳暂时...
    田萍阅读 178评论 2 8