CentOS7-Docker容器入门
Docker由三大部分组成
基础镜像---->中间件---->最后生成应用镜像
一个镜像可以给多个进程使用!
Docker是什么
Docker是一个改进的容器技术。具体的“改进”体现在,Docker为容器引入了镜像,使得容器可以从预先定义好的模版(images)创建出来,并且这个模版还是分层的。
Docker的特性:
轻量
快速
隔离
Docker技术的基础:
namespace,容器隔离的基础,保证A容器看不到B容器. 6个名空间:User,Mnt,Network,UTS,IPC,Pid
cgroups,容器资源统计和隔离。主要用到的cgroups子系统:cpu,blkio,device,freezer,memory
unionfs,典型:aufs/overlayfs,分层镜像实现的基础
Docker组件:
docker Client客户端————>向docker服务器进程发起请求,如:创建、停止、销毁容器等操作
docker Server服务器进程—–>处理所有docker的请求,管理所有容器
docker Registry镜像仓库——>镜像存放的中央仓库,可看作是存放二进制的scm
Docker的安装与部署:
[root@docker /]# yum install -y docker //使用官方源安装docker
也可以使用国内源安装docker,例如,阿里,中科大,网易 的源
启动docker:
[root@docker /]# systemctl start docker
搜索docker官方镜像文件:OFFICI [OK]表示官方镜像,其余表示非官方上传

下载与上传镜像文件:
docker pull [镜像文件名] //拉取镜像
docker push [镜像文件名] //上传镜像
也可以直接下载站点镜像:
docker pull hub.c.163.com/library/tomcat:latest //复制站点链接用 pull 下来
查看docker本地镜像:
docker images
运行docker镜像:
docker run -it [镜像名]:[标签名] /bin/bash
-i 使用交互模式运行镜像 -t 分配输入伪终端
使用后台运行docker进程:
docker run -d [镜像名]:[标签名] /bin/bash -c "[脚本]"
-d 后台运行docker返回容器的ID好 -c 完成后面的命令
例:docker run -d [镜像名]:[标签名] /bin/bash -c "while true;do echo hello world;sleep 2;done"
查看docker进程:
docker ps //加 -a 参数列出所有
读取docker日志:
docker logs [PID] //短ID也可以,只要是唯一的
docker镜像的停止、开启、重启:
docker stop [PID] //关闭docker镜像
docker start [PID] //继续运行docker images
docker restart [PID] //restart docker images
通过docker镜像的PID进程ID来杀死docker进程:
docker kill [PID]
删除docker镜像:
docker rm [image ID] //删除images file -f 强制删除

Docker镜像制作方法:
方法一:docker commit //保存 container 当前状态到image 然后生成image
方法二:docker build //使用 Dockerfile 文件自动化制作 images
在实例中创建一个apache服务:
docker run -it [docker name]:[docker taget] /bin/bash
yum install -y httpd
exit
保存安装apache的 centos image:
docker commit [container imageID] [image name]:[Taget] //docker.io/centos:apache (这个标签可以随便写)
imageID用的是docker ps -a 中的ID 不是 docker image 中的镜像ID!!!!!!
通过Dockerfile来创建容器:
dockerfile文件中执行命令中的所有需要被调用到的文件,必须放在Dockerfile所在的目录下
基础镜像可以不放在dockerfile文件目录下,但是docker image中必须要有所需的基础镜像
[root@docker docker/]# vim Dockerfile
FROM docker.io/centos:latest //基于哪个镜像
MAINTAINER <zxq@qq.com> //MAINTAINER 镜像创建者
RUN yum install -y httpd //RUN 安装应用
ADD start.sh /usr/local/bin/start.sh
ADD index.html /var/www/html/index.html //ADD 将此目录中的文件拷贝到对应的镜像系统路径下。
[root@docker docker /]# vim Dockerfile
/usr/sbin/httpd -DFOREGROUND"
[root@docker docker /]# index.html
Docker a Web!
chmod a+x start.sh
所有拷贝到镜像中的文件 权限默认为 0755 uid和pid都为0
CMD systemctl start httpd //container中启动时执行的命令,一个Dockerfile只能有一个CMD命令,
有多条只能执行最后一条
通过docker build创建镜像:
docker build -t [image name]:[taget] [Dockerfile路径]
[root@docker docker /]# docker buile -t docker.io/centos:httpd ./

Docker镜像导出:
docker save image to tarball
保存image到tar包当中
docker save -o 导出镜像名.tar 本地镜像名:image标签 //这里导出的镜像名不能有冒号,注意特殊符号!
Docker image 导入镜像:
docker load -i [本地镜像名]
Container容器端口映射:
docker run -d -p 80(物理机端口):80(容器端口) [image name]:[taget] /bin/bash -c /usr/local/bin/start.sh

访问一个正在运行的docker镜像:
docker exec -it <container id|name> /bin/bash

发布镜像到docker hub :
push image to docker hub
1、注册docker hub 账号
https://hub.docker.com/
2、登录 docker hub
docker login -u username -p password -e 2235590965@qq.com
3、上传镜像
docker push [image name]:[taget]
4、下载镜像
docker pull username/[image name]:[taget]
如果在运行docker镜像的时候提示网络错误,查看 /proy/sys/net/ipv4/ip_forward值,正常的是 1
原文地址:https://blog.51cto.com/13735335/2177648?source=dra
CentOS7-Docker容器入门的更多相关文章
- CentOS7 Docker容器无法ping通宿主机ip问题解决记录
Docker服务部署启动容器发现docker容器内访问宿主机IP不通,于是进入容器内ping宿主机IP,发现无法ping通,容器IP为172.17.0.2,于是继续ping172.17.0.1也不通, ...
- 自动化集成:Docker容器入门简介
前言:该系列文章,围绕持续集成:Jenkins+Docker+K8S相关组件,实现自动化管理源码编译.打包.镜像构建.部署等操作:本篇文章主要描述Docker基础用法. 一.Docker简介 1.基础 ...
- Docker容器入门
为什么要看docker 从去年起就或多或少的接受了docker的熏陶,主要还是Infoq在去年有很多关于docker的实践视频讲座,记得有一篇是<Docker在雪球的技术实践>,当时听的也 ...
- docker容器入门最佳教程
为什么要写这个 简单回答是:容器技术非常热门,但门槛高. 容器技术是继大数据和云计算之后又一炙手可热的技术,而且未来相当一段时间内都会非常流行. 对 IT 行业来说,这是一项非常有价值的技术.而对 I ...
- Docker容器入门篇
第1章 Docker简介 1.1 Docker容器介绍 Docker官网:https://www.docker.com/ 什么是docker? Docker 最初是 dotCloud 公司创始人 So ...
- Centos7 docker容器启动后添加端口映射
docker容器启动后添加端口映射的两种方法: 一.通过修改防火墙策略添加端口映射 docker容器已创建好,但是想在容器内配置tomcat监控,需要新的端口去访问,但是映射时没有映射多余端口,此时, ...
- 解决CentOS7 docker容器映射端口只监听ipv6的问题
问题现象 docker容器起来以后,查看9100端口监听情况,如下图: $ ss -lntp State Recv-Q Send-Q Local Address:Port Peer Address:P ...
- Docker容器入门实践
Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目.它基于 Google 公司推出的 Go 语言实现. 项目后来加入了 Linux 基金会,遵从了 ...
- Docker容器入门介绍
1.前言 Docker是一种新兴的虚拟化技术,能够一定程度上的代替传统虚拟机.不过,Docker 跟传统的虚拟化方式相比具有众多的优势.Docker: 本意是码头工人,言外之意是集装箱: Java号称 ...
- Centos7 docker容器 搭建
Dockerfile 文件如下: # # MAINTAINER Carson,C.J.Zeong <zcy@nicescale.com> # DOCKER-VERSION # # Dock ...
随机推荐
- springboot 打包插件spring-boot-maven-plugin打包机制及内部结构分析
今日思语:I miss you? 何解? 我错过你了?我想你了? 当下许多公司都会选择使用springboot作为服务应用开发框架,springboot框架提供了一套自己的打包机制,是通过spring ...
- lg4820 书堆
题目链接 题意概述:n本书,在桌子边缘堆放,求最长长度. 首先……我们需要一点初中物理知识来推一下规律. 下图是一本书的情况,一本书时书伸出1/2处于临界状态,显然. 两本书时,把两本书看作整体,则有 ...
- 理解 IO_WAIT 并且了解利用包括 top htop iotop iostat 工具来查看 IO 性能
今天继续拜读「深入浅出计算机组成原理」专栏,觉得讲 IO_WAIT 这篇很有意思,正好可以结合前面的一篇讲物理硬件存速度的一块儿看. 现在我们看硬盘厂商出品的性能报告,通常会看到两个指标,一个是响应时 ...
- yarn一些最佳配置
合理设置队列名 mapreduce.job.queuename设置队列名map读取时进行小文件整合 mapreduce.input.fileinputformat.split.minsize mapr ...
- 在error日志打印异常
在日志中打印异常,经常会看到以下的写法: logger.error(e.getMessage()); 或者是: e.printStackTrace(); 这两种其实都不太好. e.getMessage ...
- vi 调到第一行和最后一行
gg 跳到文件第一行Shift + g 跳到文件最后一行 chmod 777 abc.txt
- 检查 chrome 插件是否存在
你必须了解 chrome 插件开发才能阅读以下内容. 传送门: https://qa.1r1g.com/sf/ask/440544891/ 原理:页面 js 向 chrome 插件的 backgrou ...
- MySQL可传输表空间:将一个表从一个实例拷贝到另一个实例
MySQL版本:5.7.23 1.在源实例上,创建一个表(如果不存在): mysql> USE abce; mysql> CREATE TABLE t(c1 INT) ENGINE=Inn ...
- C# Area区域配置,修改默认路由
1.右键项目新建文件夹 Areas 2.先把项目分类包好,建两个文件夹,放Controller和View,Model也可以放在这里 因为项目启动默认打开的是Home/Index ,我把它放在了Webs ...
- 【C++】C++的拷贝控制
目录结构: contents structure [-] 拷贝.赋值与销毁 拷贝构造函数 拷贝初始化 参数和返回值 拷贝赋值运算符 析构函数 三五法则 拷贝控制和资源管理 交换操作 对象移动 右值引用 ...