every blog every motto: You can do more than you think.
https://blog.csdn.net/weixin_39190382?type=blog
0. 前言
docker基础知识的梳理与使用
1. docker的理解
Registry(仓库):是一个集中存储与分发镜像的服务。最常用的Registry是官方的Docker Hub
Images(镜像):是一个只读模板,含创建Docker容器的说明,它与操作系统的安装光盘有点像。
Containers(容器):镜像的运行实例,镜像与容器的关系类比面向对象中的类和对象。
Client(客户端):是Docker的用户端,可以接受用户命令和配置标识,并与Docker daemon通信。
2. docker常用命令
2.1 demo
拉取镜像
docker pull how2j/tmall
激活镜像
docker run -dit --privileged -p21:21 -p80:80 -p8080:8080 -p30000-30010:30000-30010 --name how2jtmall how2j/tmall:latest /usr/sbin/init
docker run 表示运行一个镜像
- -dit 是 -d -i -t 的缩写。 -d ,表示 detach,即在后台运行。 -i 表示提供交互接口,这样才可以通过 docker 和 跑起来的操作系统交互。 -t 表示提供一个 tty (伪终端),与 -i 配合就可以通过 ssh 工具连接到 这个容器里面去了
- –privileged 启动容器的时候,把权限带进去。 这样才可以在容器里进行完整的操作
-p21:21 第一个21,表示在CentOS 上开放21端口。 第二个21 表示在容器里开放21端口。 这样当访问CentOS 的21端口的时候,就会间接地访问到容器里了 - -p80:80 和 21一个道理
- -p8080:8080 和21 一个道理,在本例里,访问的地址是 http://192.168.84.128:8080/tmall/, 这个 192.168.84.128 是CentOS 的ip地址,8080是 CentOS 的端口,但是通过-p8080:8080 这么一映射,就访问到容器里的8080端口上的 tomcat了
- -p30000-30010 和21也是一个道理,这个是ftp用来传输数据的
- –name how2jtmall 给容器取了个名字,叫做 how2jtmall,方便后续管理
- how2j/tmall:latest how2j/tmall就是镜像的名称, latest是版本号,即最新版本
- /usr/sbin/init: 表示启动后运行的程序,即通过这个命令做初始化
进入容器
docker exec -it how2jtmall /bin/bash
2.2 镜像管理
- search 查看仓库里有些什么镜像
- pull 拉取镜像
- images 查看本地有些什么镜像
- rmi 删除本地镜像
- 修改本地镜像名称
- push , 把镜像提交到仓库
找how2j的镜像
docker search jow2j
查看本地所有的镜像
docker images
删除镜像
docker rmi <images_name>
镜像提交到仓库
push
通过tag可以对镜像进行标记,如图所示,把 docker.io/tomcat:8.0 标记成了docker.io/mytomcat:8.0
docker tag docker.io/tomcat:8.0 docker.io/mytomcat:8.0
删除所有镜像
docker rmi $(docker images -q)
2.3 容器管理
-
运行 run
-
进入 exec attach
-
生命周期管理, 暂停,恢复,停止,启动 pause, unpause, stop, start
-
ps 查看所有的容器
-
检查某个具体的容器
-
rm 删除容器
-
commit,对容器做了修改后,把改动后的容器,再次转换为镜像
运行镜像
docker run -dit --privileged -p21:21 -p80:80 -p8080:8080 -p30000-30010:30000-30010 --name how2jtmall how2j/tmall:latest /usr/sbin/init
进入容器
docker exec -it how2jtmall /bin/bash
容器变成镜像
docker commit how2jtmall how2j/tmall:now
生命周期
暂停:pause
恢复:unpause
停止:stop
开始:start
就是常见的生命周期命令,没什么好说的。。。
需要注意的是, stop 之后再 start, 容器需要启动,tomcat也需要启动,里面的mysql 也需要启动,都很花时间,所以要等待十几秒再访问,才能看到结果,否则会误以启动失败了
检查容器的各项信息
docker inspect how2jtmall
删除容器,容器需要先停止
docker rm how2jtmall
删除所有容器
docker rm `docker ps -a -q` -f
2.4 零碎回顾
查看所有容器
docker ps -a
查看运行的容器
docker ps
启动容器
docker start id/name
进入容器(容器必须是启动的),这种方式退出容器,容器就关了
所有通过此方法进入的用户看到同样的操作
docker attach id/name
推荐使用下面这个进入
docker exec -it contain_name /bin/bash
退出容器
exit
删除容器
docker rm id/name # 删除一个停止的容器
docker rm -f id/name # 删除一个正在运行的容器
查看容器内进程信息
docker top