docker笔记(一)

docker最近很火的容器化部署平台。我们可以把docker中的镜像和容器分别理解成类和对象(类的实例 )。本文的测试环境针对mac,linux上可能会有些许不同。

检查Docker Engine,Docker Compose和Docker Machine的版本

MacBook:~ max$ docker --version
Docker version 18.03.1-ce, build 9ee9f40

MacBook:~ max$ docker-compose --version
docker-compose version 1.21.1, build 5a3f1a3

MacBook:~ max$ docker-machine --version
docker-machine version 0.14.0, build 89b8332

测试docker是否已经部署好,可以使用docker run hello-world命令,如果输出如下内容,说明docker已经部署完毕

MacBook:~ max$ 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.
    (amd64)
 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://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/engine/userguide/

上述命令实际已经运行了一个镜像为hello-world容器,从上面我们看出docker运行hello-world镜像的过程,
1.docker client先与docker daemon(也就是docker server)建立连接
2.docker daemon从 docker hub pull镜像下来
3.docker daemon根据镜像创建了一个容器,并且产生了output那句"Hello from Docker!"
4.docker daemon把output通过docker client输出的终端上,所以我们看到了,那句输出"Hello from Docker!"
至此,这个容器运行完毕,也就退出了。
docker ps命令查看正在运行的容器,所以我们如果要查看全部的容器,需要用到docker ps -a

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                         PORTS                NAMES
7d0a57302d9b        hello-world         "/hello"                 2 minutes ago       Exited (0) 2 minutes ago                            distracted_mclean

用docker ps -a 命令发现,目前本地只有一个hello-world的镜像,接下来,我们试着在后台运行一个nigix服务看看

docker run -d -p 80:80 --name webserver nginx

默认会从docker hub下载的镜像都是latest镜像,下载完毕后会在后端启用一个端口为80的web服务。
-d :分离模式: 在后台运行
-p (小写) 参数来指定端口映射,也就是docker daemon中的nginx镜像运行的端口指定为80,并且映射到本地电脑的80端口
--name webserver:表示把这个nginx服务命令为webserver
打开浏览器,查看本地启用的web服务,如下



关闭刚才在后台运行web容器服务

docker stop webserver

如果想运行一个容器

docker start 容器名

删除容器,需要注意的是删除容器时,需要确保容器已经停止运行

docker rm 容器id

接下来,pull一个centos镜像下来,试着在 centos中进行相关的操作,如果centos镜像没有的话,需要先把centos镜像下载下来

拉取tag为latest的centos镜像时,tag可以省略成如下命令
docker pull centos
拉取全部的centos镜像,命令为
docker pull centos -a

提示:
如果出现Status: Image is up to date for centos:latest 说明已经存在了镜像centos:latest

我们查看所有的镜像

docker images

删除镜像
如果你执行了docker pull centos -a操作,在查看所有镜像会发现好多centos都被pull下来了,删除镜像用
如果镜像id相同,需要用docker rmi REPOSITORY:TAG 进行操作,否则会报错

docker rmi 镜像id

运行一个容器
运行docker 中的REPOSITORY为centos,TAG为latest镜像运行一个hello world。运行完毕后,我们查看容器docker ps -a,发现刚才运行的容器已经退出

docker run centos:latest /bin/echo 'hello world'
当然tag为latest时,我们可以简写成
docker run centos /bin/echo 'hello world'

CONTAINER ID        IMAGE               COMMAND                      CREATED               STATUS                                   PORTS                NAMES
7d0a57302d9b        hello-world         "/hello"                               19 minutes ago        Exited (0) 19 minutes ago                                   distracted_mclean
b349c90cd93d        nginx                   "nginx -g 'daemon of…"    44 minutes ago        Exited (0) 43 minutes ago                                  friendly_mahavira
99ecd2d1ec3b        centos:latest       "/bin/echo 'Hello wo…"      About an hour ago   Exited (0) About 1 minutes ago                         sandly_adesa

获取容器的pid

docker inspect --format "{{.State.pid}}" webserver

进入容器

nsenter --target 32439 --mount --uts --ipc --net --pid

默认运行一个容器时,系统会指定一个容器的名字名字,如果需要以特定名字启动一个容器,可以运行

docker run --name mycentos centos /bin/echo 'hello-w'

运行一个指定名字的容器,并且进入对应的容器中
-it实际上时-i和-t的参数的缩写,-i是让容器的终端打开,以便输入东西。-t是开一个伪终端绑定到我们当前的终端上

docker run --name mydocker -it centos /bin/bash

这样,我们就进入了centos容器里面了,新打开一个终端,输入docker ps可以看到正在运行的名为mydocker的centos容器

MacBook:~ max$ docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
284a76eeb573        centos              "/bin/bash"         About an hour ago   Up About an hour                        mydocker
MacBook:~ max$

下面的操作在centos容器内部操作了哦
表示查看当前的目录
ls /

[root@284a76eeb573 /]# ls /
bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

查看当前的进程
ps aux

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

推荐阅读更多精彩内容

  • 《Docker从入门到实践》阅读笔记 原书地址: https://yeasy.gitbooks.io/docker...
    GuoYuebo阅读 11,334评论 1 39
  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 10,460评论 0 120
  • 先说说什么是镜像(image),什么是容器吧? 这两者有点像《奇异博士》里的那个镜像。镜像就是虚拟出来的世界, ...
    bboymonk阅读 50评论 0 0
  • “哗哗哗哗”,“咄咄咄咄”,“嘶~嘶~” 很快的洗净三根丝瓜,刀与丝瓜成斜面切成细长的薄片,锅热后,倒油,下丝瓜片...
    秋之懒风阅读 296评论 4 2
  • 【阿懒导读:上市公司CFO赚钱的主要方法。】 “价格”系列,原本只有二篇。写到《价格(二)——搭桥》就算是写完了。...
    郑州投资俱乐部sk阅读 544评论 0 0