一. 简介
- Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的linux或windows机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口.
- Docker支持将软件编译成一个镜像,然后配置好镜像中的各个软件,将镜像发布出去,其他使用者可以直接使用这个镜像,运行中的这个镜像称为容器,容器启动是非常快速的.
二. 核心概念
- docker主机(Host) : 安装了docker程序的机器(docker程序直接安装在操作系统上),一个物理或者虚拟的机器用来运行docker守护进程和容器
- docker客户端(client) : 连接docker主机进行操作
- docker仓库(registry) : 用来保存各种打包好的软件镜像
- docker镜像(images) : 软件打包好的镜像,存放在docker仓库中
- docker容器(container) : 镜像启动后的实例称为一个容器,容器是运行的一个或一组应用
三. 安装配置及镜像操作
-
设置仓库
- 卸载原有的旧版docker
sudo apt-get remove docker docker-engine docker.io containerd runc
- 更新apt索引包
sudo apt-get update
- 安装依赖包用于通过HTTPS来获取仓库
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
- 添加docker官方的GPG秘钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 通过搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥
sudo apt-key fingerprint 0EBFCD88
- 设置使用稳定版仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- 卸载原有的旧版docker
-
安装 Docker Engine-Community
- 更新apt索引包
sudo apt-get update
- 安装最新版 Docker Engine-Community
sudo apt-get install docker-ce docker-ce-cli containerd.io
如果想装指定版本,请转到下一步 - 列出仓库中可用版本
apt-cache madison docker-ce
然后使用版本字符串(第二列)安装指定版本sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
- 更新apt索引包
-
常用操作
- 检索: docker search 关键字 eg:docker search mysql
- 拉取: docker pull 镜像名:tag :tag是可选的 不加默认就是latest最新版
- 列表: docker images
- 删除: docker rmi image-id
-
使用阿里云镜像
-
创建阿里云镜像仓库
-
从阿里仓库拉取
sudo docker pull registry.cn-hangzhou.aliyuncs.com/climb-xu/mysql-docker:[镜像版本号]
-
将镜像推送到阿里仓库
- 登录
sudo docker login --username=2271613696@qq.com registry.cn-hangzhou.aliyuncs.com
- 推送
sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/climb-xu/mysql-docker:[镜像版本号]``````sudo docker push registry.cn-hangzhou.aliyuncs.com/climb-xu/mysql-docker:[镜像版本号]
- 如果机器位于阿里云的vpc网络 那么可以使用registry-vpc.cn-hangzhou.aliyuncs.com 作为Registry的域名,速度将得到提升并且将不会损耗公网流量
- 登录
-
四. 容器操作
- 根据镜像创建容器并启动:
docker run --name mytomcat -d -p 8888:8080 tomcat
–name命名(可以不给) -d 后台运行 -p 将主机的8888端口映射到容器的8080端口,不做映射访问不了 - 查看容器列表:
docker ps [-a]
-a参数可以参看所有容器,不加的话查看正在运行的容器 - 停止运行中的容器:
docker stop 容器id
- 启动已有的容器:
docker start 容器id
- 删除容器:
docker rm 容器id
五. docker-compose
docker-compose是一个docker官方的开源项目,用来简化容器的创建,可以根据yml一键创建多个容器
创建docker-compose.yml(不能用其他名字)
eg:
version: '2' #版本 services: mq_node01: image: rmohr/activemq:5.15.9 #镜像 restart: always #重启容器时是否重启服务 container_name: mq_node01 #容器名称 ports: #映射端口 - "61611:61616" - "8161:8161" volumes: #挂载目录 - /dockerData/activemq_cluster/mq_node01/conf:/opt/apache-activemq-5.15.9/conf mq_node02: image: rmohr/activemq:5.15.9 restart: always container_name: mq_node02 ports: - "61612:61616" - "8162:8161" volumes: - /dockerData/activemq_cluster/mq_node02/conf:/opt/apache-activemq-5.15.9/conf mq_node03: image: rmohr/activemq:5.15.9 restart: always container_name: mq_node03 ports: - "61613:61616" - "8163:8161" volumes: - /dockerData/activemq_cluster/mq_node03/conf:/opt/apache-activemq-5.15.9/conf networks: default: external: name: docker-compose-zookeeper_defaul #设置默认的network,不设置的话,默认会自己创建一个
命令:
#查看帮助 docker-compose -h # -f 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定。 docker-compose -f docker-compose.yml up -d #启动所有容器,-d 将会在后台启动并运行所有的容器 docker-compose up -d #停用移除所有容器以及网络相关 docker-compose down #查看服务容器的输出 docker-compose logs #列出项目中目前的所有容器 docker-compose ps #构建(重新构建)项目中的服务容器。服务容器一旦构建后,将会带上一个标记名,例如对于 web 项目中的一个 db 容器,可能是 web_db。可以随时在项目目录下运行 docker-compose build 来重新构建服务 docker-compose build #拉取服务依赖的镜像 docker-compose pull #重启项目中的服务 docker-compose restart #删除所有(停止状态的)服务容器。推荐先执行 docker-compose stop 命令来停止容器。 docker-compose rm #在指定服务上执行一个命令。 docker-compose run ubuntu ping docker.com #设置指定服务运行的容器个数。通过 service=num 的参数来设置数量 docker-compose scale web=3 db=2 #启动已经存在的服务容器。 docker-compose start #停止已经处于运行状态的容器,但不删除它。通过 docker-compose start 可以再次启动这些容器。 docker-compose stop