文档章节

docker命令学习记录

一缕清风
 一缕清风
发布于 10/13 00:45
字数 1347
阅读 11
收藏 0

一.帮助命令

docker version
docker info
docker --help

二.镜像命令

1.列出本地主机上的镜像

docker images

OPTIONS说明: 
-a :列出本地所有的镜像(含中间映像层)
-q :只显示镜像ID
--digests :显示镜像的摘要信息
--no-trunc :显示完整的镜像信息

2.查找镜像(https://hub.docker.com)

docker search [OPTIONS] 镜像名字

OPTIONS说明:
--no-trunc : 显示完整的镜像描述
-s : 列出收藏数不小于指定值的镜像
--automated : 只列出 automated build类型的镜像

3.下载镜像

docker pull 镜像名字[:TAG]

4.删除镜像

删除单个

docker rmi -f 镜像ID

删除多个

docker rmi -f 镜像名1:TAG 镜像名2:TAG

删除全部

docker rmi -f $(docker images -qa)

5.TODO

三.容器命令

有镜像才能创建容器(下载一个CentOS镜像演示)

docker pull centos

1.新建并启动容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

 OPTIONS说明(常用):有些是一个减号,有些是两个减号
 -i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;

docker run -it centos

--name="容器新名字": 为容器指定一个名称;

docker run -it --name mycentos centos

-d: 后台运行容器,并返回容器ID,也即启动守护式容器;

docker run -d 容器名

问题:然后docker ps -a 进行查看, 会发现容器已经退出
很重要的要说明的一点: Docker容器后台运行,就必须有一个前台进程.
容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。
 这个是docker的机制问题,比如你的web容器,我们以nginx为例,正常情况下,我们配置启动服务只需要启动响应的service即可。例如
service nginx start
但是,这样做,nginx为后台进程模式运行,就导致docker前台没有运行的应用,
这样的容器后台启动后,会立即自杀因为他觉得他没事可做了.
所以,最佳的解决方案是,将你要运行的程序以前台进程的形式运行
 

-P: 随机端口映射;
-p: 指定端口映射,有以下四种格式
      ip:hostPort:containerPort
      ip::containerPort
      hostPort:containerPort
      containerPort

2.列出容器

docker ps [OPTIONS]

列出当前所有正在运行的容器

docker ps

OPTIONS说明(常用):
 -a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n:显示最近n个创建的容器。
-q :静默模式,只显示容器编号。
--no-trunc :不截断输出。
3.退出容器

exit 容器停止并退出(关机)

ctrl+P+Q  容器不停止直接退出(待机)

4.启动容器

docker start 容器ID或者容器名

5.重启容器

docker restart 容器ID或者容器名

6.停止容器

docker stop 容器ID或者容器名

7.强制停止容器

docker kill 容器ID或者容器名

8.删除容器

删除已停止的容器

docker rm 容器ID

删除运行中的容器

docker rm -f 容器ID

一次性删除多个容器

docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm

9.查看容器日志

docker logs -f -t --tail 容器ID

-t 是加入时间戳

-f 跟随最新的日志打印

--tail 数字 显示最后多少条

10.查看容器内运行的进程

docker top 容器ID

11.查看容器内部细节

docker inspect 容器ID

12.进入正在运行的容器并以命令行交互

docker attach 容器ID
docker exec -it 容器ID bashShell

attach 直接进入容器启动命令的终端,不会启动新的进程

exec 是在容器中打开新的终端,并且可以启动新的进程

exec更强大,可以做attach做的事情。

docker exec -it b6a7d03b7974 /bin/bash

13.从容器内拷贝文件到主机上

docker cp  容器ID:容器内路径 目的主机路径

14.将容器状态提交为镜像

docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]

四.Docker容器数据卷

1.容器内添加

(1)直接命令添加

 docker run -it -v /宿主机绝对路径目录:/容器内目录      镜像名

查看数据卷是否挂载成功

docker inspect 容器ID

容器和宿主机之间可实现数据共享

容器停止退出,主机修改后重新启动容器,数据同步

数据对容器只读命令

 docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名

(2)DockerFile添加

使用VOLUME指令来给镜像添加一个或多个数据卷

# volume test
FROM centos
VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
CMD echo "finished,--------success1"
CMD /bin/bash

启动后宿主机对应的目录位置

Docker挂载主机目录Docker访问出现cannot open directory .: Permission denied
解决办法:在挂载目录后多加一个--privileged=true参数即可

五.数据卷容器 容器间传递共享(--volumes-from)

docker run -it --name dc02 --volumes-from dc01 zzyy/centos

 

© 著作权归作者所有

共有 人打赏支持
一缕清风
粉丝 5
博文 127
码字总数 3362
作品 0
东城
私信 提问
容器Docker学习系列五~命令学习history,save, import

随着我们几篇文章Docker的命令学习,关于Docker本地镜像管理的命令学习已经接近尾声。今天我们就学习下本地镜像管理的最后三个命令history,save, import。当然前面命令没有掌握熟练的同学可以...

LuckQI
08/19
0
0
SpringCloud 微服务 (十七) 容器部署 Docker

壹 从第一篇Spring Cloud预备学习到现在,基本组件学习也接近尾声,最后完成的项目,就可以部署 关于部署,会结合docker容器进行,在学习Spring Cloud的同时,也粗略学习了docker的知识,也推荐大家...

___大侠
07/22
0
0
云主机安装Docker-CE的经验总结

最近在研究docker容器,在此记录一下docker安装过程及遇到的问题,本人新手,不喜勿喷。 主机环境:腾讯云主机-centos7.2 64位 内核版本:3.10 参考教程:https://legacy.gitbook.com/book/y...

qq_35918388
04/11
0
0
selenium 结合 docker 构建分布式测试环境

随着自动化测试越学越深,深深觉得有太多的东西需要总结。 1.记录下学习中遇到的坑,当做学习笔记。 2.有前人路过看到文章中比较落后的做法,请务必一定要指教。(因为是初学者视角,很多东西...

呐呐丶嘿
12/12
0
0
Docker Mac (二) mysql

下载镜像 既然有了docker,就一步步学习docker的容器技术,也方便开发,不用外部安装一坨又大又跑不动的软件 刚刚起步docker,遇到到很多的坑,还是决定记录一下,转个身就忘了 此次的系统是Mac, ...

___大侠
07/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Android 报错 Could not find com.android.tools.build:aapt2:3.2.1-4818971.

报错信息: Could not find com.android.tools.build:aapt2:3.2.1-4818971.Searched in the following locations: file:/C:/Users/96110/AppData/Local/Android/Sdk/extras/m2reposito......

lanyu96
12分钟前
0
0
我的Linux系统九阴真经

我的Linux系统九阴真经 在今天,互联网的迅猛发展,科技技术也日新月异,各种编程技术也如雨后春笋一样,冒出尖来了。各种创业公司也百花齐放百家争鸣,特别是针对服务行业,新型互联网服务行...

linuxCool
55分钟前
19
0
Python程序员需要知道的30个技巧

1 直接交换两个数字位置 1x, y = 10, 202print(x, y)3x, y = y, x4print(x, y)5#1 (10, 20)6#2 (20, 10) 2 比较运算符的链接 1n = 102result = 1 < n < 203print(result)4# True5result = 1 ......

糖宝lsh
56分钟前
11
0
[LintCode] Linked List Cycle(带环链表)

描述 给定一个链表,判断它是否有环。 样例 给出 -21->10->4->5, tail connects to node index 1,返回 true。 这里解释下,题目的意思,在英文原题中,tail connects to node index 1 表示的...

honeymose
今天
10
0
Nginx平滑添加模块

Nginx已经编译安装并运行了一段时间, 然后某一天, 发现需要用到某个模块但当初没有编译, 这个时候怎么办呢? 卸载重新安装肯定可以的, 如果Nginx版本没有变更的话, 则有一个相对平滑的方法来添...

老菜鸟0217
今天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部