安装docker (虚拟机) :
环境准备
1.查看IP
ip a s
2.解决无IP问题
1> 将连接方式改为: 桥接模式
2> 修改 /etc/sysconfig/network-scripts ifcfg-eth0或者文件ifcfg-ens33 的ONBOOT=yes
3> systemctl restart network
3.安装rz lz
yum -y install lrzsz
docker安装 :
1.检验是否已安装docker
yum list installed | grep docker
2.安装docker
yum -y install docker
-y表示不询问安装,直到安装成功,安装完后再次查看安装列表
3>启动docker :
systemctl start docker
4> 查看docker服务状态 :
systemctl status docker
5> 设置开机启动 :
systemctl enable docker.service
docker打包JDK基础镜像 :
1> 下载基础镜像 :
docker pull centos:7.2.1511
2> 下载JDK
jdk-8u171-linux-x64.tar.gz
3> 创建 Dockerfile 文件:
FROM centos:7.2.1511
RUN mkdir /usr/java
RUN mkdir /usr/java/jdk1.8.0_171
COPY ./jdk1.8.0_171/ /usr/java/jdk1.8.0_171
ENV JAVA_HOME=/usr/java/jdk1.8.0_171
ENV CLASS_PATH=.:$JAVA_HOME/lib
ENV PATH=$PATH:$JAVA_HOME/bin
4> 解压包与3中的Dockerfile文件同目录
tar -zxvf jdk-8u171-linux-x64.tar.gz
5> 打包镜像
docker build -t jdk8:base . // jdk8:base 代表 REPOSITORY=jdk8 TAG=base
6> 查看镜像 :
docker images
7> 进入镜像并查看JDK是否安装成功 :
docker run -ti --entrypoint=bash jdk8:base
基于JDK镜像包打包项目 :
1> 创建Dockerfile文件:
FROM jdk8:base[JDK镜像]
COPY ./项目名.jar[服务器jar包路径] /项目名.jar[镜像jar包路径]
ENV JAVA_OPTS=""
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN sh -c echo 'Asia/Shanghai' >/etc/timezone
ENTRYPOINT [ "sh", "-c", "java -Dfile.encoding=utf-8 $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /项目名.jar" ]
2> 上传项目包到Dockerfile目录
3> 打包镜像 :
docker build -t REPOSITORY:TAG [project:web]
4> 运行镜像 :
docker run -d -v /local:/docker --name redistest -p 8080:8080 REPOSITORY:TAG
/local[本地路径]:/docker // 将容器日志挂载到宿主机
5> 权限问题(permission denied): 三种方案
方案1>
docker run -d –privileged=true container
运行是增加**–privileged=true**特权参数
方案2>
关闭SElinux功能 : setenforce 0
方案3>
添加selinux规则,改变要挂载的目录的安全性文本
在主机中修改/soft目录的安全性文档
chcon -Rt svirt_sandbox_file_t /soft
ll
docker一些基本命令 :
镜像类 :
1> 查看镜像 : docker images
2> 拉取镜像 : docker pull REPOSITORY:TAG
3> 查找镜像 : docker search xxx
4> 删除镜像 : docker rmi REPOSITORY:TAG
5> 构建镜像 : docker build -t REPOSITORY:TAG .
6> 运行镜像 : docker run -d -v /app/data/logs/redistest[本地路径]:/app/data/logs/redistest[容器路径] --name redistest -p 8080:8080 REPOSITORY:TAG
-t,--tty : 分配伪TTY,常与-i仪器使用
-i,--interactive : 进入交互模式
--rm : 容器退出时,自动删除容器,与-d选项冲突不可同时使用 --rm
-d,--detach : 后台模式运行容器,并打印容器ID -d
--name string : 设置容器的名称,如果没有就随机生成一个 --name xxx
-m,--memory : 指定内存配额,单位 b,k,m,g --memory=100MB
-P,--publish-all : 自动映射所有对外提供服务的端口 -P
--network string : 容器使用的网络(默认为bridge)
-e,--env list : 设置环境变量
7> 导出镜像 : docker save -o <存储名称> <REPOSITORY:TAG>
8> 导入镜像 : docker load -i <存储名称>
容器类 :
1> 创建容器 : docker create
2> 查看容器 : docker ps
-a : 列出所有容器(包括未运行的容器),默认只列出正在运行的容器
-l : 列出最后一个创建的容器
-q : 仅列出容器ID
-n : 列出最后X个创建的容器
3> 运行容器 : docker run -d -v /app/data/logs/redistest[本地路径]:/app/data/logs/redistest[容器路径] --name redistest -p 8080:8080 REPOSITORY:TAG
4> 停止容器 : docker stop REPOSITORY:TAG
5> 启动容器 : docker start
6> 重启容器 : docker restart
7> 查看容器日志 : docker logs REPOSITORY:TAG
8> 查看容器详细信息 : docker inspect
9> 删除容器 : docker rm REPOSITORY:TAG
安装harbor :
参考 :
https://my.oschina.net/xsh1208/blog/3024544?device=geekTime.android
https://www.linuxidc.com/Linux/2018-01/150358.htm
1> docker-compose -v // 查看是否安装成功
2> 下载harbor http://harbor.orientsoft.cn/
3> 重启 : docker-compose start
4> 查看状态 : docker-compose ps
5> 查看日志 : cd /var/log/harbor
启动失败 : docker-compose.yml 里面 registry 的 commond去掉. 不使用配置文件即可.
6> docker login ip : Error response from daemon: Get https://10.11.51.71/v1/users/: dial tcp 10.11.51.71:443: getsockopt: connection refused
原因 : docker login/pull/push等对registry的操作默认启用https,但这里harbor设置的是采用http。
解决 : 修改docker服务启动参数,在/etc/sysconfig/docker文件中的OPTIONS中增加"–insecure-registry 10.11.51.71" (centos7中默认没有/etc/sysconfig/docker文件,可以手工添加,同步修改启动文件/usr/lib/systemd/system/docker.service调用此参数文件)
需要重启docker服务和docker-compose服务
镜像仓库 :
hosts (127.0.0.1 xxx.harbor.com)
1> tag : docker tag SOURCE_IMAGE[:TAG] xxx.harbor.com/anyunfeng/IMAGE[:TAG] // 打tag
2> push : docker push xxx.harbor.com/anyunfeng/IMAGE[:TAG] // 推送镜像到镜像仓库
3> pull : docker pull // 从镜像仓库拉取镜像