再谈docker基本命令

子曰,温故而知新

今日,再次看书之际,又寻得docker的几条使用命令,用小本本记下来

配置docker镜像源

当我们在拉去一些共有镜像时,默认,docker会向docker.io去获取,如果在拉取的过程中出现下载速度慢的情况呢,其实可以试试用一些国内的镜像源,例如:daocloud镜像站
官方文档: https://www.daocloud.io/mirror
仅需要一条明明足以

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

当前命令适用于Ubuntu14.04、Debian、CentOS6 、CentOS7、Fedora、Arch Linux、openSUSE Leap 42.1
执行完毕后,需要重启一下docker

# systemctl restart docker

如果在重启的过程中报错:

Apr 20 09:02:48 localhost systemd: Starting Docker Application Container Engine...
Apr 20 09:02:48 localhost dockerd-current: unable to configure the Docker daemon with file /etc/docker/daemon.json: invalid character ‘}‘ looking for beginning of object key string
Apr 20 09:02:48 localhost systemd: docker.service: main process exited, code=exited, status=1/FAILURE

这是由于配置json文档的格式出错了

,则需要将/etc/docker/daemon.json文件中后面那个,号给删掉即可,例如

修改前:

{"registry-mirrors": ["http://f8214db2.m.daocloud.io"],}

修改后:

{"registry-mirrors": ["http://f8214db2.m.daocloud.io"]}

再次重启docker即可

查看docker 最新的log
使用docker logs -ft 即可
-f: 动态输出
-t: 增加时间戳
--tail n: 获取最新输出的n条
例如:

# docker logs -ft --tail 10 centos_name_1
2019-04-20T13:27:19.366905000Z
2019-04-20T13:27:19.368079000Z lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
2019-04-20T13:27:19.368478000Z inet 127.0.0.1 netmask 255.0.0.0
2019-04-20T13:27:19.368746000Z inet6 ::1 prefixlen 128 scopeid 0x10<host>
2019-04-20T13:27:19.369000000Z loop txqueuelen 1000 (Local Loopback)
2019-04-20T13:27:19.371869000Z RX packets 0 bytes 0 (0.0 B)
2019-04-20T13:27:19.374114000Z RX errors 0 dropped 0 overruns 0 frame 0
2019-04-20T13:27:19.374525000Z TX packets 0 bytes 0 (0.0 B)
2019-04-20T13:27:19.374886000Z TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
2019-04-20T13:27:19.375426000Z

查看docker进程
使用docker top命令可以查看docker中的进程
例如:

# docker top centos_name_1
UID PID PPID C STIME TTY TIME CMD
root 4468 4452 0 09:16 pts/2 00:00:00 /bin/bash
#

查看docker容器的负载

# docker stats centos_name_1

CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
centos_name_1 0.00% 392 KiB / 991 MiB 0.04% 22 MB / 600 kB 22.8 MB / 46 MB 1

docker自重启
在docker run 时,加入--restart=[always,on-failure:[number]]
--restart=always :docker 自动重启
--restart=on-failure :docker 只有在退出码非0的时候才会重启
--restart=on-failure:3 在退出码状态为非0的时候,重启,最多重启3次

例子 --restart=always :

# docker run -d --restart=always  nginx

创建一个docker 容器,现在来删除它

# ps aux | grep `docker ps | grep nginx | awk ‘{print $1}‘` | grep -v grep | awk ‘{print $2}‘
7583
# kill -9 7583
# ps aux | grep `docker ps | grep nginx | awk ‘{print $1}‘` | grep -v grep | awk ‘{print $2}‘
7842
# docker ps
ONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
d1ed69cb3238        nginx               "nginx -g ‘daemon ..."   8 minutes ago       Up 47 seconds       0.0.0.0:80->80/tcp   affectionate_wiles
# 

我们可以发现,kill后进程又起来了

例子 --restart=--restart=on-failure:

# docker run -d --restart=on-failure:2 nginx
6fabc743a488a857909ac4f1472a7f1012e2224e300da70aa15c1cb8f5db0767
# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
6fabc743a488        nginx               "nginx -g ‘daemon ..."   2 seconds ago       Up 2 seconds        80/tcp              cocky_heisenberg
# 
#  ps aux | grep `docker ps | grep nginx | awk ‘{print $1}‘` | grep -v grep | awk ‘{print $2}‘
8030
# kill -9 8030
#  ps aux | grep `docker ps | grep nginx | awk ‘{print $1}‘` | grep -v grep | awk ‘{print $2}‘
8145
# kill -9 8145
#  ps aux | grep `docker ps | grep nginx | awk ‘{print $1}‘` | grep -v grep | awk ‘{print $2}‘
8242
# kill -9 8242
#  ps aux | grep `docker ps | grep nginx | awk ‘{print $1}‘` | grep -v grep | awk ‘{print $2}‘
Usage: grep [OPTION]... PATTERN [FILE]...
Try ‘grep --help‘ for more information.
# 

发现,在重启两次后,该容器不重启了。

其实基础真的很重要~~~

原文地址:https://www.cnblogs.com/wang-li/p/10743130.html

时间: 2024-10-05 19:50:18

再谈docker基本命令的相关文章

再谈 Go 语言在前端的应用前景

12 月 23 日,七牛云 CEO & ECUG 社区发起人许式伟先生在 ECUG Con 2018 现场为大家带来了主题为<再谈 Go 语言在前端的应用前景>的内容分享. 本文是对演讲内容的实录整理. 今年是举办 ECUG Con 的第 11 年,之前我谈的基本都是服务端的开发实践.从去年起我开始不谈后端而是谈前端.当然,去年我没有说为什么我会关注前端.今天再谈 Go 语言在前端的应用之前,我先简单聊一下思路脉络,为什么我今天会关注前端. 前端的演进 最早的 PC 时期,常见的设备主

docker基本命令及操作逻辑

docker镜像操作逻辑图: docker是一个容器,而运行一个容器必须要有镜像,因为镜像是容器的核心,我们在docker上运行一个服务时需要通过docker run运行一个镜像,才能够进入到该容器中,我们也可以使用docker commit命令 将一个容器制作成一个镜像,但注意制作一个镜像时需要指定一个完整的镜像名称(镜像名称+版本号),它默认的版本号是latest,表示为最新版本的镜像,如果不写,将默认已latest结尾.还可以执行docker save --output命令导出该镜像,而当

C++ Primer 学习笔记_73_面向对象编程 --再谈文本查询示例

面向对象编程 --再谈文本查询示例 引言: 扩展第10.6节的文本查询应用程序,使我们的系统可以支持更复杂的查询. 为了说明问题,将用下面的简单小说来运行查询: Alice Emma has long flowing red hair. Her Daddy says when the wind blows through her hair, it looks almost alive, like a fiery bird in flight. A beautiful fiery bird, he

C++ Primer 学习笔记_74_面向对象编程 --再谈文本查询示例[续/习题]

面向对象编程 --再谈文本查询示例[续/习题] //P522 习题15.41 //1 in TextQuery.h #ifndef TEXTQUERY_H_INCLUDED #define TEXTQUERY_H_INCLUDED #include <iostream> #include <fstream> #include <sstream> #include <vector> #include <set> #include <map&g

再谈MySQL全库备份

再谈MySQL全库备份 简介 Part1:写在最前 在很早之前,我写过一个MySQL生产库全库备份脚本,今天有同事问我是不是要再加一个-R参数来备份存储过程,理由的话是由于mysqldump --help中 关于存储过程的默认备份是false. routines                          FALSE MySQL生产库全库备份脚本 http://suifu.blog.51cto.com/9167728/1758022 实战 Part1:写在最前 我备份一般就三个参数 --s

Android 再谈handler

今天在做http网络事件的响应网络接收处理一般不能放在主线程中使用,目前也只会使用AsyncTask进行处理!之前虽然写过handler处理的一些文章但是发现全不会了!无奈~ 关于handler某位兄弟已经整理的很透彻了!现在引用下原话如下: Handler监听者框架:子线程是事件源,主线程是监听者.Handler作为子线程的监听器出现:主线程中生成Handler的子类,并重写handleMessage(Message msg) 方法,用来对子线程响应.子线程调用Hanlder的sendMess

再谈ORACLE CPROCD进程

罗列一下有关oprocd的知识点 oprocd是oracle在rac中引入用来fencing io的 在unix系统下,如果我们没有采用oracle之外的第三方集群软件,才会存在oprocd进程 在linux系统下,只有在10.2.0.4版本后,才会具有oprocd进程 在window下,不会存在oprocd 进程,但是会存在一个oraFenceService服务,用来实现相同的功能,该服务采用的技术是基于windows的,与oprocd不同 oprocd进程可以运行在两者模式下:fatal和n

Java基础——再谈面向对象

去年的这个时候,心血来潮写了篇<简述面向对象技术>,先在看来不由的会想:这都是写的什么跟什么啊?(ps:虽然现在写的博客依然不咋地)但是,Java的学习中又一次不得不再一次面向对象,所以,奉上一篇<再谈面向对象>,做为新年的一盘开胃菜. 面向对象是相对于面向过程而言,是一种思想. 区别于面向过程: 面向过程是以函数为基础,完成各种操作,强调的是过程,而面向对象是以对象为基础,强调的是对象. 比如说把大象装进冰箱分为几步,宋丹丹是这样说的:三步呗, 第一步:打开冰箱门, 第二步:把大

再谈multistage text input(中文输入法)下UITextView的内容长度限制

之前写过一篇<如何更好地限制一个UITextField的输入长度>,在文章最后得到的结论是可以直接使用 UIKIT_EXTERN NSString *const UITextFieldTextDidChangeNotification; 进行监听,截断超出maxLength的部分. 所以后来我在处理UITextView的内容长度时,也直接参考这个方法: [[NSNotificationCenter defaultCenter] addObserver:self selector:@select