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-repohttp://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 kB00: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- # 如果安装过程遇到问题,可能是缺少依赖:container-selinux

docker容器基础
文章图片
查看可安装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的文件比较小,但是会丢失一些历史记录和元数据
【docker容器基础】一个镜像可以有多个tag,一个tag只能有一个镜像

    推荐阅读