安装
若按下方操作安装不成功请参考官方安装说明文档
#卸载以前版本
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)
#查找Docker Hub上的redis镜像
docker search redis
#拉取官方的镜像
docker pull redis:3.2
#显示本地已有的镜像
docker images
#用下载的镜像启动容器并进入容器交互
docker run -t -i training/sinatra /bin/bash
#提交更新后的副本
# -m 提交的说明信息
# -a 更新的用户信息
docker commit -m "Remark" -a "DockerUserInfo" {$CONTAINER_ID} ouruser/sinatra:v2
# 修改镜像的标签
docker tag {$CONTAINER_ID} ouruser/sinatra:devel
#导出镜像到本地文件
docker save -o ubuntu_14.04.tar ubuntu:14.04
#载入镜像
docker load --input ubuntu_14.04.tar
#上传镜像到 Docker Hub
docker push ouruser/sinatra
#移除镜像
docker rmi training/sinatra
容器(Container)
#启动容器
#-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
#查看容器启动情况(-a 查看所有)
docker ps
#停止容器
docker stop {$CONTAINER_ID}
#启动容器
docker start {$CONTAINER_ID}
#重启容器
docker restart {$CONTAINER_ID}
#进入容器(ctrl-D 退出)
docker exec -it {$CONTAINER_ID} redis-cli
#彩色交互
docker exec -it my-container env TERM=xterm script -q -c "/bin/bash" /dev/null
#获取容器的输出信息
docker logs redis
#导出容器快照
docker export {$CONTAINER_ID} > ubuntu.tar
#导入容器快照
cat ubuntu.tar | docker import - test/ubuntu:v1.0
nginx
docker run -p 80:80 --name mynginx -v $PWD/www:/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/wwwlogs -d nginx
# -p 80:80:将容器的80端口映射到主机的80端口
# --name mynginx:将容器命名为mynginx
# -v $PWD/www:/www:将主机中当前目录下的www挂载到容器的/www
# -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机中当前目录下的nginx.conf挂载到容器的/etc/nginx/nginx.conf
# -v $PWD/logs:/wwwlogs:将主机中当前目录下的logs挂载到容器的/wwwlogs
仓库(Repository)
注册登录Docker Hub
#docker login
数据卷(Volume)
#创建一个 web 容器,并加载一个数据卷到容器的 /webapp 目录
docker run -d -P --name web -v /webapp training/webapp python app.py
#创建一个命名的数据卷容器 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
Docker Compose
#安装
sudo pip install -U docker-compose
DockerFile
#时区设置
ENV TZ=America/Los_Angeles
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
#支持中文
RUN locale-gen zh_CN.UTF-8 &&\
DEBIAN_FRONTEND=noninteractive dpkg-reconfigure locales
RUN locale-gen zh_CN.UTF-8
ENV LANG zh_CN.UTF-8
ENV LANGUAGE zh_CN:zh
ENV LC_ALL zh_CN.UTF-8