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-
# 如果安装过程遇到问题,可能是缺少依赖:container-selinux
docker容器基础_第1张图片
查看可安装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只能有一个镜像

你可能感兴趣的:(docker容器基础)