docker-简单说明

安装docker (虚拟机) :

环境准备

1.查看IPjava

ip a slinux

2.解决无IP问题android

1> 将链接方式改成: 桥接模式
2> 修改 /etc/sysconfig/network-scripts ifcfg-eth0或者文件ifcfg-ens33 的ONBOOT=yes
3> systemctl restart networkweb

3.安装rz lzredis

yum -y install lrzszdocker

docker安装 :

1.检验是否已安装dockercentos

yum list installed | grep docker安全

2.安装dockerbash

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一些基本命令 :

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 // 从镜像仓库拉取镜像