系统环境准备
docker最低支持centos7且在64位平台上,内核版本在3.10以上
[root@msi ~ 10:48:11]#uname -r
3.10.0-693.el7.x86_64
须知
Docker 是一个开源的商业产品,
有两个版本:
社区版(Community Edition,缩写为 CE)
企业版(Enterprise Edition,缩写为 EE)企业版包含了一些收费服务
Centos安装docker
方式一
请遵循官方安装方式!!!有点卡
https://docs.docker.com/install/linux/docker-ce/centos/#upgrade-docker-after-using-the-convenience-script
1.卸载旧版本
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
2.设置存储库
sudo yum install -y yum-utils
device-mapper-persistent-data
lvm2
sudo yum-config-manager
--add-repo
https://download.docker.com/linux/centos/docker-ce.repo
3.安装docker社区版
sudo yum install docker-ce
4.启动关闭docker
systemctl start docker
方式二
#可以配置最新版本的,docker官方的软件仓库,也可以使用阿里的epel仓库下载
yum install docker-server docker -y
#通过yum安装的docker,直接使用systemctl start docker 启动
#检查docker版本,是否安装成功
docker version
#docker加速器
Docker镜像加速器
#执行命令
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
增
docker pull centos #默认去dockerhub下载一个centos镜像文件
docker pull hello-world #下载镜像
docker run 镜像id #运行镜像,生成容器,并且检测镜像是否存在,不存在自动docker Pull
docker run -it centos /bin/bash
#-i 是交互式的操作
# -t 是开启一个终端
#下载一个ubuntu镜像,且进入这个ubuntu容器空间内
docker run -it ubuntu /bin/bash
#进入centos容器内,并且修改容器内的信息,然后提交为新的镜像
docker run -it centos /bin/bash
#然后 下载一个vim,退出这个容器
exit
#提交这个容器记录,为新的镜像
docker commit 容器id 新的镜像名
#导出本地的docker镜像
docker save 容器id > 镜像压缩文件
#导入docker镜像文件
docker load < 镜像压缩文件
#运行一个活着的容器
docker run -d centos /bin/sh -c "while true;do echo 你看这个灯,它又大又亮; sleep 1;done"
# -d 后台运行
# /bin/sh Linux的shell解释器
# -c 指定一段shell脚本
#给运行的容器添加一个名字
[root@s24_linux ~]# docker run --name s24wuyifan -d centos /bin/sh -c "while true;do echo 你看这个灯,它又大又亮; sleep 1;done"
f80915521b822801b2186cd66e3a69011beda4cfcec60076409c62e9d03ddf4f
#运行一个web程序,在容器中 ,要对外进行端口暴露
docker run -d -p 8090:5000 training/webapp python app.py
# -d 后台运行
# -p 指定端口映射 宿主机的 9000映射到容器内的5000 (宿主机的端口你可以自由定义,容器的端口根据代码决定)
# -P 随机端口映射 ,宿主机会随机生成一个端口,映射到容器的5000
#暂停一个正在运行的容器记录
docker stop 容器id
#再次运行一个容器
docker start 容器id
#修改docker镜像的名字
docker tag 镜像id 新的镜像名
docker容器挂掉后,数据会丢吗
不会,docker容器挂掉后,可以通过docker ps -a 看到容器记录,不会释放,容器记录删掉后,数据就释放了
删除镜像
docker rmi 镜像id前三位即可 #删除镜像,必须清除所有的容器记录依赖
docker rm 容器id #删除容器记录,必须是挂掉的记录才能删除
docker rm `docker ps -aq` #批量删除容器记录
docker rmi `docker images -aq` #批量删除镜像记录
查镜像
docker search centos #搜索centos相关的镜像
docker image ls #查看机器上所有的镜像
docker images #同上 意思一样
docker ps #查看正在运行的docker容器(必须有一个进程在容器中,后台运行,这个容器才不会挂掉)
docker ps -a #查看所有运行过的容器记录(挂掉的,和正在运行的记录)
docker logs 容器id/容器名 #查看容器内所有的日志
docker logs -f 容器id #实时刷新容器内的日志
#如何进入一个活着的容器
docker exec -it 容器id /bin/bash
#查看docker的端口转发情况
docker port 容器id
#dockerfile是全大写的
#dockerfile的学习
FROM scratch #制作base image 基础镜像,尽量使用官方的image作为base image
FROM centos #使用base image
FROM ubuntu:14.04 #带有tag的base image
#FROM指令,是指定你的docker镜像以哪一个操作系统为基础去运行
# FROM ubuntu
#FROM centos:7
LABEL version=“1.0” #容器元信息,帮助信息,Metadata,类似于代码注释
LABEL maintainer=“yc_uuu@163.com"
#对于复杂的RUN命令,避免无用的分层,多条命令用反斜线换行,合成一条命令!
RUN yum update && yum install -y vim
Python-dev #反斜线换行
RUN /bin/bash -c "source $HOME/.bashrc;echo $HOME”
# RUN指令是一个完成指令,你写什么就运行什么