公司最近准备将java 环境放在docker容器上跑,方便以后做环境的迁移。趁着这次机会有时间来好好的学一一下docker的使用。下面是整理的一份文档,分享出来,供大家使用。
一、虚拟机Docker服务安装
1.1Linux(Ubuntu)
Ubuntu系统安装,要求系统内核版本高于3.10,内核版本查看uname -r
;
1.1.1获取最新版本的 Docker 安装包
#拉取安装包
wget -qO- https://get.docker.com/ | sh
#启动后台服务
sudo service docker start
#测试运行hello-world
docker run hello-world
1.1.2 配置镜像加速
#打开
/etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
详细安装细节:官网安装教程
1.2Linux(Centos 7+)
1.2.1 卸载旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
1.2.2 使用存储库安装
#安装所需要的包
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
# 设置存储库
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
* 这里最好使用阿里云替换
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#更新yum缓存
sudo yum makecache fast
#安装docekr-ce版本
sudo yum -y install docker-ce
#启动docker服务
sudo systemctl start docker
#验证
sudo docker run hello-world
#配置加速镜像
/etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
详细安装细节:官网安装教程
注:win、mac安装参照官网,有图形化工具更易操作这里不一一介绍
二、镜像获取&容器的启动使用
前提:获取自己的镜像加速地址,在阿里云开发者平台("https://cr.console.aliyun.com/cn-hangzhou/mirrors")
,注册账号,会得到自己的镜像加速地址,之后可以通阿里云的镜像操作管理镜像。
2.1镜像拉取
在安装完成docker服务后,需要哪些软件或者环境可以直接在docker hub上查询("https://hub.docker.com/")
,拉取指定的版本。也可以使用阿里云提供镜像仓库("https://dev.aliyun.com/search.html")
查询获取镜像。
2.1.1镜像常用命令
#镜像查询
docker search [images name]
#镜像获取
docker pull [images name]:[tag]
#镜像查询
docker images
#镜像删除
docker rmi images[id&name]
#强制删除
docker rmi -f iamges[id& name]
#启动镜像
docker run [options] images
optipns 可变参数:
--name=“”:启动容器的名字
-d :后台启动,交互页面
-i :以交互式启动容器
-t :分配伪终端(一般-it是同时使用的)
-p :为容器指定端口映射
-P :随机分配端口
-v :路径映射
2.1.2容器常用命令
#查看正在运行中的容器
docker ps
#查看所有容器
docker ps -a
#查看上n次运行的容器
docker ps -n
#停止容器
docker stop [containerID&name]
#启动容器
docker start [containerID&name]
#删除容器
docker rm [containerid]
#从容器内拷贝文件到宿主机
docker cp 容器ID:容器内路径下文件地址 宿主机路径文件夹
#从宿主机拷贝文件到容器中
docker cp 宿主机文件地址 容器ID:容器内路径文件夹
注意容器退出的方式:
①. exit 容器停止
②. ctrl+p+q 容器退出但不停止
进入运行中容器的方式:
①.attach 直接进入容器启动命令的终端,不会重新启动新的进程
②.exec 在容器中打开终端,并且可以启动新的进程
2.1.3容器生成镜像
在完成自定义镜像后,方便后续直接使用,可以使用镜像生成的方式将其保存至阿里云镜像仓库(或者官方docker hub)。后续如果使用可以直接拉取,运行。
#镜像生成
docker commit [options] containerid 命名空间/创建的镜像名:[标签名]
options 可变参数:
-a :作者
-m :描述
#镜像查看
docker iamges 查看时候有自己提交的镜像
三、阿里云容器服务的使用
镜像生成完成后,可以提交到公共库中,方便共享与大家的使用。这里介绍的方法是通过阿里云的镜像仓库服务,理论同github使用相同。
3.1.1 镜像仓库创建
创建自己的仓库镜像仓库链接
创建完成后会有操作步骤的提示:
例子:
#登录阿里云Docker Registry
$ sudo docker login --username=fw19940314 registry.cn-hangzhou.aliyuncs.com
#将自己的本地镜像推送到镜像仓库中
$ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/shishudev/dev:[镜像版本号]
$ sudo docker push registry.cn-hangzhou.aliyuncs.com/shishudev/dev:[镜像版本号]
#拉取镜像
$ sudo docker pull registry.cn-hangzhou.aliyuncs.com/shishudev/dev:[镜像版本号]
四、服务器环境的搭建
javaweb开发环境:registry.cn-hangzhou.aliyuncs.com/shishudev/dev:1.1.1
最新版本1.1.1,镜像信息centos7内置jdk+tomcat
拉取完成后启动镜像,使配置生效:source /etc/profile
启动命令:docker run -it --name dev -p 8080:8080 -v 宿主机目录:容器目录 imagesid
注:tomcat webapp挂载地址 /usr/local/tomcat/webapps
,log 日志挂载地址/usr/local/tomcat/logs
mysql 开发环境
拉取docker pull mysql:5.6
运行及数据持久化docker run -p 3306:3306 --name mysql -v 宿主机配置文件地址:/etc/mysql/conf.d -v 宿主机log文件地址:/logs -v 宿主机data地址:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.6
交互 docker exec -it containerid /bin/bash
数据备份docker exec containerid sh -c ' exec mysqldump --all-databases -uroot -p"root" > /宿主机地址/xxx.sql