Docker起源于2013年。
Docker是一个开源的应用容器引擎,基于Go语言开发,Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的系统。
1、可以用来快速交付应用:加快打包时间,加快测试,加快发布,缩短开发及运行代码之间的周期。
2、复杂环境管理,应用隔离:不同软件运行环境兼容依赖问题,开发环境/测试环境/线上环境保持一致。
3、轻量级:对于系统内核来说,一个docker只是一个进程,一个系统可以运行上千个容器。
1、容器与容器之间只是进程的隔离,而虚拟机是完全的资源隔离。
2、虚拟机的启动可能需要分钟级别,Docker启动是秒级或者更短。
3、容器使用宿主操作系统的内核,而虚拟机使用完全独立的内核。
图解:
概念:
1、Docker镜像:Docker Images,每一个镜像都可能依赖一个或多个下层的镜像组成的另一个镜像,AUFS文件系统。
2、Docker仓库:Docker Registry,集中存放镜像的地方。
3、Docker容器:Docker Containers,镜像运行后的进程。
下载地址: https://hub.docker.com/editions/community/docker-ce-desktop-windows
注意:不支持Windows 10家庭版操作系统。
更新apt:sudo apt-get update
1、安装依赖:
apt-get -y install apt-transport-https ca-certificates curl software-properties-common
2、安装证书:
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
3、添加源:
add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
4、安装docker:
apt -y install docker-ce
1、安装依赖:
yum install -y yum-utils device-mapper-persistent-data lvm2
2、添加源:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3、安装Docker:
yum -y install docker-ce
4、启动Docker:
systemctl start docker
查看运行的容器:docker ps
查看Docker版本:docker version
Docker 设置开机自启动:systemctl enable docker
阿里云容器镜像服务:https://cr.console.aliyun.com/
需要注册阿里云账号
根据操作文档的提示修改镜像地址即可。
Docker版本信息:docker version
Docker系统信息:docker info
说明: mirror为镜像名称,需要替换
查看所有镜像:docker images
搜索镜像:docker search mirror
拉取下载最新版本镜像:docker pull mirror:latest
导出镜像:docker save mirror> mirror.tar
导入镜像:docker load < mirror.tar
删除镜像:docker rmi mirror:latest
更改镜像名:docker tag mirror:latest mirror:test
查看镜像创建历史:docker history mirror
查看日志:docker logs
说明: container为容器名称,需要替换
运行容器:docker run -d --name=container container:latest ping 114.114.114.114
查看运行的容器:docker ps
查看所有容器:docker ps -a
查看容器中运行的进程:docker top container
查看容器资源占用:docker stats container
容器启动/重启/停止/关闭:docker start/restart/stop/kill container
暂停容器:docker pause/unpause container
强制删除容器:docker rm -f container
执行命令:docker exec -it container ls
复制文件:docker cp container: /etc/hosts hosts
查看容器日志:docker logs -f container
查看容器的元信息:docker inspect container
格式化输出:docker inspect -f '{{.Id}}' container
Inspect语法参考
查看容器内文件结构:docker diff container
Nginx(发音同engine x)是一个异步的Web服务器,主要提供Web服务、反向代理、负载均衡和HTTP缓存功能。由Igor Sysoev创建于2004年,使用C语言开发。
Nginx镜像库地址:https://hub.docker.com/_/nginx?tab=tags
默认安装最新版:docker pull nginx:latest
选择版本安装,加上版本号:docker pull nginx:1.17.10
启动并设置映射的端口号:docker run -p 80:80 nginx
启动后就可以访问了ヽ( ̄▽ ̄)ノ
注意: 这里虽然启动了,但是linux中一旦退出,服务就停止了。所以,我们需要将它设置为后台启动。
这里增加-d参数(-d 后台运行),(–name) 再将它重新命名一下:
docker run -d --name nginx -p 80:80 nginx:1.17.10
停止容器(因为前面已经重命名为nginx了,这里就不用加版本号了):
docker stop nginx
停止后可直接删除:
docker rm nginx
容器还在运行时删除,需增加 -f 参数:
docker rm -f nginx
增加 -v 参数,${PWD}表示linux下的当前目录:
docker run -d --name nginx -p 80:80 -v ${PWD}/nginx/html:/usr/share/nginx/html nginx
挂载完成后,我们来写一个html页面来运行它吧,\(>0<)/ 加油!
进入挂载的目录中:cd nginx/html
编辑一个页面:vim index.html
Testlink是基于WEB的测试用例管理系统,主要功能是:测试项目管理、产品需求管理、测试用例管理、测试计划管理、测试用例的创建、管理和执行,并且还提供了统计功能。
1、创建容器网络
这里先创建一个testlink的容器网络:docker network create testlink
查看容器网络:docker network ls
可以看到创建出的网络采用了桥接模式。
2、启动数据库
完整命令:
docker run -d --name mariadb -p 3306:3306 --user root -e MARIADB_ROOT_PASSWORD=mariadb -e MARIADB_USER=admin -e MARIADB_PASSWORD=123456 -e MARIADB_DATABASE=testlink_db --net testlink -v ${PWD}/mariadb:/bitnami bitnami/mariadb:10.3.22
命令解析:
docker run -d:后台运行容器
--name mariadb:容器重新命名为mariadb
-p 3306:3306:指定端口号
--user root:指定为root账户启动
-e :表示参数设置(ENV)
MARIADB_ROOT_PASSWORD:数据库的管理员密码,这里设置为了mariadb
MARIADB_USER:数据库的用户名
MARIADB_PASSWORD:数据库的密码
MARIADB_DATABASE:新建的数据库名称
--net testlink:数据库运行后指定到对应的容器网络,这里指定到testlink网络
-v ${PWD}/mariadb:/bitnami:指定数据文件的存储路径(${PWD}表示当前路径)
bitnami/mariadb:10.3.22:指定下载的数据库版本(运行后会自动下载)
1、运行testlink
完整命令:
docker run -d --user root -p 8080:8080 -p 443:443 --name testlink -e TESTLINK_DATABASE_USER=admin -e TESTLINK_DATABASE_PASSWORD=123456 -e TESTLINK_DATABASE_NAME=testlink_db --net testlink -v ${PWD}/testlink:/bitnami bitnami/testlink:1.9.20
命令解析:
--user root:指定为root用户
-p 8080:8080 -p 443:443:指定两个映射端口,http为8080,https为443,默认端口
--name testlink:重命名为testlink
TESTLINK_DATABASE_USER:指定testlink的数据库用户名(前面部署的数据库)
TESTLINK_DATABASE_PASSWORD:指定testlink的数据库密码(前面部署的数据库)
TESTLINK_DATABASE_NAME:指定testlink的数据库名(前面部署的数据库)
--net testlink:指定容器网络
-v ${PWD}/testlink:/bitnami:数据文件存储路径
常见问题:
端口冲突:
解决办法:
查看所有容器:docker ps -a
删除该容器:docker rm 容器ID,然后重新指定端口号即可。
最后在你的本地输入ip+端口号,就可以访问啦!٩(๑❛ᴗ❛๑)۶!