docker.md
文章目录
第一章-Docker概述
学习视频-前锋:https://www.bilibili.com/video/BV1sK4y1s7Cj?from=search&seid=8313785717449262117
学习-狂神:https://www.bilibili.com/video/BV1og4y1q7M4?from=search&seid=6062267095260519281
解决的问题:
1本地运行没问题。(环境不一致的问题)
2多用户的操作系统,会相互影响。(比如linux)
3运维成本过高。(每次新服务器都要进行部署)
4学习一门技术,学习安装成本高
1Docker介绍
Docker是一个开源的应用容器引擎;是一个轻量级容器技术;
Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像;
运行中的这个镜像称为容器,容器启动是非常快速的。
-
官网安装参考手册:https://docs.docker.com/install/linux/docker-ce/centos/
-
确定你是CentOS7及以上版本
1 2
[root@192 Desktop]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core)
docker三个重要概念
-
仓库(Repository):仓库可看着一个代码控制中心,用来保存镜像。
-
镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
-
容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
Docker架构
2linux安装docker
yum(安装docker)
若有之前版本需要卸载,sudo yum remove docker \ …省略,copy官网就好。
1下载yum install -y yum-utils 安装yum工具包
2设置国内安装地址(官网是国外地址)yum-config-manager –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3更新yum软件包索引yum makecache fast 4安装Docker CE: yum -y install docker-ce docker-ce-cli containerd.io
5启动docker: systemctl start docker 开启开机自动启动:systemctl enable docker 6测试docker version: docker run hello-world或 docker images
3命令大全
-1常用命令
全部命令:https://www.runoob.com/docker/docker-command-manual.html
命令 | 功能 |
---|---|
docker search xxx[比如nginx] | 搜索 |
docker pull xxx[比如nginx] | 下载 |
docker images | 显示本地镜像 |
docker ps [-a] 参数-a表示显示所有容器 | 显示运行的容器 |
docker stop 容器前几位id/name | 关闭docker容器 |
docker restart xxx[比如nginx] | 重新启动x容器 |
docker rm $(docker ps -a -q) | 删除所有已经停止的容器 |
systemctl status docker | 查看docker进程状态 |
systemctl stop docker | 停止docker进程 |
systemctl start/restart docker | 启动/重启docker进程 |
systemctl enable docker | 开机启动docker |
-2镜像相关命令
指定版本号时候,需要正确的版本号,搜索网址:https://hub.docker.com/
命令 功能 docker images [-q只显示所有id] 显示所有本地镜像 docker search xxx[比如nginx] 搜索镜像 docker pull xxx[比如nginx]
可以指定版本号nginx:13.3下载 docker rmi IMAGEID[需镜像ID]
docker rmi `sdocker images -q` | 卸载本地镜像
卸载本地所有镜像 |docker可以对镜像进行导入导出
-3容器相关命令
镜像相当于java中的class,容器相当于java中的object。
创建容器:docker run 参数 [/bin/bash] 其中的/bin/bash的作用是因为docker后台必须运行一个进程,否则容器就会退出,在这里表示启动容器后启动bash。
|
|
前面一个是宿主机的端口号
|
|
命令 | 功能 |
---|---|
docker run tomcat:7.0.57-jre8 | 创建并启动容器 |
docker ps [-a所有,包含关闭的 -q只显示id] | 查看运行的容器 |
docker stop 容器name/容器id | 停止容器 |
docker start 容器name/id | 启动已创建容器 |
docker rm 容器name/id docker rm $(docker ps -aq) |
删除容器 删除所有容器 ==删除前要stop== |
docker inspect 容器名称 | 查看容器详细信息 |
把宿主文件转到容器内部(不推荐)
docker cp 文件名称 容器id:容器内部路径 比如:docker cp t1.txt fe:/usr/local/tomcat/webapps/
4Docker容器数据卷
-数据卷介绍
Docker容器删除后,在容器中产生的数据也会随之销毁 Docker容器和外部机器可以直接交换文件吗? 容器之间想要进行数据交互?
什么是数据卷
数据卷是宿主机中的一个目录或文件 当容器目录和数据卷目录绑定后,对方的修改会立即同步 一个数据卷可以被多个容器同时挂载 一个容器也可以被挂载多个数据卷
-数据卷配置
创建启动容器时,可以用-v参数设置数据卷
|
|
注意: 1目录必须是绝对路径。 2若目录不存在,会自动创建。 3可以挂载多个数据卷。
$PWD可以表示当前宿主机目录
|
|
-v /volume没有设置宿主机挂载目录时,宿主机会自动分配一个。 具体可以 docker inspect 容器名称 ,查看mounts中的,source查看目录
|
|
-数据卷容器
多容器进行数据交换 1.多个容器挂载同一个数据卷,上文的-v参数。 2.数据卷容器,(c1,c2挂载c3,c3挂载宿主机的数据卷。相当于c1,c2挂载的数据卷)
|
|
使用docker安装软件
安装nginx
搜索:docker search nginx
下载:docker pull nginx
启动
-d: 后台运行 -p: 端口映射 冒号前是本机端口,冒号后是容器端口
==docker run -d -p 8787:80 –name nginx-8787 nginx== 启动容器 -name可选 nginx-8787是名称
若出现IPv4 forwarding is disabled. Networking will not work_ 按照以下步骤解决: 1、编辑 vi /etc/sysctl.conf 2、添加 net.ipv4.ip_forward=1 3、重启network服务 systemctl restart network
然后访问ip+8787出现Wecome to nginx就说明安装成功
** 部署nginx**
$PWD表示当前目录,也可以手动 -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf表示把当前主机的conf/nginx.conf挂载到容器的/etc/nginx/nginx.conf配置目录 -v $PWD/logs:/var/log/nginx把主机当前目录下的logs目录挂摘到容器的/var/log/nginx
1 2 3 4
docker run -id –name=c_nginx \ -p 访问端口8080:主机端口80 \ -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \ -v $PWD/logs:/var/log/nginx
安装mysql
https://hub.docker.com搜索mysql
找到对应版本下载docker pull mysql:5.7.30
然后启动:docker run -itd –name mysql -p 3336:3306 -e MYSQL_ROOT_PASSWORD=密码123456 mysql:版本号
这样就可以直接通过ip+3336进行访问
第二章-CICD
文章作者 卢森林
上次更新 2020-07-12