Docker使用过程中可能遇到的问题:http://www.tuicool.com/articles/u6rumiE
centos7安装docker使用如下方式:
sudo yum update
sudo yum instsll docker
sudo service docker start
sudo chkconfig docker on
以上安装方式目前只会安装docker1.10的版本,如果希望安装最新的1.12+,可以参考如下方式安装:
https://docs.docker.com/engine/installation/linux/centos/
其最大的特点就是swarm被整合进来,不需要独立安装了。
docker命令:
帮助信息:
sudo docker --help
sudo docker command --help:比如
sudo
docker run --help
sudo docker info : 显示docker的安装信息
sudo docker version:版本信息
配置文件路径:
/etc/sysconfig/docker
docker镜像及容器目录
主目录:/var/lib/docker
容器存放目录:
/var/lib/docker/containers/
镜像存放目录:/var/lib/docker/image
一、启动与关闭dcoker服务:
sudo service docker start
sudo service docker stop
sudo service docker restart
sudo service docker status
二、镜像操作命令
1.下载镜像
sudo docker pull centos
可以访问 https://hub.docker.com/ 查询镜像信息,以及使用方法
2.为镜像打tag
sudo docker tag docker.io/
centos:latest centos:7
3.查看本机镜像
sudo docker images
4.基于容器创建镜像
sudo docker commit -m "注释信息" -a "作者信息" 容器ID 新的镜像名称
-p : 创建镜像时暂停容器运行
5.搜索镜像
sudo docker search -s 100 centos :这样只会搜索官方仓库,私有仓库不支持search,可以使用curl http://ip:5000/v2/_catalog 的方式查看,具体参看笔记三:创建镜像仓库私服
-s :搜索星标至少为100的镜像
6.删除镜像
sudo docker rmi
centos:7
sudo docker rmi -f 镜像ID
7.导出镜像
sudo docker save -o centos_latest.tar centos:7
8.导入镜像
sudo docker load --input centos_latest.tar
sudo docker load < centos_latest.tar
9.批量删除全部镜像
sudo docker rmi $(sudo docker images -q)
10.查看镜像的内部信息
sudo docker inspect 镜像ID
三、容器操作命令
1.创建、启动、停止容器
sudo docker create -it centos:latest
[hanqunfeng@localhost ~]$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
10ed3667e49a centos:latest "/bin/bash" 27 seconds ago
Created jovial_keller
sudo docker start 容器ID
[hanqunfeng@localhost ~]$ sudo docker start 10e
10e
[hanqunfeng@localhost ~]$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
10ed3667e49a centos:latest "/bin/bash" About a minute ago
Up 3 seconds jovial_keller
sudo docker stop 容器ID :等待一会再停止
[hanqunfeng@localhost ~]$ sudo docker stop 10e
10e
[hanqunfeng@localhost ~]$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
10ed3667e49a centos:latest "/bin/bash" 3 minutes ago
Exited (137) 2 seconds ago jovial_keller
sudo docker kill 容器ID:立刻停止
说明:容器内没有程序在执行,容器自动停止
sudo docker restart 容器ID:停止并重启
sudo docker run 相关参数
实际应用时,更多的使用run命令,run命令相当于先执行create,再执行start
练习使用,打开容器终端:
sudo docker run -t -i centos:latest /bin/bash
-t:为docker分配一个伪终端并绑定到容器的标准输入上
-i:让容器的标准输入保持打开
exit退出容器
run命令启动容器示例:挂载数据卷、指定端口
1)容器内挂载
sudo docker run -d -P --name web -v /webapp(容器内目录)centos:latest(镜像) python app.py(执行命令,非必需)
-d:后台运行
-P:将容器内的全部端口暴露给主机端口,端口随机分配49000~49900
--name:容器名称
-v:创建数据卷,可以被其它容器共享,可以多次使用
2)挂载主机目录到容器
sudo docker run -d
-p 22:22 -p 3306:3306 --name web -v
/src/webapp(主机目录):/webapp(
容器内目录)
centos:latest(镜像) python app.py(执行命令,非必需)
-p:指定具体的主机与容器对应的端口,主机端口:容器端口,可以多次使用
sudo docker run -d -p 22:22 -p 3306:3306 --name web -v /src/webapp(主机目录):/webapp(
容器内目录):ro
centos:latest(镜像) python app.py(执行命令,非必需)
ro:只读,默认为rw读写
3)挂载容器中的数据卷到新的容器
sudo docker run -d -P --name web2
--volumes-from web(容器名称)
centos:latest(镜像) python app.py(执行命令,非必需)
--volume-from:如果容器中被挂载了数据卷,则该数据卷也会被挂载到当前创建的容器,两个容器共享该数据卷,可以多次使用,可以和 -v 参数同时使用
4)数据卷备份
sudo docker run --volumes-from web -v $(pwd):/backup --name worker centos:latest tar cvf /backup/webapp.tar /webapp
将容器web的数据卷/webapp,备份到主机的当前目录
5)恢复数据卷
首先需要创建一个带数据卷的容器
sudo docker run -v /webapp --name dbdata centos:latest /bin/bash :
要与恢复的数据卷路径相同
然后创建另一个新的容器,挂载dbdata的容器,并解压备份到其数据卷中
sudo docker run --volumes-from dbdata -v $(pwd):/backup centos:latest tar xvf /backup/webapp.tar
6)指定内存和CPU
sudo docker run -d --cpuset-cpus=0-3 --cpu-shares=512 --memory= 104857600 centos:latest
sudo docker run -d --cpuset-cpus=1,2 --cpu-shares=1024 --memory= 104857600 centos:latest
--cpuset-cpus=0-3:设定容器可以使用哪些主机上的cpu核心,0-3:表示0核~3核,4个核心,1,2:表示1核和2核
--memory= 104857600 :可以使用主机内存的上限,单位是B,这里表示100M 1024B * 1024B * 100
2.查看容器
sudo docker ps :显示状态为运行(up)的容器
sudo docker ps -a:查看主机已经创建了多少个容器
sudo docker ps -qa:只显示容器ID
sudo docker top 容器ID:查看指定容器的进程信息,类似于在容器内部执行top命令
3.查看容器输出日志
sudo docker logs 容器ID
4.进入后台执行的容器
比如启动一个后端运行的容器:sudo docker run -idt centos:latest
sudo docker
exec -ti 容器ID /bin/bash :进入根目录 /
sudo docker
exec -ti 容器ID bash :进入工作目录 ,镜像的WORKDIR
sudo docker
exec -ti 容器ID sh
:进入根目录 /
5.删除容器
sudo docker rm -f -v 容器ID
-f:如果容器正在运行,则强行终止并删除
-v:删除容器挂载的数据卷,默认情况下删除容器不会删除数据卷,要删除一个数据卷,必须在删除最后一个挂载该数据卷的容器时使用 -v 参数
6.导出容器到文件
sudo docker export 容器ID > test_for_run.tar
7.导入容器为镜像
cat test_for_run.tar | sudo docker import -
test/centos:v1.0(新镜像标识,REPOSITORY:TAG)
[hanqunfeng@localhost ~]$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test/centos v1.0 421afb772f3b 57 seconds ago 196.6 MB
8.批量删除全部容器
sudo docker rm -f -v $(
sudo docker ps -qa)
9.查看容器的内部信息
sudo docker inspect 容器ID :会显示容器的环境变量,IP地址,端口等信息
10.查看容器开放的端口
sudo docker port 容器ID
11.查看容器设置的环境变量
sudo docker exec 容器ID env