安装
#卸载以前版本
sudo apt-get remove docker docker-engine
#安装docker-ce与密钥管理与下载相关的工具
sudo apt-get install apt-transport-https ca-certificates curl python-software-properties software-properties-common
#下载并安装密钥
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
#查看密钥是否安装成功
sudo apt-key fingerprint 0EBFCD88
#如果安装成功,会出现如下内容:
# pub 4096R/0EBFCD88 2017-02-22 Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
# uid Docker Release (CE deb) <docker@docker.com>
# sub 4096R/F273FCD8 2017-02-22
#添加docker官方仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian jessie stable"
#更新仓库
sudo apt-get update
#安装docker-ce
sudo apt-get install docker-ce
"""查看docker.service的unit文件,路径为/lib/systemd/system/docker.service"""
"""把ExecStart=/usr/bin/dockerd -H fd:// 修改为ExecStart=/usr/bin/dockerd"""
#启动docker
systemctl start docker
#更换国内docker加速器
#1.编辑/etc/docker/daemon.json文件,并输入docker-cn镜像源地址
sudo nano /etc/docker/daemon.json
#输入以下内容
{"registry-mirrors": ["https://registry.docker-cn.com"]}
#添加docker用户组
sudo groupadd docker
#将你自己{$user}加入docker用户组
sudo gpasswd -a ${USER} docker
#重启docker服务
sudo service docker restart
镜像Image
#1、搜索远端仓库中的共享镜像
docker search redis
docker search ubuntul#显示镜像的名字、是否官方创建,是否自动创建、描述、星级
#2、获取镜像
docker pull redis:3.2#指定下载版本
docker pull ubuntu
docker pull ubuntu:14.04
#3、查看镜像信息
#显示本地已有的镜像
docker images#包含镜像来自于那个仓库、镜像的标签信息、镜像的ID号、创建时间、镜像大小
#查看镜像的版本
docker version
#4、删除镜像
docker rmi training/sinatra#可以是image_ID或tag
#移除镜像的时候要先删除容器,再删除镜像才能成功,否则会报错
#5、导出镜像到本地文件
docker save -o ubuntu_14.04.tar ubuntu:14.04#把ubuntu:14.04镜像存为文件ubuntu_14.04.tar
#6、载入镜像
docker load --input ubuntu_14.04.tar
#7、上传镜像到 Docker Hub
docker push ouruser/sinatra#push后跟的是标签名
#8、 修改镜像的标签
docker tag {$CONTAINER_ID} ouruser/sinatra:devel#tag用于标记来自同一仓库的不同镜像,前面的原标签名 后面的是新的标签
#利用ubuntu镜像创建了一个容器,在其中运行bash应用
docker run -t -i ubuntu /bin/bash
#-t 让docker分配一个伪终端,并绑定到容器的标准输入上
#-i 让容器的标准输入保持打开
#提交更新后的副本
docker commit -m "Remark" -a "DockerUserInfo" {$CONTAINER_ID} ouruser/sinatra:v2
# -m 提交的说明信息
# -a 更新的用户信息
容器Container
#1、新建并启动容器,进入交互模式
#利用ubantu镜像创建一个容器,输出一句话:hello!!
docker run ubuntu echo 'hello!!'
#2、启动容器
#-p 6379:6379 : 将容器的6379端口映射到主机的6379端口
#-v $PWD/data:/data : 将主机中当前目录下的data挂载到容器的/data
#redis-server --appendonly yes : 在容器执行redis-server启动命令,并打开redis持久化配置
docker run -p 6379:6379 -v $PWD/data:/data -d redis:3.2 redis-server --appendonly yes
#3、查看容器启动情况(-a 查看所有容器)(-a -q 查看处于终止状态容器的ID信息)
docker ps
#4、获取容器的输出信息
docker logs redis
#/5、停止容器
docker stop {$CONTAINER_ID}
#6、启动容器
docker start {$CONTAINER_ID}
#7、重启容器
docker restart {$CONTAINER_ID}
#8、进入容器(ctrl-D 退出)
docker exec -it {$CONTAINER_ID} redis-cli
#9、删除容器
docker rm {$CONTAINER_ID}
docker rm -f {$CONTAINER_ID}#删除运行状态的容器
#10、导出容器
docker export {$CONTAINER_ID} > ubuntu.tar
/#11、导入容器
cat ubuntu.tar | docker import - test/ubuntu:v1.0
#12、彩色交互
docker exec -it my-container env TERM=xterm script -q -c "/bin/bash" /dev/null
仓库Repository
仓库用来存储镜像,仓库又存放在注册服务器中,dl.dockerpool.com/ubuntu 其中dl.dockerpool.com是注册服务器地址,ubuntu是仓库名
Docker Hub(官方公共仓库,仓库中包含1.5W多的镜像)
#1、注册登录
docker login
#2、查找镜像
docker search
#3、下载镜像
docker pull
#4、上传镜像
docker push
#docker pool (docker技术社区,里面也包含大量的镜像)
#5、下载镜像
docker pull dl.dockerpool.com:5000/ubuntu:12.04#加注册服务器地址
数据卷Volume
容器中管理数据的两种方式:数据卷、数据卷容器
#1、创建数据卷
docker run -v
#使用镜像training/webapp创建一个 web 容器,并创建一个数据卷到容器的 /webapp 目录
docker run -d -P --name web -v /webapp training/webapp python app.py
#-P 允许外部访问容器需要暴露的端口
#创建一个命名的数据卷容器 dbdata
docker run -d -v /dbdata --name dbdata training/postgres echo Data-only container for postgres
#在其他容器中使用 --volumes-from 来挂载 dbdata 容器中的数据卷
docker run -d --volumes-from dbdata --name db1 training/postgres
docker run -d --volumes-from dbdata --name db2 training/postgres
#备份
# 标记来创建一个加载 dbdata 容器卷的容器,并从本地主机挂载当前到容器的 /backup 目录
docker run --volumes-from dbdata -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata
#恢复迁移
# 创建一个带有数据卷的容器 dbdata2
docker run -v /dbdata --name dbdata2 ubuntu /bin/bash
# 创建另一个容器,挂载 dbdata2 的容器,并使用 untar 解压备份文件到挂载的容器卷中
docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf
/backup/backup.tar