Docker -- 系统整洁之道 -- 1
在上文Docker – 系统整洁之道 – 0中已经对Docker是什么,安装Docker以及怎么运行一个简单的容器有了初步了解,这篇文章介绍Docker的一些命令和Docker镜像的使用及操作。
一些Docker命令
Docker的命令按照使用一个容器的顺序进行。
docker info 查看Docker的信息
~ docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 8
Server Version: 1.12.1
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
...
能查看到docker信息,说明docker是安装好的。
docker run 运行一个容器
~ docker run -it ubuntu
root@8eac2e6cf194:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@8eac2e6cf194:/#
由于在上文中已经运行过一次该条命令,所以ubuntu的镜像已经下载到了本地,此次运行就可以使用该镜像产生一个容器,在容器启动后,上过-it获取到命令行,运行命令ls。
使用–name标志可以给容器定义一个名字,如
docker run –name this_is_first_ubunt_container -it ubuntu
就会创建一个名字叫做this_is_first_ubunt_container的ubuntu的容器。名字只能使用大小写字母,数字,下划线,原点和横线,即[a-zA-Z0-9_.-]。
关于docker run的帮助可以使用
docker run --help获取。
docker ps 列出所有的容器
~ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8eac2e6cf194 ubuntu "/bin/bash" 5 minutes ago Up 5 minutes modest_davinci
使用docker ps命令可以看到当前正在运行的容器有哪些,并给出了一些相应的属性。给命令增加参数-a就可以获取当前所有的容器,包括已经停止的,如下。
~ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4d0cc9a960f1 hello-world "/hello" About a minute ago Exited (0) About a minute ago small_roentgen
8eac2e6cf194 ubuntu "/bin/bash" 4 minutes ago Up 4 minutes modest_davinci
docker ps -n x,显示最后x个容器,不管容器正在运行还是停止。
docker start 重新启动已经停止的容器
docker start
docker start this_is_first_ubunt_container
docker attatch 附着容器
docker attach this_is_first_ubunt_container
docker stop 停止一个容器
~ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4d0cc9a960f1 hello-world "/hello" 4 minutes ago Exited (0) 4 minutes ago small_roentgen
8eac2e6cf194 ubuntu "/bin/bash" 8 minutes ago Up 8 minutes modest_davinci
~ docker stop 8eac2e6cf194
8eac2e6cf194
~ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4d0cc9a960f1 hello-world "/hello" 4 minutes ago Exited (0) 4 minutes ago small_roentgen
8eac2e6cf194 ubuntu "/bin/bash" 8 minutes ago Exited (0) 5 seconds ago modest_davinci
前几个命令整体练习
创建一个有名字的container,停止它,启动它。
~ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
03248ab5d03b tomcat:latest "catalina.sh run" 2 days ago Exited (0) 2 days ago tomcat
4d0cc9a960f1 hello-world "/hello" 4 days ago Exited (0) 4 days ago
~ docker run --name this_is_first_ubunt_container -it ubuntu
root@894b1f0fa739:/# whoami
root
root@894b1f0fa739:/# exit
exit
~ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
894b1f0fa739 ubuntu "/bin/bash" 21 seconds ago Exited (0) 14 seconds ago this_is_first_ubunt_container
03248ab5d03b tomcat:latest "catalina.sh run" 2 days ago Exited (0) 2 days ago tomcat
4d0cc9a960f1 hello-world "/hello" 4 days ago Exited (0) 4 days ago small_roentgen
~ docker start 894b1f0fa739
894b1f0fa739
~ docker attach 894b1f0fa739
root@894b1f0fa739:/# whoami
root
root@894b1f0fa739:/# exit
exit
~ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
894b1f0fa739 ubuntu "/bin/bash" About a minute ago Exited (0) 8 seconds ago this_is_first_ubunt_container
03248ab5d03b tomcat:latest "catalina.sh run" 2 days ago Exited (0) 2 days ago tomcat
4d0cc9a960f1 hello-world "/hello" 4 days ago Exited (0) 4 days ago small_roentgen
~ docker start this_is_first_ubunt_container
this_is_first_ubunt_container
~ docker attach this_is_first_ubunt_container
root@894b1f0fa739:/# whoami
root
root@894b1f0fa739:/# exit
exit
守护式容器
上面创建的ubuntu是交互式运行的容器(interactive container),也可以创建一个长期运行的容器–守护式容器(daemonized container)。
~ docker run --name daemon_ubuntu -d ubuntu /bin/sh -c "while true;do echo hello world;sleep 1;done"
e56ae29adaf1d27cf49e05bccda5a7214be458fecc2afb0ff7721f16af8e044c
~ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e56ae29adaf1 ubuntu "/bin/sh -c 'while tr" About a minute ago Up About a minute daemon_ubuntu
docker logs 容器日志
~ docker logs daemon_ubuntu
hello world
hello world
hello world
hello world
...
~ docker logs --tail 0 -f daemon_ubuntu
hello world
hello world
hello world
hello world
hello world
docker top 容器进程
~ docker top daemon_ubuntu
PID USER TIME COMMAND
2792 root 0:00 /bin/sh -c while true;do echo hello world;sleep 1;done
3264 root 0:00 sleep 1
容器内运行进程
~ docker exec -d daemon_ubuntu touch /etc/new_config_file
~ docker exec -it daemon_ubuntu /bin/sh
# ls -l /etc | grep new
-rw-r--r-- 1 root root 0 Oct 13 02:21 new_config_file
docker inspect 容器详细信息
~ docker inspect daemon_ubuntu
# 获取容器运行状态
~ docker inspect --format='{{.State.Running}}' daemon_ubuntu
# 查看容器IP地址
~ docker inspect --format='{{.NetworkSettings.IPAddress}}' daemon_ubuntu
自动重启容器
docker run –restart=always –name daemon_ubuntu -d ubuntu /bin/sh -c “while true;do echo hello world;sleep 1;done”
–restart=always 无论容器的退出代码为何,都自动重启。
–restart=on-failure 当容器退出代码不为0时,自动重启。
–restart=on-failure:5 重启5次。
docker rm 删除容器
运行中的Docker容器是无法删除的。
# 删除所有容器
docker rm `docker ps -a -q`
Docker 镜像
docker images
Linux /var/lib/docker
Mac $HOME/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
docker pull ubuntu:16.10 获取ubuntu仓库中tag为16.10的镜像。
docker pull -a ubuntu 获取ubuntu仓库中所有镜像。
docker images ubuntu 列出本地所有ubuntu仓库的镜像。
docker run 的时候如果没有指定镜像的版本,则拉取最新版本进行创建。
Docker Hub 中仓库分为两种,一种是用户仓库(user repository),这种是用户创建使用的的,命名方式为username/repositoryname,意义为用户名/仓库名;一种是顶层仓库(top-repository),由docker内部人员管理。
docker search 查找Docker Hub上公用可用镜像。
获取镜像时,格式其实可以看做 用户/仓库:标签。 由于很多仓库为官网所有,所有很多都变成了 仓库:标签,如上面写的 ubuntu:16.10,ubutnu仓库的tag为16.10的镜像。
构建镜像
docker commit
docker build 和 Dockerfile文件
一般来说,我们不是真正「创建」了一个镜像,而是基于一个已有的镜像,构建了一个新的镜像。
参考链接
Docker -- 系统整洁之道 -- 1的更多相关文章
- Docker -- 系统整洁之道 -- 0
在我的小 rmbp 256G的硬盘里,实在是装不下100多个G的虚拟机了,所以想把一些东西迁移到这两年很火的Docker下,Docker以前也有过一两次,只是按着别人给的用法用的,具体的一些细节并没有 ...
- <读书笔记> 代码整洁之道
概述 1.本文档的内容主要来源于书籍<代码整洁之道>作者Robert C.Martin,属于读书笔记. 2.软件质量,不仅依赖于架构和项目管理,而且与代码质量紧密相关,本书提出一 ...
- <代码整洁之道>、<java与模式>、<head first设计模式>读书笔记集合
一.前言 几个月前的看书笔记 ...
- 免费电子书:C#代码整洁之道
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:<Clean Code(代码整洁之道)>是一本经典的著作,那么对于编写整洁 ...
- 2015年第11本:代码整洁之道Clean Code
前一段时间一直在看英文小说,在读到<Before I fall>这本书时,读了40%多实在看不下去了,受不了美国人啰啰嗦嗦的写作风格,还是读IT专业书吧. 从5月9日开始看<代码整洁 ...
- 学习笔记——Ubuntu下使用Docker包部署禅道任务管理系统
写此文目的:利用搭建禅道环境联系Docker基本使用方法,加深对Docker容器的理解,Ubuntu下面才能原生运行Docker,因此选择了Ubuntu 1.下载禅道开源版 wget http://d ...
- Programming好文解读系列(—)——代码整洁之道
注:初入职场,作为一个程序员,要融入项目组的编程风格,渐渐地觉得系统地研究下如何写出整洁而高效的代码还是很有必要的.与在学校时写代码的情况不同,实现某个功能是不难的,需要下功夫的地方在于如何做一些防御 ...
- 《代码整洁之道》ch5~ch9读书笔记 PB16110698(~3.15) 第二周
<代码整洁之道>ch5~ch9读书笔记 本周我阅读了本书的第5~9章节,进一步了解整洁代码需要注意的几个方面:格式.对象与数据结构.错误处理.边界测试.单元测试和类的规范.以下我将分别记录 ...
- 《代码整洁之道 中文版》高清 PDF 电子书下载
代码整洁之道.PDF 下载 代码整洁之道.PDF 中文版 高清 PDF 电子书下载 代码整洁之道下载 点我下载 作者简介 · · · · · · Robert C. Martin,Object ...
随机推荐
- javaweb实现教师和教室管理系统 java jsp sqlserver
1,程序设计思想 (1)设计三个类,分别是工具类(用来写连接数据库的方法和异常类的方法).信息类(用来写存储信息的方法).实现类(用来写各种操作数据库的方法) (2)定义两个jsp文件,一个用来写入数 ...
- 紫书 习题8-7 UVa 11925(构造法, 不需逆向)
这道题的意思紫书上是错误的-- 难怪一开始我非常奇怪为什么第二个样例输出的是2, 按照紫书上的意思应该是22 然后就不管了,先写, 然后就WA了. 然后看了https://blog.csdn.net/ ...
- A题之变态青蛙跳
一仅仅青蛙一次能够跳上1级台阶,也能够跳上2级--它也能够跳上n级. 求该青蛙跳上一个n级的台阶总共同拥有多少种跳法. 分析: 这是一个斐波拉契数列的引申问题,先来看看斐波拉契数列: n<=1, ...
- 【Linux编程】socket编程
套接字是通信端点的抽象.文件描写叙述符用open函数创建,而套接字描写叙述符用socket函数创建.socket函数原型例如以下: int socket(int domain, int type, i ...
- TOMCATserver不写port号、不写项目名訪问项目、虚拟文件夹配置
一.不写port. 这个问题都被问烂了.由于TOMCAT默认的訪问port为8080.而TCP/IP协议默认80port訪问,大家之所以看到别的站点都不写port号是由于人家用的的80port訪问的, ...
- Android Camera子系统之Linux C应用开发人员View
Android Camera HAL通过V4L2接口与内核Camera Driver交互.本文从Linux应用开发人员的角度审视Android Camera子系统. V4L2应用开发一般流程: 1. ...
- POJ 2828 Buy Tickets(线段树·插队)
题意 n个人排队 每一个人都有个属性值 依次输入n个pos[i] val[i] 表示第i个人直接插到当前第pos[i]个人后面 他的属性值为val[i] 要求最后依次输出队中各个人的属性 ...
- 43.$http
转自:https://www.cnblogs.com/best/tag/Angular/ $http 是 AngularJS 中的一个核心服务,用于读取远程服务器的数据. 使用格式: // 简单的 G ...
- POJ 4007 Flood-it!
题目:http://poj.org/problem?id=4007 思路: (lyd学长的思路) IDA*算法,首先迭代加深限制搜索深度. 可以发现如果当前矩阵中除了左上角的连通块之外,共有M种颜色, ...
- error C4996: 'setmode': The POSIX name for this item is deprecated解决方案
在使用VS2012编译zlib库官方提供的案例程序 zpipe.c 中代码时报错: 信息如下: 错误 1 error C4996: 'setmode': The POSIX name for this ...