Docker是一个开元的应用容器引擎,基于go语言开发,Docker可以让开发者打包他们的应用已经依赖包,到一个轻量级、可移植的容器中,然后发布到任何流行的系统,
1、Docker可以用来快速交付应用,加快打包的时间,加快测试、发布,缩短开发及运行代码之间的周期
2、复杂环境管理,应用隔离:不同软件运行环境兼容性依赖问题
3、轻量级:对于系统内核来说,一个Docker只是一个进程,一个系统可以运行上千个容器
1、容器与容器之间只是进程的隔离,而虚拟机是完全的资源隔离
2、虚拟机的启动可能需要几分钟的时间,Docker启动时秒级或者更短
3、容器使用宿主操作系统的内核,而虚拟机使用完全独立的内核
其他概念
Docker镜像:Docker Image,每一个镜像都可能依赖一个或多个下层的镜像组成的另一个镜像,AUFS文件系统
Docker仓库:Docker Register,集中存放镜像的地方
Docker容器:Docker Contains,镜像运行后的进程
windows操作系统:https://hub.docker.com/editions/community/docker-ce-desktop-windows
Ubuntu系统安装过程
首先安装依赖:
apt-get -y install apt-transport-https ca-certificates curl software-properties-common
有失败的我们可以先不用关注
安装证书:
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
添加源:add-apt-repository “deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable”
安装Docker:apt -y install docker-ce
安装完成之后,我们使用docker version查看我们安装的docker的信息
基本命令
Docker版本信息:docker version
Docker系统信息:docker info
镜像管理
查看所有镜像:docker images
搜索镜像:docker search busybox
拉取下载:docker pull busybox:latest
导出:docker save busybox > busybox.tar
导入:docker load < busybox.tar
删除:docker rmi busybox.tar
更改镜像名:docker tag busybox:latest busybox:test
查看镜像创建历史:docker history busybox
容器管理
运行容器:docker run -d --name=busybox busybox:latest ping 114.114.114.114
查看运行的容器:docker ps, docker ps -a
查看容器中运行的进程:docker top busybox
查看资源占用:docker stats busybox
容器:docker start/restart/stop/kill busybox
暂停容器:docker pause/unpause busybox
强制删除容器:docker rm -f busybox
执行命令:docker exec -it busybox ls
复制文件:docker cp busybox:/etc/hosts hosts
查看容器日志:docker logs -f busybox
查看容器/镜像的元信息:docker inspect busybox
查看容器内文件结构:docker diff busybox
nginx是一个异步的web服务器,主要提供web服务、反向代理、负载均衡和HTTP缓存功能
运行nginx容器
首先拉取镜像docker pull nginx:1.17.9
运行:docker run -d --name nginx -p 8088:80 nginx:1.17.9
使其在后台运行:
挂在目录:docker run -d --name nginx1 -p 8089:80 -v ${PWD}/html:/usr/share/nginx/html nginx:1.17.9
Testlink是一个基于WEB的测试用例管理系统,主要功能是:测试项目管理、产品需求管理、测试用例管理、测试计划管理、测试用例的创建、管理和执行,并且还提供了统计的功能
部署数据库
容器网络:docker network create testlink
运行数据库:
docker run -d --name mariadb -e MARIADB_ROOT_PASSWORD=mariadb -e MARIADB_USER=bn_testlink -e MARIADB_PASSWORD=bn_testlink -e MARIADB_DATABASE=bitnami_testlink --net testlink -v ${PWD}/mariadb:/bitnami bitnami/mariadb:10.3.22
部署Testlink
首先运行Testlink:
docker run -d -p 80:80 -p 443:443 --name testlink -e TESTLINK_DATABASE_USER=bn_testlink -e TESTLINK_DATABASE_PASSWORD=bn_testlink -e TESTLINK_DATABASE_NAME=bitnami_testlink --net testlink -v ${PWD}/testlink:/bitnami bitnami/testlink:1.9.20
默认用户名:user,默认密码:bitnami
jenkins是开源CI&CD软件领导者,提供持续集成和持续交付服务,有超过1000个插件来支持构建、部署、自动化,满足任何项目的需要
部署jenkins
Docker hub:https://hub.docker.com/r/jenkins/jenkins/
运行:docker run -d --name=jenkins -p 8080:8080 jenkins/jenkins
查看默认密码:docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
可以使用log命令查看相关的日志
挂载目录:chmod 777 jenkins
运行:docker run --name jenkins -d -p 8080:8080 -p 50000:50000 -v ${[PWD}/jenkins:/var/jenkins_home jenkins/jenkins
Docker-compose简介
Docker-compose是用于定义和运行多容器的Docker应用程序工具,通过Compose,可以使用YAML文件来配置应用程序的服务
Compose的使用一般分为三步:
1、使用Dockerfile定义应用程序的环境,以便可以在任何地方复制它
2、在docker-compose.yml中定义组成应用程序的服务,以便他们可以在隔离的环境中一起运行
3、运行docker-compose up,然后,Compose启动并运行整个应用程序
Docker-compose安装
macOS\Windows系统使用的Docker Desktop默认已经安装
linux系统:https://github.com/docker/compose/releases
curl “https://github.com/docker/compose/releases/download/1.25.4/docker-compose-4(uname -m)” -o /usr/local/bin/docker-compose
更改权限:chmod +x /usr/local/bin/docker-compose
查看版本:docker-compose version
Docker-compose常用命令
查看配置:docker-compose config
后台启动:docker-compose up -d
构建镜像:docker-compose build
下载镜像:docker-compose pull
运行的:docker-compose ps
进程:docker-compose top
启动:docker-compose start
停止:docker-compose stop
https://hub.docker.com/_/registry
Docker registry 是存储Docker image的仓库,运行push pull search时,是通过Docker daemon与docker registry通信。有时候使用Docker Hub这样的公共仓库可能不太方便,我么不能可以通过registry创建一个本地仓库
运行registry
docker run -d -p 5000:5000 -v /registry:/var/lib/registry --restart always --name registry registry:2.7.1
Dockerfile是由一系列指令和参数构成的脚本,一个Dockerfile里面包含了构建整个镜像的完整命令,通过docker build执行Dockerfile中的一系列指令自动构建镜像
常用的指令:
FROM:基础镜像,FROM命令必须是Dockerfile的首个命令
LABEL:为镜像生成元数据标签信息
USER:指定运行容器时的用户名或UID,后续RUN也会使用指定用户
RUN:Docker命令的核心部分,它接受命令作为参数并用于创建镜像,每条run命令在当前镜像基础上执行,并且会提交一个新镜像层
WORKDIR:设置CMD指明的命令运行目录
ENV:容器启动的环境变量
ARG:构建环境的环境变量
COPY:复制文件
CMD:容器运行时执行的默认命令
ENTRYPOINT:指定容器的”入口“
HEALTHCHECK:容器健康状态检查
在日常的工作中,常常需要自己制作自己项目的镜像,一般通过以下两种方式制作镜像:Docker commit, Dockerfile
Docker commit
一般用作从一个运行状态的容器来创建一个新的镜像,定制镜像应该使用Dockerfile来完成。默认commit镜像,对外不可解释,不方便排查问题,可维护性差;
docker commit容器名,新镜像名:tag
Docker build
忽略文件:.dockerignore
指定文件:docker build -f
添加标签:docker build -t
不使用缓存:docker build --no-cache
构建时变量:docker build --build-arg(ARG指定变量)