Docker常用命令:一篇文章带你掌握docker的使用

Docker介绍:

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可抑制的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器完全使用沙盒机制,相互之间不会存在任何接口。几乎没有性能开销,可以很容易的在机器和数据中心运行。最重要的是,他们不依赖于任何语言、框架或者包装系统。

Docker是dotCloud公司开源的一个基于LXC的高级容器引擎,源码托管在Github上,基于go语言并且遵从Apache2.0协议开源。
GitHub地址:https://github.com/moby/moby

小知识:LXC为Linux Container的简写。Linux Container 容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。
LXC主要通过Kernel的namespace实现每个用户实例之间的项目隔离,通过cgroup实现对资源的配额和调度。

docker官网:https://www.docker.com
docker中文库:https://www.docker.org.cn/

帮助命令:

docker version         #查看docker版本
docker info            #查看docker的系统信息,包括镜像和容器的数量
docker 命令 --help     #帮助命令

Ubuntu系统命令

更新file: apt-file update                查看自己内核:uname -r(简化显示) \ uname -a(全面显示)

查看自己内存: cat meminfo                查看当前所产生的挂载: cat mounts
 
查看设备内容编号: cat devices             查看加载的模块:cat modules

查看版本: cat version                    查看swap分区有多大:cat swaps

系统正常运行时间:cat uptime               查看当前进程: cat self

docker镜像命令:      

docker images 查看镜像          

docker images     #查看所有本地主机上的镜像 
docker images --help #帮助 
     #可选项 
            -a #显示所有的镜像 
            -q #只显示镜像的ID

    docker search 搜索镜像

root@server1:~# docker search mysql 
NAME             DESCRIPTION 
STARS  OFFICIAL  AUTOMATED 
mysql           MySQL is a widely used, open-source relation… 12572     [OK] 
mariadb         MariaDB Server is a high performing open sou… 4831    [OK] 
    #可选项 
    --filter=STARS=3000 #搜索STARS大于3000的镜像

              

docker pull下载镜像

docker pull 镜像名   / docker pull 镜像名:版本号
root@server1:~# docker pull mysql
Using default tag: latest        #如果不写tag,默认为latest(最新版)
latest: Pulling from library/mysql
72a69066d2fe: Pull complete    #分层下载,docker image的核心 联合文件系统,更新删除旧版本时只删除不需要的分层
93619dbc5b36: Pull complete
99da31dd6142: Pull complete
626033c43d70: Pull complete
37d5d7efb64e: Pull complete
ac563158d721: Pull complete
d2ba16033dad: Pull complete
688ba7d5c01a: Pull complete
00e060b6d11d: Pull complete
1c04857f594f: Pull complete
4d7cfa90e6ea: Pull complete
e0431212d27d: Pull complete
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709    #签名
Status: Downloaded newer image for mysql:latest   
docker.io/library/mysql:latest    #真实地址
    #docker pull mysql = docker pull docker.io/library/mysql:latest

docker删除镜像

docker rmi -f 镜像ID #删除指定镜像 
docker rmi -f 镜像ID 镜像ID 镜像ID #删除多个镜像 
docker rmi -f $(docker images -aq) #删除所有镜像

容器命令

!!有了镜像才可以创建容器 !!

docker pull centos    #下载镜像

新建容器启动

docker run [可选参数] 
--name="name"  #容器名字 用来区分容器 例:node01 node02 node03 
-d             #后台方式运行 
-it            #使用交互方式运行,进入容器查看内容 
-p(小写)       #指定容器的端口 例:-p 8080:8080 
                                 -p ip:主机端口:容器端口 
                                 -p 主机端口:容器端口 (常用)
-P(大写)         #随机指定端口 
#测试 
root@server1:~# docker run -it --name="node01" centos /bin/bash 
[root@3d77c80f1450 /]# ls 
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin 
    #create                 #创建一个新的容器,同run,但不启动容器

docker ps 命令

docker ps 命令           #列出所有正在运行的容器
参数: 
-a                       #列出当前正在运行的容器和历史运行过的容器 
-n=?                     #显示最近创建的容器 
            -----例:docker ps -n=3 #显示最近创建的3台容器 
-q                       #只显示容器的编号 
root@server3:~# docker ps 
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 
root@server3:~# docker ps -a 
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 
3ded0c98cea0 centos "/bin/bash" 4 hours ago Exited (0) 
About an hour ago         node01

退出容器

exit             #直接容器停止并退出 
ctrl + p + q     #容器不停止退出

删除容器

docker rm 容器id                        #删除指定的容器 不能删除正在运行的容器 
docker rm -f $(docker ps -aq)           #删除所有容器 
docer ps -a -q | xargs docker rm        #删除所有的容器

启动和停止容器的操作

docker start 容器id           #启动容器 
docker restart 容器id         #重新启动容器 
docker stop 容器id            #停止当前正在运行的容器 
docker kill 容器id            #强制停止当前容器

常用的其他命令

后台启动容器

命令 docker run -r 镜像名! 
docker run -d centos 会出现的问题:
问题1:docker ps ,发现centos停止了 
问题2:docker容器使用后台运行,就必须要有一个前台进程docker没有发现应用,就会自动停止,容器启动以后,发现自己没有提供服务就会立刻停止,就是没有程序了

查看日志

docker logs --help                     #日志帮助命令 
-f                                     #显示日志的信息 
-t                                #显示时间戳 -t 和 -f 可以一起使用 例:docker logs -tf 容器id 
--tail                                 #以字符串的形式显示日志 需要添加查看的日志条数 
docker logs -f -t --tail 10 容器id     #显示最近的10条日志

查看容器中的进程id

docker top 容器id 
root@server1:~# docker top 3ded0c98cea0 
UID             PID             PPID             C 
STIME           TTY             TIME             CMD 
root            102177          102148           0 
06:49           pts/0           00:00:00 
/bin/bash

查看容器的元数据

docker inspect 容器id

进入当前正在运行的容器

通常情况下我们都是使用后台方式运行容器,需要进入容器更改一些配置 
docker exec -it 容器id /bin/bash #进入容器后打开一个新的终端(常用)
docker attach -it 容器id #进入容器正在执行的终端,不会启动新的终端

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

#讲容器内/home/test.txt文件拷贝到主机的/home目录下 
docker cp 容器id:/home/test.txt /home

 docker commit打包镜像

docker commit 将容器打包为一个可供下载的镜像
docker commit -m="提交的信息" -a="作者名称" 容器id 打包后的镜像名称:版本号
##实践例子##
# 作者名称为 kelin 备注信息为 hello kelin 版本号设置为 tomcat:1.0 !都可自己随意设置!
docker commit -a="kelin" -m="hello kelin" e56e24f01283 tomcat001:1.0 
#打包完成后docker images查看 效果如下

常用命令小结

attach                 #当前shell下attach连接指定运行镜像
build                  #通过dockerfile定制镜像
cp                     #从容器中拷贝文件或者目录到宿主机·
cerate                 #创建一个新的容器,同run 但不启动容器
diff                   #查看docker容器的变化
events                 #从docker服务获取容器实时事件
exec                   #在已存在的容器上运行命令  
export                 #导出容器的内容作为一个tar归档文件[对应import]
history                #展示历史命令
images                 #列出系统当前镜像
import                 #从tar包中的内容创建一个新的文件系统
info                   #显示系统相关信息
inspect                #查看容器详细信息
kill                   #kill指定docker容器
load                   #从一个tar包中下载一个镜像[对应save]
login                  #注册或登陆一个docker源服务器
logout                 #从当前Docker registory退出
logs                   #输出当前容器日志
port                   #查看映射端口对应的容器内部源端口
pause                  #暂停容器
ps                     #列出容器列表
pull                   #从docker镜像源服务器拉取指定镜像
restart                #重启运行容器
rm                     #移除一个或多个容器
rmi                    #移除一个或多个镜像[无容器使用该镜像的情况下才可移除,否则需要删除相关容器才可继续或-f强制移除]
run                    #创建新的容器并运行一个命令
save                   #保存一个镜像为一个tar包[对应load]
search                 #在docker hub中搜索镜像
start                  #启动容器
stop                   #停止容器
tag                    #给源中镜像打标签
top                    #查看容器中运行的进程信息
unpause                #取消暂停容器
version                #查看版本号
wait                   #截取容器停止时的退出状态值

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值