目录
一.docker安装
1.安装yum工具
yum install -y yum-utils device-mapper-persistent-data lvm2
2.安装 docker yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.安装docker
yum install docker-ce
4.启动docker
systemctl start docker
5.查看docker状态
systemctl status docker
6.开机启动
systemctl enable docker
二.docker基础名词
镜像:应用及其运行所需要的环境、配置、系统级函数库
容器:docker会在运行镜像时创建一个隔离外界的环境
镜像仓库:提供存储、管理Docker镜像的服务器
三.docker基础命令
docker运行命令:
docker run -d \
创建并运行一个容器,-d
则是让容器以后台进程运行
--name mysql \
给容器起个名字叫mysql 注:取容器名时,最好不要与镜像名重复
-p 3306:3306 \
设置端口映射 注:给端口时前面的端口与后面的端口最好不同
-e TZ=Asia/Shanghai \
配置容器内进程运行时的一些参数
-e MYSQL_ROOT_PASSWORD=123 \
mysql
设置镜像名称
对-p参数的解释:
-p 宿主机端口:容器内端口
,示例中就是将宿主机的3306映射到容器内的3306端口
常见基本命令:
用一副图来表示这些命令的关系:
四.命令别名
1.修改/.bashrc文件
vi ~/.bashrc
2.添加别名
alias dps='docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"'
3.使别名生效
source /root/.bashrc
五.数据卷
数据卷:是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁
数据卷将宿主机和Nginx容器关联:
在上图中:
-
我们创建了两个数据卷:
conf
、html
-
Nginx容器内部的
conf
目录和html
目录分别与两个数据卷关联。 -
而数据卷conf和html分别指向了宿主机的
/var/lib/docker/volumes/conf/_data
目录和/var/lib/docker/volumes/html/_data
目录
这样以来,容器内的conf
和html
目录就 与宿主机的conf
和html
目录关联起来,我们称为挂载。此时,我们操作宿主机的/var/lib/docker/volumes/html/_data
就是在操作容器内的/usr/share/nginx/html/_data
目录。只要我们将静态资源放入宿主机对应目录,就可以被Nginx代理了
数据卷的相关命令有:
注意:容器与数据卷的挂载要在创建容器时配置,而且创建容器的过程中,数据卷会自动创建。
nginx的html目录挂载:
docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx
数据卷 挂载点
六.挂载本地目录或文件
语法:-v 本地目录:容器内目录或文件
mysql容器本地目录挂载:
-
挂载
/root/mysql/data
到容器内的/var/lib/mysql
目录 -
挂载
/root/mysql/init
到容器内的/docker-entrypoint-initdb.d
目录(初始化的SQL脚本录) -
挂载
/root/mysql/conf
到容器内的/etc/mysql/conf.d
目录(这个是MySQL配置文件目录)
docker run -d \
--name mysql \ -p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
-v ./mysql/data:/var/lib/mysql \
-v ./mysql/conf:/etc/mysql/conf.d \
-v ./mysql/init:/docker-entrypoint-initdb.d \
mysql
七.Docker镜像
镜像:应用程序、程序运行的系统函数库、运行配置等文件的文件包。
镜像结构图:
Dockerfile:一个文本文件, 其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。将来Docker可以根据Dockerfile帮我们构建镜像。
常见指令:
八.网络
常见命令:
# 1.首先通过命令创建一个网络
docker network create hmall
# 2.然后查看网络
docker network ls
# 3.让dd和mysql都加入该网络
#网络内的容器可以用容器名互相访问!
# 3.1.mysql容器
docker network connect hmall mysql
# 3.2.db容器,也就是我们的java项目
docker network connect hmall dd
# 4.进入容器
docker exec -it dd bash
# 5.用容器名访问
ping mysql
PING mysql (172.18.0.2) 56(84) bytes of data.
64 bytes from mysql.hmall (172.18.0.2): icmp_seq=1 ttl=64 time=0.044 ms
64 bytes from mysql.hmall (172.18.0.2): icmp_seq=2 ttl=64 time=0.054 ms