Docker容器从一知半解到入门

Docker是一个开源的、跨平台的应用容器引擎,可以让技术开发认用打包他们的应用以及一些依赖包到一个可移植的容器平台中,发布到任何流行的Linux操作系统上面,也可以在Windows和mac操作系统上面跑,容器是完全使用沙箱机制,容器相互之间不会存在任何接口。docker应用广泛、安全性好、运行快、节约资源、移植性好、自动化部署快等特点。

下面我们来看一张docker镜像基本原处理图:

image

我们在学习Docker镜像的时候,使用系统默认的yum源安装会非常慢,很有可能会安装失败,因为docker服务器在国外,访问速度非常慢,访问网络也不稳定,而且国外的docker hub官网拉取镜像也太慢了,我们可以直接修改用国内的阿里的容器Hub服务 https://cr.console.aliyun.com的控制台,这里需要登录阿里账号或者支付宝账号,也可以使用腾讯云、百度云、华为云、ucloud、网易云等都有docker镜像hub,我这里使用的阿里云镜像服务;在学习docker容器的前提下还是要对Linux要有点基础,这样学起来就容易上手,如果完全不懂Linux,还是建议你去学习下《Linux就该这么学》这边教程里面的内容非常详细,比较适合初学者。此文章比较适合于企业应用。

1、Centos7 install docker-ce

安装指定版本的Docker-CE:

# Step 1: 查找Docker-CE的版本:# yum listdocker-ce.x86_64 --showduplicates | sort -r * updates: mirrors.aliyun.comLoading mirror speedsfrom cached hostfileLoaded plugins:fastestmirrorInstalled Packages * extras: mirrors.aliyun.com * epel: mirrors.ustc.edu.cndocker-ce.x86_64            3:18.09.0-3.el7                      docker-ce-stabledocker-ce.x86_64            3:18.09.0-3.el7                       @docker-ce-stabledocker-ce.x86_64            18.06.1.ce-3.el7                    docker-ce-stabledocker-ce.x86_64            18.06.0.ce-3.el7                    docker-ce-stabledocker-ce.x86_64            18.03.1.ce-1.el7.centos            docker-ce-stabledocker-ce.x86_64            18.03.0.ce-1.el7.centos            docker-ce-stabledocker-ce.x86_64            17.12.1.ce-1.el7.centos            docker-ce-stabledocker-ce.x86_64            17.12.0.ce-1.el7.centos            docker-ce-stabledocker-ce.x86_64            17.09.1.ce-1.el7.centos            docker-ce-stabledocker-ce.x86_64            17.09.0.ce-1.el7.centos            docker-ce-stabledocker-ce.x86_64            17.06.2.ce-1.el7.centos            docker-ce-stabledocker-ce.x86_64            17.06.1.ce-1.el7.centos            docker-ce-stabledocker-ce.x86_64            17.06.0.ce-1.el7.centos            docker-ce-stabledocker-ce.x86_64            17.03.3.ce-1.el7                     docker-ce-stabledocker-ce.x86_64            17.03.2.ce-1.el7.centos            docker-ce-stabledocker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stabledocker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable * base: mirrors.cqu.edu.cnAvailable Packages# Step2: 安装指定版本的Docker-CE# sudo yum -y installdocker-ce-[VERSION]

安装最新版本的Docker-CE:

# step 1: 安装必要的一些系统工具yum install -y yum-utilsdevice-mapper-persistent-data lvm2 -y# Step 2: 添加软件源信息 yum-config-manager --add-repohttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# Step 3: 更新并安装Docker-CEyum makecache fastyum -y install docker-ce# Step 4: 开启Docker服务systemctl startdocker.serviceStep 5: 查看Docker安装版本docker --versionDocker version 18.09.0,build 4d60db4
2、docker安装目录结构
image
3、启动和停止镜像
3.1、启动容器

自定义镜像名:便于区分
-d 后台运行

image

指定主机启动的名称

[root@centos7 ~]# docker run -itd -h hostname 镜像举例:[root@centos7 ~]# docker run -itd docker.io/ubuntu /bin/bashroot@82f8b90c9eba:/#
image

3.2、停止/退出,docker退出容器,并且关闭容器

exitdocker退出容器,而不关闭容器:ctrl+p    ctrl+q   //这里2个步骤ctrl+p+q  
3.3、docker给运行的容器映射本地端口
[root@centos7 ~]# docker run -itd -p 0.0.0.0:80:80 --name apachedocker.io/ubuntu /bin/bash
4、docker常用命令及解释如下
docker search nginx   //搜索镜像库docker pull nginx   //选择合适的镜像并拉取镜像docker images nginx   //在本地镜像列表里查到 REPOSITORY 为 nginx 的镜像docker images httpd   //在本地镜像列表里查到 REPOSITORY 为apache的镜像docker info    //查看docker信息docker version    //查看docker版本docker pull 镜像名称   //下载(拉)镜像docker push 镜像名称   //上传镜像docker load -i 镜像名称.tar  //导入镜像docker images    //查看所有已经安装的镜像列表docker attach 镜像名/镜像ID  //进入镜像里面docker exec 镜像名/镜像ID ls /home //在执行shell命令到容器里面

举例:a.txt b.txt是我开始创建的2个文本文件

[root@centos7 ~]# docker execelegant_bhaskara ls /homea.txtb.txt[root@centos7 ~]# docker stop 镜像名/镜像ID //停止镜像[root@centos7 ~]# docker tag 原镜像名 新镜像名  //生成新的images
image
image

举例:docker tag docker.io/ubuntu ubuntu:laste

image
[root@centos7 ~]#  docker run -it test:ubuntu /bin/bash[root@centos7 ~]#  docker commit hopeful_carson(NAMES)ubuntu(REPOSITORY):self(tag)  //提交镜像,生成新的镜像,镜像里面的配置也保留了,便于多个版本的管理[root@centos7 ~]# docker run -itd --name test01_self ubuntu:self  用提交的镜像再启动新的镜像0f280fd95659c81fcff4069bb53ff53b07d06b28de05111dd5a9177e16865f22[root@centos7 ~]# docker exec test01_self ls/home
image
image
image
image
5、提交运行中的容器为一个镜像 (这样不会丢失在容器的各种操作)
[root@centos7 ~]# docker commit clever_haibt clever_haibt_new###   clever_haibt(运行容器名称)   clever_haibt_new(生成镜像名称)
6、运行镜像并添加端口
[root@centos7 ~]# docker run -d -it -p 80:80 clever_haibt_new:latest/bin/bash###  小p是自定义端口    latest 是镜像的标签(最好写上专业点)举例apache:httpd:latest# docker run -d -it -p80:80 httpd:latest
image

测试:http://ip

image
image
7、列出运行的镜像
[root@centos7 ~]# docker ps      //查看已运行的容器状态查看镜像、容器、数据卷所占用的空间[root@centos7 ~]# docker system df
image
8、Docker本身提供了两种终止容器运行的方式,查看帮助
[root@centos7 ~]# docker stop --help举例:docker stop NAMESdocker kill --help
image
9、linux下解决docker端口映射到宿主机后外网无法访问的问题?

解决办法:

[root@centos7 ~]#vim /etc/sysctl.conf或者[root@centos7 ~]#vim /usr/lib/sysctl.d/00-system.conf添加如下代码:net.ipv4.ip_forward=1重启network服务# systemctlrestart network查看是否修改成功# sysctlnet.ipv4.ip_forward 如果返回为“net.ipv4.ip_forward = 1”则表示成功了
10、删除镜像

先停止镜像--再执行删除操作

[root@centos7 ~]# docker rm 镜像名称/容器ID[root@centos7 ~]# docker rm -f 镜像名称/容器ID //强制删除镜像
image
11、导出镜像,生成tar包,export导出的是读写层的文件系统
[root@centos7 ~]# docker export 镜像名/镜像ID > XXXX.tar
image

举例:

[root@centos7 ~]# docker export test01_self > test01.tar

导出完整镜像:save:导出镜像所有文件和历史纪录

[root@centos7 ~]# docker savedocker.io/imagine10255/centos6-lnmp-php56 > lnmp.tar
image

12、导入镜像

[root@centos7 ~]# docker import test01.tar(镜像包) ubuntu:self_new(新的镜像名)
image
13、启动导入的镜像
[root@centos7 ~]# docker run -itd --name ubuntu_self_new ubuntu:self_new/bin/bash
image

打包前创建的文件存在

image

导入完整镜像: load

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

推荐阅读更多精彩内容