Docker入门总结,过来康康吧

前一段时间自学了Docker,现在做个总结,方便日后查阅

Docker是一个很强大的容器,它很像虚拟机,但不是虚拟机,它可以很快的用来创建出多个虚拟环境,不需要为环境分配网卡、内存、硬盘等,每个环境之间互不影响(沙箱机制),占用很小的内存,可以创建说是秒级的。

要掌握的核心概念

  • 容器
  • 镜像
  • 仓库
    它们之间的关系大概是这样的
    Docker入门总结,过来康康吧_第1张图片
    有了这套docker环境,我们就可以在容器上面愉快的安装部署我们的应用服务了。
  1. Docker服务启动
		a.配置镜像加速(由于从公网获取资源比较慢,需要配置镜像加速器)修改daemon.json配置文件,填写自己的加速器地址
		{
		    "registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]
		}
		通知systemd重载此配置文件
		$ systemctl daemon-reload
		b.重启docker服务
		$ sudo service docker restart
		c.查看docker运行状态
		$ sudo service docker status (should see active (running))
		$ sudo docker run hello-world
  1. Docker 安装MySql
 		a.安装拉取MySQL 镜像
		docker pull mysql:5.7
		b.运行 mysql 容器
		docker run --restart=always --privileged=true --name mysql -p 3306:3306 -e
		MYSQL_ROOT_PASSWORD=root -d mysql:5.7 --lower_case_table_names=1
		c.进入mysql命令行
		docker exec -it mysql bash //mysql是启动的服务name
		d.登录
		mysql -uroot -proot
  1. Docker 安装Redis
		a.安装拉取 redis 镜像,拉取redis镜像,未指定tag信息,默认将拉取latest的版本
		docker pull redis
		b查看所有镜像
		docker image 
		c.创建容器,运行 redis 容器,首先从本地镜像创建容器,本地没有则从公有仓库获取镜像,从该镜像创建
		docker run -d -p 6380:6379  --name myredis redis 
		d.查看所有容器
		docker container ls
		docker ps -a
		进入redis命令行
		docker exec -it myredis bash

公有中间件、数据库等可以从公网docker-hub上拉取,web应用则需要通过dockerfile文件的形式创建

附加从网上摘的一些:
镜像操作
查找镜像:
搜索docker hub网站镜像的详细信息
docker search 关键词
下载镜像:
Tag表示版本,有些镜像的版本显示latest,为最新版本
docker pull 镜像名:TAG
查看镜像:
#查看本地所有镜像
docker images
删除镜像:
删除指定本地镜像
docker rmi -f 镜像ID或者镜像名:TAG
-f 表示强制删除
获取元信息:
#获取镜像的元信息,详细信息
docker inspect 镜像ID或者镜像名:TAG

容器操作
运行:
docker run --name 容器名 -i -t -p 主机端口:容器端口 -d -v 主机目录:容器目录:ro 镜像TD或镜像名:TAG
–name 指定容器名,可自定义,不指定自动命名
-i 以交互模式运行容器
-t 分配一个伪终端,即命令行,通常组合来使用
-p 指定映射端口,将主机端口映射到容器内的端口
-d 后台运行容器
-v 指定挂载主机目录到容器目录,默认为rw读写模式,ro表示只读
容器列表:
docker ps 查看正在运行的容器
docker ps -a -q
-a 查看所有容器(运行中、未运行)
-q 只查看容器的ID
启动容器:
docker start 容器ID或容器名
停止容器:
docker stop 容器ID或容器名

最后总结
PS:最好在Linux环境玩,Windows的安装体验太差,不习惯,官方对Linux版本的支持还是很全面的。
零零散散学了将近一周的时间,本来最初的构想是用docker来取代虚拟机,这样也减少了占用本地的磁盘和内存空间,方便本地微服务应用部署调试。镜像获取也真的是很快,结果发现上手操作,到真正用起来还是比较复杂的,部署应用还需要会写dockerfile,项目中目前也没用到,后来就放弃了。

你可能感兴趣的:(版本控制,集成,运维,部署,docker)