`
hanqunfeng
  • 浏览: 1540916 次
  • 性别: 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
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
分享到:
评论

相关推荐

    非常详细的-Docker-学习笔记.docx

    "非常详细的Docker学习笔记" Docker是开源的容器虚拟化平台,主要由两个部分组成:Docker和Docker Hub。Docker是一个容器虚拟化平台,Docker Hub是一个用于分享、管理Docker容器的SaaS平台。Docker使用客户端-...

    Python面试八股文背诵版

    【Python面试八股文背诵版】是一系列针对Python开发者准备面试的重要知识点的汇总,涵盖了操作系统、Python基础知识、Docker、Zookeeper等多个方面。以下是对这些知识点的详细说明: 1. **操作系统**: - **进程间...

    Linux 学习笔记,基于《鸟哥的 Linux 私房菜 第四版(CentOS7)》以及各种的网络资源.zip

    Linux是世界上最广泛使用的开源操作系统之一,尤其在服务器领域占据着主导地位。《鸟哥的Linux私房菜》是一本非常受欢迎的Linux入门书籍,第四版则针对CentOS 7进行了详细的讲解。这篇学习笔记结合了该书的内容以及...

    akang笔记:linux所有实验

    【Linux学习之旅——akang笔记概述】 在信息技术领域,Linux是一种广泛使用的开源操作系统,它的强大功能和灵活性吸引了众多用户和开发者。"akang笔记:linux所有实验"是作者akang根据自己的学习经历整理的一份详细...

    201808达内大数据Linux阶段学习课后笔记

    Linux是世界上最广泛使用的开源操作系统之一,它为各种规模的企业提供了强大的服务器平台,也是大数据处理、云计算和物联网领域的核心。这份“201808达内大数据Linux阶段学习课后笔记”涵盖了Linux基础到高级应用的...

    狂神说Linux课堂笔记.pdf

    Linux操作系统作为IT行业的重要组成部分,一直以来都是开发者和系统管理员必须掌握的技能之一。本篇课堂笔记主要从Java全栈开发的角度出发,针对Linux的学习和应用进行了深入讲解。 首先,课堂笔记强调了学习Linux...

    工程师总结Linux笔记.pdf

    本文档是工程师总结的Linux学习笔记,涵盖了Linux从基础入门到高级应用的全方位内容。 Linux快速入门部分主要介绍了Linux的基本概念、操作界面以及如何在虚拟机环境下进行Linux操作系统的安装。Linux发展及系统安装...

    笔记24-JAVAEE之Linux和云服务器

    一、Linux基础操作 1. 文件与目录管理: - `cd`:切换当前工作目录,例如`cd /home/user`可以切换到用户主目录。 - `pwd`:显示当前工作目录的绝对路径。 - `ls`:列出目录内容,`ls -l`会显示详细信息,包括...

    Web开发之路:Web开发人员记事本

    总之,“Web开发之路:Web开发人员记事本”是一个全面的学习资源,涵盖了从基础到高级的Web开发知识,而Shell作为开发者的重要工具,将贯穿整个学习过程。通过不断学习和实践,你将能够构建出功能强大、用户体验优良...

    Golang 面试题、编程题、Linux 技巧整理、技术调研以及个人学习记录,每天更新 1-2 条。.zip

    2. **并发编程**:Go语言的goroutines和channels是其特色之一,面试中可能会涉及如何实现并发任务,以及如何避免竞态条件和死锁。 3. **内存管理**:如指针操作、垃圾回收机制的理解和使用场景。 4. **错误处理**:...

    arch:Arch Linux笔记

    **Arch Linux笔记** Arch Linux是一种基于x86_64架构的Linux发行版,以其滚动更新和高度可定制性著称。...不断探索和实践,你会发现Arch Linux是一个无尽的学习之旅,它将带你深入了解Linux系统的运作机制。

    这一个Gentoo Linux文档指南。

    4. **USE flags**:Gentoo的特色之一,这些标志指示Portage在构建软件时应启用或禁用哪些功能。通过管理USE flags,用户可以精细控制软件的功能和依赖关系。 5. **EMERGE命令**:安装软件的主要方式,`emerge`命令...

    k8s-helm-资料笔记-v3版部署k8s集群-超详细,超全面(带文档和相关软件包)

    1. **环境准备**:确保你的机器上已经安装了Docker和kubectl,这是与Kubernetes交互的基础工具。同时,你需要一个Kubernetes集群,可以使用Minikube、Kind或直接在云服务商如AWS、GCP上创建。 2. **Helm安装**:...

    Python3数据科学入门与实战-第1章 实验环境的搭建.zip

    安装完成后,你可以通过Jupyter Notebook启动一个新 notebook,或者在命令行输入`jupyter notebook`,然后在浏览器中打开显示的URL开始你的数据科学之旅。 在Python环境中,你可以使用`import`语句导入这些库,例如...

    LINUX视频文档资料.zip

    Linux是世界上最广泛使用的开源操作系统之一,它为各种规模的企业和个人提供了强大的服务器平台、桌面环境以及嵌入式系统解决方案。在“韦东山LINUX视频”和“郭天祥LINUX视频”中,两位讲师深入浅出地讲解了Linux的...

    查兰格斯

    而“Jupyter Notebook”是这些挑战可能使用的工具之一,它是一个交互式的笔记本环境,广泛用于数据科学、机器学习和教学。 Jupyter Notebook 是一个开源项目,它允许用户创建和共享包含代码、方程、可视化和文本的...

    holberton-system_engineering-devops

    学习编写Shell脚本是系统工程师和DevOps从业者必备的技能之一。 在提供的压缩文件"holberton-system_engineering-devops-master"中,"master"通常代表这是项目的主分支,可能包含了课程的源代码、笔记、练习和解决...

    朱皮特

    它的可视化能力和交互性使它成为数据科学家的首选工具之一。 **10. 教育应用** 在教育领域,Jupyter Notebook因其可读性强、易于理解的特性,被广泛应用于编程教学、数学和统计课程,以及科学计算的教学。 综上,...

Global site tag (gtag.js) - Google Analytics