docker容器基础

一、安装docker服务的准备工作

1、版本确认:

Docker使用Docker CE for CentOS,对于Linux版本有要求:
CentOS版本:>=7.0
CentOS内核版本:>3.10

# 确认centos版本
lsb_release -a
# 我的服务器输出内容
LSB Version:    :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: CentOS
Description:    CentOS release 6.8 (Final)
Release:    6.8
Codename:   Final
# CentOS版本太低,需要升级(root用户身份升级):
sudo yum update

# 或者
# 如果没有安装lsb命令,直接cat数据查看CentOS版本
cat  /etc/redhat-release
# 输出:
CentOS Linux release 7.2.1511 (Core)

  升级好CentOS后,要保证 CentOS-Extras (软件源,里面附加了很多软件包)的启用,这个软件源默认是允许状态,是必须启用的;如果之前禁用的话要修改成允许状态,因为我们我们要安装的Docker安装包就在这个Extras库里。

2、旧版本移除:

  如果有历史的docker版本,安装之前最好卸载,因为之前docker叫做docker-engine或者docker,而且最开始是没有EE和CE版本的区分的:

# 查看是否有历史安装
rpm -qa|grep docker
# 如果有的话就卸载历史版本
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine
3、依赖安装(当然如果你的机器已经安装好了,就不需要再装了):
# yum-utils提供了yum-config-manager,也就是yum包管理器的实用程序
# devicemapper和lvm 2是devicemapper存储驱动程序所需要的,后面会用来做docker镜像和容器的管理
sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
#已经安装过了,所以输出内容表示installed
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Package yum-utils-1.1.31-34.el7.noarch already installed and latest version
Package device-mapper-persistent-data-0.6.2-1.el7_2.x86_64 already installed and latest version
Package 7:lvm2-2.02.130-5.el7_2.5.x86_64 already installed and latest version
Nothing to do
4、yum源(或者稳定repository)添加:
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
# 也可以用国内的阿里源下载
sudo yum-config-manager --add-repo  http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 配置完成,保存稳定repo:
Loaded plugins: fastestmirror, langpacks
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
docker-ce.repo                                                                                                                                 | 2.4 kB  00:00:00     
repo saved to /etc/yum.repos.d/docker-ce.repo
5、edge和test 库启用(不需要开启可以忽略这一步):

  如果需要的话,可以在配置文件启用或禁用edge和test代码库,一般默认是禁用的

# 启用不稳定库
sudo yum-config-manager --enable docker-ce-edge
sudo yum-config-manager --enable docker-ce-test
# 停止启用不稳定库
sudo yum-config-manager --disable docker-ce-edge
# 需要注意的是,Docker 17.06开始,稳定版本也会push到edge和test仓库里
6、yum cache更新:yum makecache fast

二、docker安装:

1、安装docker
# 安装默认版本(一般会默认安装最新版本docker)
sudo yum install docker-ce
# 查看并安装指定版本
yum list docker-ce --showduplicates | sort -r
sudo yum install docker-ce-<VERSION STRING>
# 如果安装过程遇到问题,可能是缺少依赖:container-selinux
查看可安装docker版本
2、添加docker镜像:

很多时候为了避免镜像下载受限,添加国内docker镜像,常用的镜像地址:
中科大镜像加速:https://docker.mirrors.ustc.edu.cn/
网易镜像加速:http://hub-mirror.c.163.com

vim /etc/docker/daemon.json
# insert下面的内容:
{ "registry-mirrors": ["[https://docker.mirrors.ustc.edu.cn/](https://docker.mirrors.ustc.edu.cn/)"] }

daemon.json 文件里存放的是docker引擎配置的文件,里面可以配置相关的参数,但是一般不会自动生成,手动创建即可,根据需求自行添加配置项或去官网查看可用参数

三、docker服务启动

1、启动docker服务:systemctl start docker
2、使用docker测试项目测试docker服务:docker run hello-world
3、卸载docker:直接执行yum remove docker-ce卸载,然后删除镜像、容器等docker相关内容:rm -rf /var/lib/docker

四、docker容器的基础操作:

docker run i_name 基于i_name这个镜像运行容器
docker ps查看正在运行的容器
docker ps -l 最近一次创建的容器信息
docker rm c_id/c_name删除容器(需要注意的是,要先停止容器再删除,否则会报错)
docker rm -f 强制删除容器(删除运行中的容器也不会报错)
docker port c_id/c_name 查看容器端口的快捷方式
docker logs c_id/c_name 查看容器日志
docker top c_id/c_name 查看容器内的应用进程
docker inspect c_id/c_name 查看容器底层信息(例如:/etc/docker/daemon.json)
docker restart c_id/c_name 重启容器(start 、 stop)
docker pause 暂停容器(unpause恢复容器进程)

五、docker镜像

docker images 查看所有本地主机上已有的镜像
同一个镜像源可以有多个镜像,使用不同的tag即可;使用时通过image:tag的方式指定镜像,没有指定tag使用latest,没有的话自行pull镜像
docker pull image(docker pull image:tag) 拉取镜像(本地有会提示已经有了,没有会进行下载)
docker search i_name 查找镜像

1、使用已有镜像创建新镜像

docker commit -m="your description about your update this time" -a="author" c_id target_imageName:version (回车返回sha256说明新的镜像打造成功,)基于目前已有的本地镜像,打造一个符合我们预期的镜像并提交,下次可以pull使用;
之后直接使用docker run target_imageName:version即可使用定制化的新镜像

2、通过dockerfile创建新镜像

镜像也可以使用docker自带的docker build根据Dockerfile创建
Dockerfile是一个系统文件,它告诉容器,运行时需要依赖的库、资源、需要的程序、配置、环境变量等信息,在build镜像的时候读取Dockerfile指定的要求进行构建,转换成环境的层面,可以理解成,Dockerfile里面的指令,就是一步一步完成手工环境部署的基础过程
Dockerfile文件由一系列的指令指定每一层级的操作组合成的
dockerfile指令说明:https://www.jianshu.com/p/6a924bbc336a
用已经写好的dockerfile文件构建镜像:
docker build -t image_name:tag dockerfilepath 构建镜像(最好将dockerfile放在一个空目录下运行)

其他docker操作:

docker rmi image_id 删除镜像
docker tag image repository:tag 为镜像添加新的tag(同一个镜像id,不同tag)
docker rmi repository:tag 删除镜像tag
docker run -p 容器内部端口绑定到指定的主机端口(-p c_ip:c_p:host_p)
docker run -P 容器端口随机映射到主机端口
docker run --name 指定容器名称
docker run -d 容器后台运行
docker run -i -t 容器的伪输入终端,运行可交互式容器
docker -v 主机目录挂载到容器
docker ps -a 查看所有容器
docker ps 查看运行中容器
docker ps -q 查看所有运行中容器的id
docker ps -qa 查看所有容器id
docker stop $(docker ps -qa) 停止所有容器
docker kill (-s xxx)杀死运行中的容器
docker rm $(docker ps -qa) 删除所有容器
docker container prune -f 删除所有当前停止的容器
docker image prune --force --all 删除所有当前未使用的镜像
docker exec container command 在容器中执行命令
docker cp container:path needed_path 拷贝需要使用的文件到容器的指定目录
docker inspect 查看镜像 元数据
docker pull -a image_name 拉取所有image_name 的镜像
docker push image:tag push本地镜像到镜像仓库
docker history 查看镜像的“构建”记录
docker info 当前你的服务器上docker相关信息,包括运行的容器数、总容器数、工作空间等
docker version 只是展示docker的版本信息
docker save -o /path/filename.tar image:tag 将制定镜像保存成tar文件
docker save -o /path/filename.zip image:tag 将定制镜像保存成zip文件
docker load -i /path/filename.tar/zip 导入使用docker save导出的镜像,load以后可以docker images看到对应的镜像

通常情况下,如果镜像不便于直接pull下载拉取,或者想直接从一个公共服务平台拉取自己定制的镜像,都可以把镜像打成压缩文件,需要的时候直接load下载即可

一般在做容器迁移的时候才会进行docker save或者是docker exporter;docker exporter相对docker save的文件比较小,但是会丢失一些历史记录和元数据

一个镜像可以有多个tag,一个tag只能有一个镜像

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

推荐阅读更多精彩内容

  • Docker 对象 镜像镜像可以看做是一个根文件系统,包含了操作系统,应用程序所需要的库资源等 容器,在镜像的基础...
    ScienBeast阅读 335评论 0 0
  • 五、Docker 端口映射 无论如何,这些 ip 是基于本地系统的并且容器的端口非本地主机是访问不到的。此外,除了...
    R_X阅读 1,748评论 0 7
  • 一、Docker 简介 Docker 两个主要部件:Docker: 开源的容器虚拟化平台Docker Hub: 用...
    R_X阅读 4,386评论 0 27
  • 0. 前言 docker是什么?docker是用GO语言开发的应用容器引擎,基于容器化,沙箱机制的应用部署技术。可...
    sessionboy阅读 3,854评论 2 49
  • docker常用命令详解 - CSDN博客 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的...
    Meathill大魔王阅读 815评论 1 2