一 docker服务端和客户端
declare -x DOCKER_HOST="192.168.2.162
export DOCKER_HOST=192.168.2.162
docker -H tcp://192.168.2.162:2375 images
二 docker daemon配置
cat /etc/sysconfig/docker
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock'
三 docker镜像
docker pull 镜像名
docker search 镜像名
docker images 列出镜像列表
docker image ls 等同于 docker images
docker rmi image_id 删除镜像
docker save 保存镜像
docker load 装载镜像
四 docker容器管理命令
docker rm `docker ps -a -q`查看所有容器
docker run -d -p 8888:8888 -p 55555:55555 --name btsync ctlc/btsync 创建容器
docker create -it ubuntu:latest 创建容器
docker start container
启动容器
docker inspect container 获取容器的详细信息
docker stop container 停止容器
docker rm container 删除容器
docker network ls 列出docker网络
docker run -it --rm ubuntu:16.04 /bin/bash rm 的意思是容器退出随之将其删除
五 进入容器
1.docker attach
多个窗口同时attach到同一个容器的时候,所有窗口都会同步显示。远程演示的时候可以使用。
2. docker exec -it container /bin/bash
3.nsenter工具
PID = $(docker inspect --format "{{.State.Pid}}" <container>)
nsenter --target $PID --mount --uts --pic --net --pid
六 导入和导出容器
docker export container >test_for_export.tar
cat test_for_export.tar |docker import - test/ubuntu:v1.0
容器是从镜像创建的应用运行实例。镜像自身是只读的。容器从镜像启动的时候,docker会在镜像的最上层创建一个可写层,镜像本身将保持不变。
七 docker数据卷
在容器内创建一个数据卷
docker run -d -P --name web -v /webapp training/webapp python app.py
使用training/webapp镜像创建一个web容器,并创建一个数据卷挂载到容器的/webapp目录
挂载一个主机目录作为数据卷
docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py
加载主机的/src/webapp目录到容器的/opt/webapp目录
挂载一个本地主机文件作为数据卷
docker run --rm -it -v /root/.bash_history:/.bash_history ubuntu /bin/bash
这样就可以记录在容器输入过的命令历史了
数据卷容器
docker -ti -v /dbdata --name dbdata ubuntu
然后可以在其他容器中使用--volumes-from 来挂载dbdata容器中的数据卷
如创建db1和db2容器,并从dbdata容器挂载数据卷
docker run -it --volumes-from dbdata --name db1 ubuntu
docker run -it --volumes-from dbdata --name db2 ubuntu
在dbdata容器中创建一个test文件
在db1容器中可以查看到
可以多次使用 --volumes-from 参数来从多个容器挂载多个数据卷,还可以从其他已经挂载的容器卷的容器来挂载数据卷
docker run -d --name db3 --volumes-from db1 training/postgres
利用数据卷容器来迁移数据
备份
docker run --volumes-from dbdata -v $(pwd):/backup --name worker ubuntu
tar cvf /backup/backup.tar /dbdata
首先利用ubuntu镜像创建一个容器worker 使用--volumes-from dbdata参数来让worker容器挂载dbdata容器的数据卷即dbdata数据卷
使用-v $(pwd):/backup 参数来挂载本地的当前目录到worker的容器/backup目录
容器woker启动后 使用tar cvf /backup/bakcup.tar /dbdata命令来讲/dbdata下内容备份为容器的 /backup/backup.tar 即宿主主机当前目录下的backup.tar
恢复
如果要恢复数据到一个容器,可以按照下面操作
首先创建一个带有数据卷的容器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