首先说下容器:
它是指当docker运行镜像时,创建了一个隔离环境,称之为 容器。
这种方式优点:可以开启多个服务,服务之前是互相隔离的(比如:在一台服务器上可以开启多个mysql,可以是多个不同版本或者多个相同版本,这样如果多个项目依赖不同mysql版本,也可以部署在同一台服务器上)。
1、创建并运行一个容器
此命令会检查镜像是否存在,不存在会先远程下载,下载完之后,运行。
docker run -d --name 自定义容器名称 -p 外网访问的端口:实际端口 运行镜像的名字
解释:
-d:后台运行;
--name: 给容器起一个名字,需要唯一;
-p 外网访问端口:容器实际的端口
运行镜像名称:镜像名称一般由:[repository]:[tag]组成,其中repository就是镜像名称,tag是镜像版本号(可以通过 docker images来查下某个镜像名称及tag)。
2、重启、停止容器进程
// 启动容器进程,注意与run的区别
docker start 容器id
// 重启容器进程
docker restart 容器id
// 停止当前正在运行的容器进程
docker stop 容器id
// 强制停止当前容器进程
docker kill 容器id
注:
(1)docker stop 是指停止容器进程,容器还在!不是把容器给删除掉了!
(2)docker run xxx 是指创建一个容器,而且每次run 都会创建一个新容器;
(3)docker start xxx 是指启动已经停掉的容器进程;
(4)说白了,docker start/stop/restart/kill 这几个命令是在docker run xxx 之后才会有的。
3、查看容器的进程状态
docker ps
4、删除容器
// 删除有一个容器
docker rm 容器id或者容器名称// 如果当前容器正在运行,可以强制删除
docker rm -f 容器id或者容器名称// 删除所有的容器
docker rm -f $(docker ps -aq)
5、一张图来总结上边介绍的命令:
6、小例子 - 下载nginx
下载、运行nginx
// 下载nginx
docker pull nginx// 运行nginx
docker run -d --name nginx -p 3782:80
查看镜像及后台运行nginx:
在物理机访问虚拟机上docker nginx容器服务:
注意:
外界只能通过3782端口访问nginx,如果直接通过80端口是访问不到的!!!
7、进入nginx容器中
容器中会有自己独立的文件系统,当然只是模拟的。
docker exec -it nginx /bin/bash
解释:
-it:可交互的终端;
nginx:容器名称;
/bin/bash:进入容器之后使用什么命令进行交互(这里使用命令行)。
退出内部容器:exit
8、把本地镜像打包成一个tar文件
// 镜像名称可以使用docker imags来查看
// -o 输出到哪一个文件,output
docker save -o 镜像名称.tar
9、加载本地tar镜像包
加载本地tar镜像包,相当于docker pull xxx 下载一个镜像,只不过这个镜像已经下载完了且已经打包成一个tar文件了,现在需要加载到docker 中。
docker load -i xxx.tar
10、打印日志
docker logs 镜像名称