Docker容器从一知半解到入门
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.Docker容器学习之新生入门必备基础知识
0x00 Docker 快速入门 1.基础介绍 描述:Docker [ˈdɑ:kə(r)] 是一个基于Go语言开发实现的遵循Apache 2.0协议开源项目,目标是实现轻量级的操作系统虚拟化解决方案: ...
- 2.Docker容器学习之新生入门必备基础知识
0x02 Docker 核心概念 描述:Docker的三大核心概念镜像/容器和仓库, 通过三大对象核心概念所构建的高效工作流程; 1.镜像 [image] 描述:images 类似于虚拟机镜像,借鉴了 ...
- 4.Docker容器学习之Dockerfile入门到放弃
原文地址: 点击直达 0x01 Dockerfile 编写 描述:Dockerfile是一个文本格式的配置文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内 ...
- URLOS开发基础教程——docker容器的使用方法
URLOS本是基于docker容器运行,在入门URLOS开发之前,我们首先需要掌握docker的相关基础知识,本篇就以docker容器的基本使用方法为例,快速的让大家对docker有一个全面的印象. ...
- 自动化集成:Docker容器入门简介
前言:该系列文章,围绕持续集成:Jenkins+Docker+K8S相关组件,实现自动化管理源码编译.打包.镜像构建.部署等操作:本篇文章主要描述Docker基础用法. 一.Docker简介 1.基础 ...
- docker容器技术基础入门
目录 docker容器技术基础入门 容器(Container) 传统虚拟化与容器的区别 Linux容器技术 Linux Namespaces CGroups LXC docker基本概念 docker ...
- Docker容器入门
为什么要看docker 从去年起就或多或少的接受了docker的熏陶,主要还是Infoq在去年有很多关于docker的实践视频讲座,记得有一篇是<Docker在雪球的技术实践>,当时听的也 ...
- Docker入门 - 005 Docker 容器连接
Docker 容器连接 前面我们实现了通过网络端口来访问运行在docker容器内的服务.下面我们来实现通过端口连接到一个docker容器 网络端口映射 我们创建了一个 python 应用的容器. do ...
- Docker入门 - 004 Docker 容器使用
Docker 客户端 docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项. docker 可以通过命令 docker command -- ...
随机推荐
- PAT A1024 Palindromic Number (25 分)——回文,大整数
A number that will be the same when it is written forwards or backwards is known as a Palindromic Nu ...
- Ubuntu触摸屏校准
我是在ubuntu系统中使用触摸屏,我的是两块屏幕一个是触摸屏幕一个是普通的屏幕,触摸屏使用需要校准,所以要直接入一个触摸屏,或者两个屏幕是复制的关系,不能是扩展. 1.安装已下的两个软件,有可能第一 ...
- angularjs springMVC 交互
AngularJS中的$resource使用与Restful资源交互 1.AngularJS中的 $resource 这个服务可以创建一个资源对象,我们可以用它非常方便地同支持RESTful的服务端数 ...
- Java 中 LinkedList 和 ArrayList 的区别
引自:https://www.cnblogs.com/huzi007/p/5550440.html ArrayList和LinkedList的大致区别如下:1.ArrayList是实现了基于动态数组的 ...
- Ionic 中badge的应用
app中如果有服务端推送过来的消息,用户没有查看的话,出现一个数字提醒,类似微信的那种效果. 在Ionic中的实现过程还是很简单的: <ion-tab title="首页" ...
- Ionic下的Jpush消息推送与内容显示
本文测试Jpush将消息推送给手机端,手机端点击通知栏,即可看到具体的推送内容. 1.极光推送消息设置 设置附加字段: 点击发送,手机端收到消息通知. 2.手机接收到的消息通知 点击之后进入具体的页面 ...
- BootStrap学习(3)_导航菜单
一.导航元素 1.表格导航或标签 以一个带有 class .nav 的无序列表开始. 添加 class .nav-tabs. <!DOCTYPE html> <html xmlns= ...
- Codeforces 718C solution
C. Sasha and Array time limit per test : 5 seconds memory limit per test : 256 megabytes Descrip ...
- 汇编 OD 标志位 置位相关指令
知识点: l 标志位 置位相关指令 l 标志寄存器PSW 标志寄存器PSW(程序状态字寄存器PSW) 标志寄存器PSW是一个16为的寄存器.它反映了CPU运算的状态特征并且存放某些控制标志. ...
- WEB 小案例 -- 网上书城(四)
针对于这个小案例我们今天讲解结账操作,也是有关这个案例的最后一次博文,说实话这个案例的博文写的很糟糕,不知道该如何去表述自己的思路,所以内容有点水,其实说到底还是功力不够. 处理思路 点击结账,发送结 ...