前言:
在上一篇文章(文章传送虫洞)中讲述了怎么安装docker,本篇文件将给大家演示在centos7系统中docker的一些基本操作与注意事项。很多人把容器误解为虚拟机,其实我们可以浅显的理解为:容器就是一个运行在系统中的进程。
容器(左)与虚拟机(右)的架构对比图
本文转自我个人的公众号:天目星,请大家多多关注。
一、基本命令
先来个Hello World 吧
# Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
$ docker run centos:7.6.1810 /bin/echo "Hello world"
Hello world
PS:完成“hello world”的输出后,此容器自动退出
docker 命令集分类
1)容器周期管理
# Docker [run|create]
# 创建一个nginx的容器并启动它
$ docker run --name mynginx \
-h ngtest -p 8080:80 -m 180m \
--restart=always \
-d nginx:stable
# 只创建一个nginx容器但不启动
$ docker create --name mynginx \
-h ngtest -p 8080:80 -m 180m \
--restart=always \
-d nginx:stable
# 各个参数的意义
--name:自定义容器名称
--restart:设置容器是否跟随docker服务自启动
--link:添加链接到另一个容器,例如需要链接到mysql时
-h:自定义容器hostname
-p:自定义端口映射,格式为:宿主机端口:容器端口
-m:设置容器可使用的内存最大值
-v:持久化卷绑定,格式为:宿主机或外设存储路径:容器内部路径
-d:设置容器后台启动,并返回容器ID
nginx:stable 使用的docker images名称
# Docker [start|stop|restart]
# 启动容器,可以使用自定义容器名或者容器的ID
# 思考一下run命令与start的区别
$ docker start mynginx
# 关闭容器
$ docker stop mynginx
# 重启容器
$ docker restart mynginx
# Docker [pause|unpause]
# 暂停容器中的所有进程
$ docker pause mynginx
# 恢复容器中的所有进程
$ docker unpause mynginx
# Docker exec
# 在容器中执行命令
$ docker exec -it mynignx bash
-i:以交互模式运行容器
-t:为容器重新分配一个伪输入终端
-d:在后台运行
# docker [kill|rm]
# 杀掉运行中的容器
$ docker kill -s KILL mynginx
-s:向容器发送一个信号
# 删除容器
$ docker rm -f -v mynginx
-f:使用SIGKILL信号强制删除容器
-v:删除与容器关联的卷
# 删除容器A01到容器A02的连接,连接名为db01
$ docker rm -l db01
-l:移除容器间的网络连接,而非删除容器。
# 跑路大法,强制删除所有运行中的容器
$ docker rm -f $(docker ps -qa)
2)容器镜像管理
# Docker [login|logout]
# 登录官方镜像仓库
$ docker login -u xxx -p xxx
-u:登录的用户名
-p:登录的密码
# 登录本地仓库
$ docker login -u xxx -p xxx 192.168.0.10:8080
# 登出
$ docker logout
# Docker [search|pull|push]
# 查找镜像,其中OFFICIAL项标志为[OK]是docker的官方镜像
$ docker search nginx
# 拉取centos7.6.1810的官方镜像
$ docker pull centos:7.6.1810
# 上传镜像,需要配合docker login登录仓库后使用
$ docker push nginx:v587
$ docker push private.io/nginx:v587
# Docker [images|rmi]
# 列出本地所有镜像
$ docker images -a
-a:显示所有镜像(包括中间映像层,默认不显示)
-q:只显示镜像的ID
--digests:显示镜像的摘要信息
--no-trunc:显示完整的镜像信息
# 删除本地镜像
$ docker rmi nginx
-f:强制删除
--no-prune:不显示删除镜像的过程
# 删除多个镜像
$ docker rmi nginx centos:7.6.1810
# Docker tag
# 标记本地镜像,将其归入相关的仓库(需理解)。
$ docker tag nginx:stable private.io/nginx:v587
# Docker [build|history]
# 在空目录中新建Dockerfile文件,并配置好构建参数
$ docker build -t nginx:v587 .
-t:自定义构建的标签名
# build命令知识比较多,另外开篇说明
# 查看指定镜像的创建历史
$ docker history nginx:v587
--no-trunc:显示完整的创建记录
# Docker [save|load]
# 了解与Docker [import|export]的区别(需理解)
# 将nginx的镜像保存为tar文件
$ docker save -o /root/nginx-stable.tar nginx:stable
-o:输出文件
# 导入镜像文件
$ docker load -i /root/nginx-stable.tar
-i:指定导入的文件
尾声:
因篇幅有限,将在下期的《容器编排系列:(二) docker的基本操作2》中继续讲解docker的容器操作。
投资必须是理性的。如果你不能理解它,就不要做。
我们应集中关注将要发生什么,而不是什么时候发生。
在别人恐惧时我贪婪,在别人贪婪时我恐惧。
------ 巴菲特