首先理解什么是docker
docker是一种容器技术, 就是 将软件虚拟化,跟VMware类似,不过性能要较差,好处是较比VMware这种虚拟占据的内存较小,
docker 中有镜像 容器,镜像相当于安装包,容器就是运行中的镜像,镜像就是开发者开发好的软件,将这个镜像下载到docker上就可以直接运行,可以通过 docker images 查看当前docker上的所有镜像
docker 常用命令
docker images 查看已下载的镜像
docker rmi 镜像名称:标签名 删除已下载的镜像
docker search 镜像 从官方仓库(hub.docker.com)查找镜像
docker pull 镜像名称:标签名 标签名默认是 latest,代表最新版本。
docker run 创建容器
docker ps 列出运行中的容器(运行中)
docker ps -a 列出所有的容器(运行、未运行)
docker rm 容器名称 删除停止的容器
docker rm -f 容器名称 删除运行中的容器
docker start 容器名称 启动容器
docker stop 容器名称 停止容器
docker restart 容器名称 重启容器
docker exec 执行容器中的指令
docker run 镜像 运行镜像,创建容器
docker run --name=redis_1 -p 6378:6379 redis
运行一个redis的容器,–name 是将这个容器的名字命名为redis_1 -p 是端口映射, 将容器中的6379端口映射到主机的6377, 这样在主机上使用redis连接工具就可以通过6377端口连接使用到redis容器了
这个端口映射按镜像的情况来, 如,mysql的端口是3306, 这时候就将mysql中的3306端口映射到主机上随便一个端口, -p 前面的端口是本机的,后面的端口是容器的
注意, 如果直接运行镜像的话,docker 会将这个镜像最后一个版本运行,也就是 tag 是last 的镜像运行,如果同一个名字的镜像有多个的话可以通过tag版本来进行控制运行, 如:
C:\Users\m1877>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu_nignx 1.1 e8b4febf0ad9 4 months ago 909MB
ubuntu_nginx 1.0 e59afb067d99 4 months ago 609MB
python_django 1.3 4a43b821665a 4 months ago 553MB
python_django 1.2 3a1c38b3447e 4 months ago 466MB
python_django 1.1 d758cf8827b8 4 months ago 220MB
python_django 1.0 179001309ac5 4 months ago 206MB
my_busybox 1.01 c553c6ad914f 4 months ago 1.22MB
redis latest dcf9ec9265e0 4 months ago 98.2MB
mysql 5.7 1e4405fe1ea9 4 months ago 437MB
mysql latest d435eee2caa5 4 months ago 456MB
nginx latest 231d40e811cd 4 months ago 126MB
rabbitmq latest 72469b528c2d 4 months ago 150MB
python 3.6 601c1195acd5 4 months ago 913MB
ubuntu 16.04 5f2bf26e3524 5 months ago 123MB
celery latest e111a70eee6a 2 years ago 216MB
C:\Users\m1877>docker run -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
运行的时候需要将运行的镜像名字和版本放到最后,-e 的作用是指定容器内的环境变量, 如mysql是需要密码的,使用我们通过-e指定 mysql root 的密码是123456
如图所示,完全可以
docker run 参数
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
–name=“nginx-lb”: 为容器指定一个名称;
-e username=“ritchie”: 设置环境变量;
-m :设置容器使用内存最大值;
–link=[]: 添加链接到另一个容器;当要访问其它容器中的内容时,需要先链接才可以使用
-p: 开放一个端口或一组端口
-v : 容器挂载物理机, 通过-v 我们可以将容器中产生的数据共享到物理机上,避免容器被跳转,删除后数据丢失的问题, 如mysql就最需要这样的, 格式: -v 主机目录: 容器目录
docker 容器操作
docker start :启动一个或多少已经被停止的容器
docker stop :停止一个运行中的容器
docker restart :重启容器
docker rm -f 删除容器