传送门
前面介绍了docker的安装:docker系列1:docker安装
还有docker镜像加速器:docker系列2:阿里云镜像加速器
以及docker的基本操作: docker系列3:docker镜像基本命令
引子
从今年3月到现在,基本没有进行博客更新了,算下来大概是3个月左右。
在这期间主要是做了一件"不务正业"的事情,报名考了一下PMP,通俗点说就是参加了软件行业的项目经理考试认证,过了就给发一个证书!注意这里只是说的参加了,考过没有我也不知道,因为成绩要在8月份才出来。如果有机会,会把报考PMP相关的流程及资料通过专栏的形式分享出来(有的资料是培训班的,可能会侵权,就不一定放了)。
通过这几个月的刷题及学习,又深深的体验了一把中国人的考试热情。本以为类似这种带有专业性质的且收费偏高的认证考试应该没有多少人,结果到了考试那天才发现,锣鼓喧天人山人海!这是继"人人都是项目经理"之后,又变成了"人人都是产品经理"。
个人觉得还是有一定收获的,通过它系统性的了解了项目管理的理论知识体系,及一些常见项目管理案例。当然如果要靠一纸证书就能成为专业的项目经理,可能任重而道远,毕竟在中国的软件行业环境下,有一些正在从事项目管理的专业人员也并不十分专业!
docker的基本命令
容器基本命令
拉取镜像
在前面介绍过镜像拉取,理论上只要是仓库里面的有的,都可以直接拉取,甚至是一个操作系统,比如现在就试着拉取一个centos!
先搜索一下:
docker search centos
会输出查询结果,里面有一个centos镜像
现在把它拉取下来:
docker pull centos
由于配置了镜像加速器,很快就下载完成了:
那么这个镜像如何运行呢?
启动镜像
要创建并启动一个容器,可以用如下命令:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
这个命令的参数非常多,这里就不贴出来了,可以直接查看命令,官方对这个命令的解释:
Create and run a new container from an image:从镜像中创建并运行一个容器
假设要启动刚才的centos镜像,就可以用如下命令:
docker run --name test_centos -it centos /bin/bash
其中的
- --name:表示给容器取一个名字
- -it:表示通过交互式方式进入容器
--detach
,-d:
后台方式运行容器,并打印容器ID--hostname
,-h:指定容器的主机名
执行之后,会执行并进入容器:
这个时候,在ls一下,会发目录跟主机有点不同,这是因为这个时候通过-it命令已经进入到容器里面了:
上面的-it表示的就是通过交互式方式进入容器。
而如果-d就表示后台方式运行容器:
docker run --name test_centos2 -d centos /bin/bash
执行之后,会显示启动结果:
注意,这里启动的时候,指定的别名是test_centos2,而第一次-it启动的时候是别名test_centos,这是为什么呢?
因为一个镜像可以启动多个容器,但是容器是不能重名的,所以要通过加--name来区分!如果尝试用相同的容器名称来启动,会收到错误信息:
而如要指定容器的主机名就用--h参数了,运行下面的命令
docker run -it --name test_centos4 -h test_centos centos /bin/bash
会运行一个新容器,观察一下主机名称:
更多的命令可以通过--help来查看了
退出容器
exit命令
用上面的docker run命令运行容器之后,直接输入exit就可以退出容器了。不过这种方式退出容器之后,容器就会停止。比如现在重新运行一个容器,执行exit命令:
Ctrl+P+Q
如果要退出容器并且不停止容器运行,可以用Ctrl+P+Q命令
查看运行容器
要查看当前运行的容器
docker ps [OPTIONS]
Options
Name, shorthand Default Description --all , -a Show all containers (default shows just running) --filter , -f Filter output based on conditions provided --format Format output using a custom template: ‘table’: Print output in table format with column headers (default) ‘table TEMPLATE’: Print output in table format using the given Go template ‘json’: Print in JSON format ‘TEMPLATE’: Print output using the given Go template. Refer to https://docs.docker.com/go/formatting/ for more information about formatting output with templates --last
,-n
-1
Show n last created containers (includes all states) --latest
,-l
Show the latest created container (includes all states) --no-trunc Don’t truncate output --quiet
,-q
Only display container IDs --size , -s Display total file sizes
就是用上面的docker ps命令:
而如果要查看所有运行过的容器,加上-a参数:
删除容器
要删除当前容器,可以用docker rm命令
docker rm [OPTIONS] CONTAINER [CONTAINER...]
Options
Name, shorthand Default Description --force , -f Force the removal of a running container (uses SIGKILL) --link , -l Remove the specified link --volumes , -v Remove anonymous volumes associated with the container
比如,docker ps -a查看所有的容器,选择对应的容器id,通过docker rm删除:
注意上面的status这一列,如果Exited表示停止的容器,如果是正在运行的容器,docker rm是删除不了的,必须通过-f参数强制进行删除:
启动容器
如果要启动已停止的容器,可以通过命令docker start:
docker start [OPTIONS] CONTAINER [CONTAINER...]
Options
Name, shorthand Default Description --attach
,-a
Attach STDOUT/STDERR and forward signals --checkpoint
experimental (daemon)
Restore from this checkpoint--checkpoint-dir
experimental (daemon)
Use a custom checkpoint storage directory--detach-keys
Override the key sequence for detaching a container --interactive
,-i
Attach container’s STDIN
比如,docker ps --filter status=exited查看所有停止的容器(关于容器状态,可以查看命令:docker ps)
然后,选择一个或多个CONTAINER ID进行启动:
停止容器
停止容器,可以用docker stop命令
docker stop [OPTIONS] CONTAINER [CONTAINER...]
Options
Name, shorthand Default Description --signal
,-s
Signal to send to the container --time
,-t
Seconds to wait before killing the container
重启容器
重新启动容器,可以用docker restart命令
容器重命名
如果要对容器重新命名,可以用docker rename命令