Docker使用
1. 安装虚拟机:
VMWARE
注册中心:https://hub.docker.com/
Docker 安装:
(1)yum 包更新到最新
sudo yum update
(2)安装需要的软件包, yum-util 提供yum-confifig-manager功能,另外两个是devicemapper驱动依赖的
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
(3)设置yum源为阿里云(配置成功,可以省略该步骤)
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-
ce/linux/centos/docker-ce.repo
(4)安装docker(社区版)
sudo yum install docker-ce
如果报错(记得先尝试安装)
修改配置:
sudo vim /etc/yum.repos.d/docker-ce.repo
通过命令把Q替换为http://mirrors.aliyun.com/docker-ce
命令如下::%s#https://download-stage.docker.com#http://mirrors.aliyun.com/docker-ce#g
再执行docker的安装命令即可安装成功。
(5)安装后查看docker版本
docker -v
2.2 设置ustc的镜像(加速)
ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度
很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。
https://lug.ustc.edu.cn/wiki/mirrors/help/docker
编辑该文件:
在该文件中输入如下内容:
vi /etc/docker/daemon.json
{
“registry-mirrors”: [“https://docker.mirrors.ustc.edu.cn”]
}
启动docker
systemctl start docker
2.3 容器的创建和操作
- 守护式方式创建容器:
docker run -di --name=容器名称 镜像名称:标签
启动容器
docker start 容器名称
进入容器内部
docker exec -it 容器名称 /bin/bash
停止容器
docker stop 容器名称
2.4 目录挂载(创建容器时指定)
docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos4 centos:7
2.4.1 查看IP
查询所有信息
docker inspect
只查询IP
docker inspect --format=’{{.NetworkSettings.IPAddress}}’ mycentos4
2.5 删除容器
#删除镜像
docker rm mycentos4
#删除镜像
docker rmi centos:7
2.6 根据镜像创建MySql
1拉取镜像
2.生成容器
docker run -di --name=tensquare_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 centos/mysql-57-centos7
2.6.1 根据镜像创建TOMCAT
1拉取镜像
2.生成容器
docker run -di --name=mytomcat -p 9000:8080
-v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7
将 war 上传到指定目录即可运行
2.7 根据镜像创建NGINX
1拉取镜像
2.生成容器
docker run -di --name=mynginx -p 80:80 nginx
赋值到指定的目录下
docker cp html mynginx:/usr/share/nginx
2.8 根据镜像创建REDIES
1拉取镜像
2.生成容器
docker run -di --name=myredis -p 6379:6379 redis
客户端链接
redis-cli -h 188.188.3.19
2.9 迁移与备份
容器保存镜像
docker commit mynginx mynginx_i
生成容器
docker run -di --name=mynginx2 -p 81:80 mynginx_i
保存镜像文件
docker save -o mynginx.tar mynginx_i
查看文件
dir 查看 root目录
停止容器
docker stop mynginx2
删除容器
docker rm mynginx2
删除镜像
docker rmi mynginx_i
根据文件恢复镜像
docker load -i mynginx.tar
2.9 Dockerfile生成基本容器(含jdk)
- 创建文件夹: mkdir -p /usr/local/dockerjdk8
- 上传JDK文件并移动到指定的文件夹中:mv jdk-8u171-linux-x64.tar.gz /usr/local/dockerjdk8
- vi Dockerfile
FROM centos:7
MAINTAINER itcast
WORKDIR /usr
RUN mkdir /usr/local/java
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH
J
A
V
A
H
O
M
E
/
b
i
n
/
d
t
.
j
a
r
:
JAVA_HOME/bin/dt.jar:
JAVAHOME/bin/dt.jar:JAVA_HOME/lib/tools.jar:
J
R
E
H
O
M
E
/
l
i
b
:
JRE_HOME/lib:
JREHOME/lib:CLASSPATH
ENV PATH
J
A
V
A
H
O
M
E
/
b
i
n
:
JAVA_HOME/bin:
JAVAHOME/bin:PATH
4.在含有jdk包的目录下运行
docker build -t=‘jdk1.8’ .
5. 生成镜像查看 docker images
3.0 部署私有仓库
- 拉取镜像: docker pull registry
- 启动: docker run -di --name=myregistry -p 5000:5000 registry
- 浏览器查看私有仓库是否安装成功:http://188.188.3.19:5000/v2/_catalog
- 修改配置文件 vi /etc/docker/daemon.json
让docker仓库信任私有仓库
{
“registry-mirrors”: [“https://docker.mirrors.ustc.edu.cn”],
“insecure-registries”:[“188.188.3.19:5000”]
} - 重启服务,让配置生效
systemctl restart docker
3.1 上传镜像到私有仓库
- 设置标签: docker tag jdk1.8 188.188.3.19:5000/jdk1.8
- 如果容器没有启动则启动: docker start registry
- 浏览器查看私有仓库是否含有该镜像:http://188.188.3.19:5000/v2/_catalog
3.2 从私服下载到宿主机
- 修改配置文件 vi /etc/docker/daemon.json, 让docker仓库信任私有仓库
{
“registry-mirrors”: [“https://docker.mirrors.ustc.edu.cn”],
“insecure-registries”:[“188.188.3.19:5000”]
} - docker push 188.188.3.19:5000/jdk1.8
build的时候这样:
docker build -t 188.188.3.19:5000/eapp-corp-project
然后用:
docker push 188.188.3.19:5000/eapp-corp-project
3.2.1 删除私有仓库镜像
//获取镜像id
curl --header “Accept:application/vnd.docker.distribution.manifest.v2+json” -I -XGET http://镜像地址/v2/镜像名称/manifests/镜像版本
curl --header “Accept:application/vnd.docker.distribution.manifest.v2+json” -I -XGET http://188.188.3.19:5000/v2/eapp-corp-project/manifests/1.0.0
删除
curl -I -XDELETE 私有仓库地址/v2/镜像名称/manifests/镜像对应sha256值
curl -I -XDELETE http://188.188.3.19:5000/v2/eapp-corp-project/manifests/389ecbc5556e0c45e2eaa0c4630d7a983a482acef5a9d799684a80e812f19024
3.3 持续集成与容器管理
3.3.1 dockerMaven 的使用
- 让容器支持远程操作
vi /lib/systemd/system/docker.service
在 ExecStart=/usr/bin/dockerd 后面添加配置 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
刷新配置,重启服务:
systemctl daemon-reload
systemctl restart docker
docker start registry(容器名称)
pom.xml 代替 Dockerfile写法
dingding
org.springframework.boot
spring‐boot‐maven‐plugin
<!‐‐ docker的maven插件,官网:
https://github.com/spotify/docker‐maven‐plugin ‐‐>
com.spotify
docker‐maven‐plugin
0.4.13
188.188.3.19:5000/
p
r
o
j
e
c
t
.
a
r
t
i
f
a
c
t
I
d
:
{project.artifactId}:
project.artifactId:{project.version}
jdk1.8
[“java”, “‐jar”,
"/
p
r
o
j
e
c
t
.
b
u
i
l
d
.
f
i
n
a
l
N
a
m
e
.
j
a
r
"
]
<
/
e
n
t
r
y
P
o
i
n
t
>
<
r
e
s
o
u
r
c
e
s
>
<
r
e
s
o
u
r
c
e
>
<
t
a
r
g
e
t
P
a
t
h
>
/
<
/
t
a
r
g
e
t
P
a
t
h
>
<
d
i
r
e
c
t
o
r
y
>
{project.build.finalName}.jar"]</entryPoint> <resources> <resource> <targetPath>/</targetPath> <directory>
project.build.finalName.jar"]</entryPoint><resources><resource><targetPath>/</targetPath><directory>{project.build.directory}
${project.build.finalName}.jar
http://188.188.3.19:2375
在IDEA 的命令提示中 执行语句 :mvn docker:build -DpushImage