1. linux安装 docker
1 #查看内核的版本
2 uname -r(>=3.1.0)
3 #查看centos版本
4 cat /etc/redhat-release(>=6.5)
5 #安装依赖
6 yum install -y yum-utils device-mapper-persistent-data lvm2
7 #给yum 设置稳定的仓库员源
8 yum-config-manager \
9 --add-repo \
10 https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
11 #开始安装
12 yum install -y docker-ce(新版的18.09docker是docker-ce)
13 #启动docker
14 systemctl restart docker
2. 卸载docker(centos上)
1 #查找docker安装包
2 yum list installed | grep docker
3 #将查询到的包全部删除
4 yum remove package(包)
5 #删除保存镜像的文件
6 rm -rf /var/lib/docker
3. docker 三要素
镜像
容器
仓库
4. docker镜像
docker的基石,一般由Dockerfile生成,https://hub.docker.com/ docker hub网站存放各种镜像,可以直接使用
docker镜像的基本操作
# 搜索镜像
docker search hello-world(一般可以直接去docker hub上去搜各种详细带标签的镜像)
#从docker hub 上面拉取hello-world镜像 docker pull hello-world #查看本地所有的镜像 docker images docker iamges -q 只显示镜像id
# 查看镜像的历史层数
docker history hello-world
#查看镜像的详细信息
docker inapect hello-world
#删除某个镜像 docker rmi hello-world(-f 强制删除) # 删除所有的镜像 docker rmi $(docker images -aq) #注册docker hub 账户 账户名假设为xiaoxiaohui #给镜像 打tag docker tag hello-world xiaoxiaohui/hello-world #将该镜像推送到自己的仓库 docker push xiaoxiaohui/hello-world
默认推送到docker hub 仓库镜像,如果自己有其他仓库地址 需要先登录 docker login 地址
#镜像的导入导出
将已有的镜像保存为一个文件
docker save hello-world -o 文件名
将文件导出为镜像 docker load -i 文件名
默认情况 docker pull 都是从docker 官网下载镜像,由于docker 官网下载很慢,需要我们自己配置其他的镜像加速器,aliyun提供免费的加速器每个人镜像加速器的地址不一样 去aliyun官网可以会找到
5. 镜像的构建
两种方法
docker commit 命令 基于已有的容器构建镜像,不推荐
Dockerfile 一种文件 详细描述该镜像如何构建 docke build .
Dockerfile 如何书写 见下一篇
6.容器
容器在镜像的基础上加了一个可写层,是基于镜像模板创建出来的一个个实例
容器是基于镜像生成的
#启动容器,进入容器中
docker run -it hello-world --name myhello-world /bin/bash
-it 表示交互式容器
-d 守护式(后台运行)创建
--name 给容器起的名字,没有--name 系统会自动给容器命名
docker run 就等于 docker create + docker start 创建并开启容器
#docker ps查看正在运行的容器
-a 所有的
-l 最近的
-n num 限制指定的个数
-q 只显示 容器id
docker ps -a | grep helo-world
#退出容器
exit 关闭斌退出
ctrl+p+q 不关闭退出
#容器处于pause就需要启动容器
docker start 容器名(id)
#暂停容器
docke pause id
#停止容器
docker stop id
#杀死容器
docker kill id
#删除容器
docker rm -f hello-world
docker rm -f $(docker ps -aq) 删除所有的容器
-f 强制删除正在运行的容器
#进入容器
docker exec -it 容器名 /bin/bash 启动新的进程 退出时容器在后台运行
docker attach id 进入容器的终端 不启动新的进程 退出的时候容器也停止
#查看容器的运行日志
docker logs id
-f 实时监控
--tail 10 显示最后10行
#看出端口映射情况
docker port id
7. docker容器和主机之间的文件传输
1. 根据容器长id传输: 拿到长id docker inspect id(不推荐)
主机传入容器:docker cp 主机路径 容器长id:容器路径
容器传到主句:docker cp 容器长id:容器路径 主机路径
2. 利用volume 挂载主机
docker run -it ubuntu -v my-volume:/hostname /bin/bash 容器中的/hostname 目录 将和主机/var/lib/docker/volumes/my-volume/_data 同步