`
hanqunfeng
  • 浏览: 1527032 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

docker学习笔记之一:基础命令

阅读更多

Docker使用过程中可能遇到的问题:http://www.tuicool.com/articles/u6rumiE

 
centos7安装docker使用如下方式:
sudo yum update
sudo yum install docker
sudo service docker start
sudo chkconfig docker on
 
以上安装方式目前只会安装docker1.10的版本,如果希望安装最新的1.12+,可以参考如下方式安装:
其最大的特点就是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/ 查询镜像信息,以及使用方法
PS:docker镜像存储迁移到新的地址:https://store.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
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics