docker的优点:docker可以用来快速交付应用、复杂环境管理,应用隔离、轻量级
docker与虚拟机的区别
1、容器与容器之间只是进程的隔离,而虚拟机是完全的资源隔离
2、虚拟机的启动可能需要分钟级别,docker启动是秒级甚至更短
3、容器使用宿主操作系统的内核,而虚拟机使用完全独立的内核
CentOS下docker的安装与配置
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
5、检查docker版本:docker version
6、设置docker为开机自启动:systemctl enable docker
docker常用命令
基本命令
docker版本信息查看:docker version
docker系统信息:docker info
镜像管理
查看所有镜像:docker images
搜索镜像:docker search +镜像名
拉取下载: docker pull nginx:latest
导出:docker save nginx > nginx.tar
导入:docker load < nginx.tar
删除:docker rmi nginx:latest
更改镜像名: docker tag nginx:latest nginx:test
查看镜像创建历史:docker history nginx
容器管理
运行容器:docker run -d --name busybox busybox:latest ping 114.114.114.114
查看运行的容器:docker ps, docker ps -a
查看容器中运行的进程:docker top nginx
查看资源占用:docker stats nginx
容器:docker start/restart/stop/kill nginx
暂停容器:docker pause/unpause nginx
强制删除容器:docker rm -f nginx
执行命令:docker exec -it nginx ls
复制文件:docker cp busybox:/etc/hosts host
查看容器日志:docker logs -f nginx
查看容器内文件结构: docker diff nginx
docker下安装常用工具
运行Nginx容器
1、拉取:docker pull nginx:1.17.9
2、运行:docker run -d --name nginx -p 8080:80 nginx:1.17.9
3、挂载目录:docker run -d --name nginx1 -p 8089:80 -v ${PWD}/html:/usr/share/nginx/html nginx:1.17.9
搭建MySQL数据库
1、docker run -d -p 3306:3306 --name mysql --privileged=true -e MYSQL_ROOT_PASSWORD=1234 mysql:8.0.26
Testlink部署
1、部署容器网络: docker network create testlink
2、运行数据库: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 bitname/mariadb:10.3.22
3、运行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
部署Jenkins
1、docker hub: https://hub.docker.com/r/jenkins/jenkins
2、运行:docker run -d --name=jenkins -p 8080:8080 jenkins/jenkins
3、查看默认密码:docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
4、挂载目录:chmod 777 jenkins
运行:dockerr run --name jenkins -d -p 8080:8080 -p 50000:50000 -v ${PWD}/jenkins:/var/jenkins_home jenkins/jenkins
部署jira
1、部署数据库:docker run -d -p 3306:3306 --name mysql_jira --privileged=true -u root -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
2、docker run -it --link mysql_jira:mysql --rm mysql sh -c 'exec mysql -h "$MYSQL_PORT_3306_TCP_ADDR" -p "$MYSQL_PORT_3306_TCP_PORT
" -uroot -p "$MYSQL_ENV_MYSQL_ROOT_PASSWORD" '
create database jira default character set utf8 collate utf8_bin
create user 'jira '@'%' identified by 'jira'; grant all on *.* TO 'jira'@'%' with grant option;
alter user 'jira '@'%' identified with mysql_native_password by 'jira';
3、 修改MySQL事务隔离级别
set global transaction isolation level read committed;
set session transaction level read committed;
Dockerfile常用指令
FROM:基础镜像,FROM命令必须是Dockerfile的首个命令
LABEL:为镜像生成元数据标签信息
USER:指定运行容器时的用户名或UI的,后续RUN也会使用指定用户
RUN:RUN命令是Dockerfile执行命令的核心部分,它接受命令作为参数并用于创建艰辛,每条RUN命令在当前基础镜像上执行,并且会提交一个新镜像层
WORKDIR:设置cmd指明的命令的运行目录,为后续的RUN、CMD、ENTRYPOINT、ADD指令配置目录
ENV:容器启动的环境变量
AGR:构建环境的环境变量
COPY:复制文件
ENTRYPOINT:指定容器的”入口“
HEALTHCHECK:容器监控状态检查
docker build
忽略文件:.dockerignore
指定文件:docker build -f
添加标签:docker build -t
不使用缓存:docker build --no-cache
构建时变量:docker build --build-arg
ARG指令变量