1.docker定义
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,Docker则可以称为构建一次,到处运行。
2.docker定义安装
win7、win8 等需要利用 docker toolbox 来安装,国内可以使用阿里云的镜像来下载,下载地址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/
注:安装路径不可带有中文
cmd输入docker-machine,查看是否安装成功
3.创建docker machine虚拟机
点击Git Bash,输入 notepad .bash_profile 创建和打开.bash_profile 配置文件;
然后,在空白处输入镜像安装路径
export MACHINE_STORAGE_PATH='E:docker'
保存并关闭后,在E盘创建名为docker的文件夹,在其下创建名为cache的文件夹,将安装文件下的boot2docker.iso拷贝到该文件夹;
在Git Bash中输入更改路径命令,使用docker的时候,会需要从docker的网站下载镜像文件,此处使用阿里云的加速器;
阿里云开发者平台:https://dev.aliyun.com/search.html
复制方框中的代码,然后修改为如下(根据自己盘符修改):
现在就可以在Git Bash中运行了:
docker-machine -s "E:docker" create --engine-registry-mirror=https://4g2xbfwh.mirror.aliyuncs.com -d virtualbox default
注:如果开启了电脑自带的虚拟机:Hyper-V,需要关闭,否则在安装时会报错,提示你禁用Hyper-V;查询是否禁用:
虚拟机中出现如下界面:
4.linux风格的Docker环境
docker-machine ls 查看状态
打开Docker Quickstart Terminal或者Git Bash,然后执行下面的命令:
docker-machine start
来启动docker machine。
遇到问题1:VT-x/AMD-V 硬件加速在您的系统中不可用。您的 64-位虚拟机将无法检测到 64-位处理器,从而无法启动。
处理步骤:
1.重启电脑按F2 进入BIOS,找到CPU Configuration> Intel Virtualization Technology,设置为Enabled 。
2 F10.保存退出,重启电脑,再次启动虚拟机。
3 一切正常了。
在虚拟机上查看ip地址
ifconfig (命令)
然后ping(本地的ip地址)(结束ctrl+c)
ping (虚拟机上的ip地址)
遇到问题2:双击 Docker Quickstart Terminal 之后提示找不到可执行的 .exe 文件
右键Docker Quickstart Terminal 属性,发现目标exe路径不对
处理步骤:
可以将本地git的bash.exe路径复制并配置 Docker Quickstart Terminal的“属性”--》“目标” 处;
然后再双击 Docker Quickstart Terminal就可以直接运行了;
5.将虚拟机中的默认用户docker切换至root用户
sudo -i
6.编写Dockerfile文件
# 第一行必须指定基础容器,建议使用aipln类型的小容器 FROM openjdk:8-jdk-alpine # 维护者信息(可选) MAINTAINER cjq 978491323@qq.com # LABEL (可选) 标签信息(自定义信息,多标签放一行) LABEL app.maintainer=cjq LABEL app.version="1.0" app.host='cjq' description="docker镜像构建测试" # ENV (可选)环境变量(指定一个环境变量,会被后续 RUN 指令使用,并在容器运行时保持 #ENV JAVA_HOME /usr/bin #ENV PATH /usr/local/postgres-$PG_MAJOR/bin:$PATH # USER (可选) 指定运行容器时的用户名或 UID,后续的 RUN 也会使用指定用户,前面的RUN 不受影响 # RUN groupadd -r postgres && useradd -r -g postgres postgres # USER postgres RUN mkdir /cjq # WORKDIT 后续的 RUN、CMD、ENTRYPOINT 指令配置容器内的工作目录 WORKDIR /cjq # ADD/COPY 将外部文件copy到容器中。区别是ADD可以使用URL,还可以是tar # COPY只能使用dockerfile所在目录 # ADD <src> <dest> # COPY <src> <dest> COPY /cjq.jar /cjq/cjq.jar # RUN 镜像的操作指令 # RUN <command> [“executable”, “param1”, “param2”]。 #RUN echo “deb http://archive.ubuntu.com/ubuntu/ raring main universe” >> /etc/apt/sources.list #RUN apt-get update && apt-get install -y nginx #RUN mkdir /home/cjq #RUN echo “ daemon off;” >> /etc/nginx/nginx.conf EXPOSE 22 80 8443 8080 #CMD ["java","-jar","/cjq.jar"] # EXPOSE 容器启动后需要暴露的端口 # VOLUME 本地或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等。 #VOLUME ["/tmp"] #VOLUME ["/tmp", "/other/path/"] # ENTRYPOINT 容器启动后执行命令,不会被docker run提供的参数覆盖,只能有一个ENTRYPOINT, # 多个ENTRYPOINT,以最后一个为准 #ENTRYPOINT [“executable”, “param1”, “param2”] #ENTRYPOINT command param param2 #ENTRYPOINT echo "hello-world" ENTRYPOINT ["java","-jar","cjq.jar"] # 容器启动时执行指令,每个 Dockerfile 只能有一条 CMD 命令 #CMD [“executable”, “param1”, “param2”] 使用 exec 执行,推荐方式。 #CMD command param1 param2 在 /bin/sh 中执行,提供给需要交互的应用。 #CMD [“param1”, “param2”] 提供给 ENTRYPOINT 的默认参数。 #CMD /usr/sbin/nginx # ONBUILD 配置当所创建的镜像作为其他新创建镜像的基础镜像时,所执行的操作指令。例如,Dockerfile 使用如下的内容创建了镜像 image-A。-- 很少使用 # ONBUILD ADD . /app/src # ONBUILD RUN /usr/local/bin/python-build –dir /app/src
介绍一下:
- FROM :表示使用 Jdk8 环境 为基础镜像,如果镜像不是本地的会从 DockerHub 进行下载
- MAINTAINER :指定维护者的信息
- VOLUME :VOLUME 指向了一个
/tmp
的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp
作为工作目录。这个命令的效果是:在宿主机的/var/lib/docker
目录下创建一个临时文件并把它链接到容器中的/tmp
目录 - ADD :拷贝文件并且重命名(前面是上传jar包的名字,后面是重命名)
- RUN :每条run指令在当前基础镜像执行,并且提交新镜像
- ENTRYPOINT :为了缩短 Tomcat 的启动时间,添加
java.security.egd
的系统属性指向/dev/urandom
作为 ENTRYPOINT
7.创建docker容器
注意:后面末尾有一个空格和一个“.”,cjq是创建的镜像的名字,“.”表示当前目录
docker build -t cjq .
8.查看生成的容器
docker images
9.创建容器并运行jar包
docker run -d -p 8080:8080 --name cjq cjq
-d代表后台运行
-p 8082:8082 端口映射,后一个8082是镜像的端口
第一个lost_and_found代表是给容器的名字
第二个lost_and_found是上面创建镜像的名字
[root@VM_0_15_centos springboot]# docker run -d -p 8080:8080 --name lost_and_found lost_and_found
10.查看镜像测试
[root@VM_0_15_centos springboot]# docker ps -a
访问项目通过ip地址:端口号访问成功~
赠以上linux docker操作文档一份
1、解压 tar -xvf docker-18.06.1-ce.tgz 2、将解压出来的docker文件内容移动到 /usr/bin/ 目录下 cp docker/* /usr/bin/ 3、将docker注册为service vim /etc/systemd/system/docker.service 将下列配置加到docker.service中并保存 [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target firewalld.service Wants=network-online.target [Service] Type=notify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for containers run by docker ExecStart=/usr/bin/dockerd ExecReload=/bin/kill -s HUP $MAINPID # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity # Uncomment TasksMax if your systemd version supports it. # Only systemd 226 and above support this version. #TasksMax=infinity TimeoutStartSec=0 # set delegate yes so that systemd does not reset the cgroups of docker containers Delegate=yes # kill only the docker process, not all processes in the cgroup KillMode=process # restart the docker process if it exits prematurely Restart=on-failure StartLimitBurst=3 StartLimitInterval=60s [Install] WantedBy=multi-user.target 4、启动 chmod +x /etc/systemd/system/docker.service #添加文件权限并启动docker systemctl daemon-reload #重载unit配置文件 systemctl start docker #启动Docker systemctl enable docker.service #设置开机自启 5、验证 systemctl status docker #查看Docker状态 docker -v #查看Docker版本 6.创建Dockerfile文件(创建镜像必需) 7.通过Dockerfile创建镜像 命令中的lost_and_found是镜像名的意思,此行命令最后有一个点,表示使用当前上下文中的 Dockerfile 文件 [root@VM_0_15_centos springboot]# docker build -t lost_and_found . 运行命令后,看见 Successfully built 3cc4e76442c7则代表创建镜像成功。 8.查看docker镜像 [root@VM_0_15_centos springboot]# docker images 9.运行jar包 -d代表后台运行 -p 8082:8082 端口映射,后一个8082是镜像的端口 第一个lost_and_found代表是给容器的名字 第二个lost_and_found是上面创建镜像的名字 [root@VM_0_15_centos springboot]# docker run -d -p 8080:8080 --name lost_and_found lost_and_found 10.查看容器 [root@VM_0_15_centos springboot]# docker ps -a 访问项目通过ip地址:端口号访问成功~ 11.停止所有镜像 docker stop $(docker ps -a -q) 启动镜像: docker start 镜像id 12.删除所有镜像 docker rm $(docker ps -a -q) 13.查看日志 docker logs --tail 300 -f cjq 14.重复启动 docker run -d --restart=always -p 8080:8080 --name cjq cjq
docker-compose命令的使用
网上下载docker-compose-Linux-x86_64
将docker-compose-Linux-x86_64重命名为docker-compose
上传文件docker-compose 到/usr/local/bin目录下
修改权限
命令:
chmod +x /usr/local/bin/docker-compose
查看docker-compose版本:docker-compose version
在docker-compose.yml所在文件夹目录下运行docker-compose up -d 启动容器 可启动多个image 类似于多次Dockerfile配置文件
附录:docker-compose.yml文件
docker进入容器和退出容器
进入:docker exec -it 容器id /bin/bash
退出:ctrl+d