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

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

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

1、Centos 7 install docker-ce

安装指定版本的Docker-CE:

# Step 1: 查找Docker-CE的版本:

# yum list docker-ce.x86_64 --showduplicates | sort -r

* updates: mirrors.aliyun.com

Loading mirror speeds from cached hostfile

Loaded plugins: fastestmirror

Installed Packages

* extras: mirrors.aliyun.com

* epel: mirrors.ustc.edu.cn

docker-ce.x86_64            3:18.09.0-3.el7                      docker-ce-stable

docker-ce.x86_64            3:18.09.0-3.el7                       @docker-ce-stable

docker-ce.x86_64            18.06.1.ce-3.el7                    docker-ce-stable

docker-ce.x86_64            18.06.0.ce-3.el7                   docker-ce-stable

docker-ce.x86_64            18.03.1.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            18.03.0.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            17.12.1.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            17.12.0.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            17.09.1.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            17.09.0.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            17.06.2.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            17.06.1.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            17.06.0.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            17.03.3.ce-1.el7                     docker-ce-stable

docker-ce.x86_64            17.03.2.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable

* base: mirrors.cqu.edu.cn

Available Packages

# Step2: 安装指定版本的Docker-CE

# sudo yum -y install docker-ce-[VERSION]

安装最新版本的Docker-CE:

# step 1: 安装必要的一些系统工具

yum install -y yum-utils device-mapper-persistent-data lvm2 -y

# Step 2: 添加软件源信息

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# Step 3: 更新并安装Docker-CE

yum makecache fast

yum -y install docker-ce

# Step 4: 开启Docker服务

systemctl start docker.service

Step 5: 查看Docker安装版本

docker --version

Docker version 18.09.0, build 4d60db4

2、docker安装目录结构

3、启动和停止镜像

3.1、启动容器

自定义镜像名:便于区分

-d 后台运行

指定主机启动的名称

[root@centos7 ~]# docker run -itd -h hostname 镜像

举例:

[root@centos7 ~]# docker run -itd docker.io/ubuntu /bin/bash

root@82f8b90c9eba:/#

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

exit

docker退出容器,而不关闭容器:

ctrl+p    ctrl+q   //这里2个步骤

ctrl+p+q

3.3、docker 给运行的容器映射本地端口

[root@centos7 ~]# docker run -itd -p 0.0.0.0:80:80 --name apache docker.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 exec elegant_bhaskara ls /home

a.txt

b.txt

[root@centos7 ~]# docker stop 镜像名/镜像ID //停止镜像

[root@centos7 ~]# docker tag 原镜像名 新镜像名  //生成新的images

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

[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

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 -p 80:80 httpd:latest

测试:http://ip

7、列出运行的镜像

[root@centos7 ~]# docker ps      //查看已运行的容器状态

查看镜像、容器、数据卷所占用的空间

[root@centos7 ~]# docker system df

8、Docker本身提供了两种终止容器运行的方式,查看帮助

[root@centos7 ~]# docker stop --help

举例:docker stop NAMES

docker kill --help

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服务

# systemctl restart network

查看是否修改成功

# sysctl net.ipv4.ip_forward

如果返回为“net.ipv4.ip_forward = 1”

则表示成功了

10、删除镜像

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

[root@centos7 ~]# docker rm 镜像名称/容器ID

[root@centos7 ~]# docker rm -f 镜像名称/容器ID  //强制删除镜像

11、导出镜像,生成tar包,export导出的是读写层的文件系统

[root@centos7 ~]# docker export 镜像名/镜像ID > XXXX.tar

举例:

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

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

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

12、导入镜像

[root@centos7 ~]# docker import test01.tar(镜像包) ubuntu:self_new(新的镜像名)

13、启动导入的镜像

[root@centos7 ~]# docker run -itd --name ubuntu_self_new ubuntu:self_new /bin/bash

打包前创建的文件存在

导入完整镜像: load

[root@centos7 ~]# docker rmi docker.io/imagine10255/centos6-lnmp-php56  //删除

[root@centos7 ~]# docker load -i lnmp.tar  //重新导入

Docker容器从一知半解到入门的更多相关文章

  1. 1.Docker容器学习之新生入门必备基础知识

    0x00 Docker 快速入门 1.基础介绍 描述:Docker [ˈdɑ:kə(r)] 是一个基于Go语言开发实现的遵循Apache 2.0协议开源项目,目标是实现轻量级的操作系统虚拟化解决方案: ...

  2. 2.Docker容器学习之新生入门必备基础知识

    0x02 Docker 核心概念 描述:Docker的三大核心概念镜像/容器和仓库, 通过三大对象核心概念所构建的高效工作流程; 1.镜像 [image] 描述:images 类似于虚拟机镜像,借鉴了 ...

  3. 4.Docker容器学习之Dockerfile入门到放弃

    原文地址: 点击直达 0x01 Dockerfile 编写 描述:Dockerfile是一个文本格式的配置文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内 ...

  4. URLOS开发基础教程——docker容器的使用方法

    URLOS本是基于docker容器运行,在入门URLOS开发之前,我们首先需要掌握docker的相关基础知识,本篇就以docker容器的基本使用方法为例,快速的让大家对docker有一个全面的印象. ...

  5. 自动化集成:Docker容器入门简介

    前言:该系列文章,围绕持续集成:Jenkins+Docker+K8S相关组件,实现自动化管理源码编译.打包.镜像构建.部署等操作:本篇文章主要描述Docker基础用法. 一.Docker简介 1.基础 ...

  6. docker容器技术基础入门

    目录 docker容器技术基础入门 容器(Container) 传统虚拟化与容器的区别 Linux容器技术 Linux Namespaces CGroups LXC docker基本概念 docker ...

  7. Docker容器入门

    为什么要看docker 从去年起就或多或少的接受了docker的熏陶,主要还是Infoq在去年有很多关于docker的实践视频讲座,记得有一篇是<Docker在雪球的技术实践>,当时听的也 ...

  8. Docker入门 - 005 Docker 容器连接

    Docker 容器连接 前面我们实现了通过网络端口来访问运行在docker容器内的服务.下面我们来实现通过端口连接到一个docker容器 网络端口映射 我们创建了一个 python 应用的容器. do ...

  9. Docker入门 - 004 Docker 容器使用

    Docker 客户端 docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项. docker 可以通过命令 docker command -- ...

随机推荐

  1. python线程和进程编程对比

    import timefrom concurrent.futures import ThreadPoolExecutor,as_completedfrom concurrent.futures imp ...

  2. java 面向对象内部类

    1.内部类概念:将一个类定义在另一个类的内部,该类就称为内部类 类中定义的内部类特点1) 内部类作为外部类的成员,可以直接访问外部类的成员(包括 private 成员),反之则不行.2) 内部类做为外 ...

  3. chrome浏览器添加vue-devtools扩展

    1,在百度网盘中下载压缩包,网盘地址:https://pan.baidu.com/s/1i6UdvCD,密码:nvfe 2,将压缩包解压到F盘,F:\chromeVue插件 3,复制文件地址,F:\c ...

  4. 搭建mysql cluster

    虚拟机搭建Mysql Cluster 参考文档:http://www.cnblogs.com/jackluo/archive/2013/01/19/2868152.html http://www.cn ...

  5. 最近找工作,有招JAVA开发的可以联系我,如果不嫌弃我2年前用C,也可以联系我

    java涉及到的技术工具:HSF.Pandora.Notify.Metaq.Diamond.Tddl.ScheduleX.精卫.Switch.BCP.Tair.Hbase.Mysql.Ads.Tlog ...

  6. Luogu4774 NOI2018 屠龙勇士 ExCRT

    传送门 原来NOI也会出裸题啊-- 用multiset求出对付每一个BOSS使用的武器威力\(ATK_i\),可以得到\(m\)个式子\(ATK_ix \equiv a_i \mod p_i\) 看起 ...

  7. JXOI2018简要题解

    JXOI2018简要题解 T1 排序问题 题意 九条可怜是一个热爱思考的女孩子. 九条可怜最近正在研究各种排序的性质,她发现了一种很有趣的排序方法: Gobo sort ! Gobo sort 的算法 ...

  8. Wechat login authorization(OAuth2.0)

    一.前言 昨天小组开了个会,让我今天实现一个微信网页授权的功能,可以让用户在授权之后无需再次登录既可进入用户授权界面.在这之前我也从没接触过微信公众号开发之类的,也不知道公众号后台是啥样子的,自己所在 ...

  9. squid代理http和https方式上网的操作记录

    需求说明:公司IDC机房有一台服务器A,只有内网环境:192.168.1.150现在需要让这台服务器能对外访问,能正常访问http和https请求(即80端口和443端口)操作思路:在IDC机房里另找 ...

  10. python-批量添加图片水印

    前言: 最近总是被无良公众号和培训机构拷贝文章,他们根本不会给你备注原文出处,这种行为真的让人不高兴,所以计划以后的文章都添加上自己的水印. 话不多说,直接上代码. 一.单张图片添加文字水印 # -* ...