一、Docker安装与启动
# 1.yum 包更新到最新
# yum remove docker docker-common docker-selinux docker-engine
# rm -rf /var/lib/docker
yum update
# 2.安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3.设置yum源为阿里云
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 4.安装dovter并自动确认
yum install docker-ce -y
# 5. 查看版本,docker发布的年月日命名
docker -v
# 6. 启动docker
systemctl start docker
# 7.关闭docker
systemctl stop docker
# 8. 开机自启动
systemctl enable docker
# 9.查看docter信息
docker info
# 10.重启docker
systemctl restart docker
# 11.查看docter状态
systemctl status docker
# 12.查看docter帮助
docker --help
二、docter镜像加速
2.1 编辑该文件
vi /etc/docker/daemon.json
2.2 文件内容插入如下
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
三、镜像相关命令
3.1 常用命令
# 远程仓库下载的,官方的https://hub.docker.com/
# 镜像:images
#1 下载镜像
# docker pull下载
# centos:centos7 镜像名字:版本/tag
docker pull centos:centos7
docker pull redis # 不写冒号,默认下最新的latest
# 2 查找镜像---》是否是官方,点赞数大小
-方式一网址搜:https://hub.docker.com/
-方式二: docker search centos(镜像名)
# 3 查看本地镜像
docker images
# 4 镜像删除
docker rmi 镜像名字:tag/镜像id
# 5 一次性删除所有镜像
docker rmi `docker images -q`
3.2 官网查看镜像信息
NAME:仓库名称
DESCRIPTION:镜像描述
STARS:用户评价,反应一个镜像的受欢迎程度
OFFICIAL:是否官方
AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的
四、容器相关命令
# 1 查看正在运行的容器
docker ps
# 2 查看所有容器,无论停止还是运行
docker ps -a
# 3 创建容器并启动(创建容器,运行容器)
docker run -id --name=mycentos -v 宿主机路径:容器路径 -p 宿主机端口:容器端口
-i:表示运行容器 镜像名字:tag
-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
--name :为创建的容器命名。
-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
(1)交互式方式创建容器
docker run -it --name=容器名称 镜像名称:标签 /bin/bash
(2)守护式方式创建容器:
docker run -di --name=容器名称 镜像名称:标签
守护式方式登录容器
docker exec -it 容器名称 (或者容器ID) /bin/bash
### docker run -it centos:centos7
-启动容器,自动命名,进入到容器内部,如果exit退出,容器也就结束了,不运行了
-因为容器运行必须有一个前台进程夯住阻塞,前台进程结束,容器也就结束了
### docker run -id --name=mycentos7 centos:centos7
-进入到容器内部操作
-ssh连过去(需要容器支持,安装ssh,启动,监听22端口),一般不用
-docker exec -it 96a5 /bin/bash # 本质是在96a5容器上执行一下 bash命令
### docker run -id --name=mycentos2 -v /root/lqz:/home/lqz centos:centos7
-以后再容器内部操作lqz文件夹和在宿主机操作是一样的
### docker run -id --name=myredis -p 6380:6379 redis
-以后直接链接宿主机的6380就相当于链接容器的6379端口
#### mysql做目录映射,创建数据库,删除容器操作,再用别的容器运行,数据库还在
mkdir /home/mysql
mkdir /home/mysql/conf.d
mkdir /home/mysql/data/
# 创建my.cnf配置文件
touch /home/mysql/my.cnf
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000
docker run -di -v /home/mysql/data/:/var/lib/mysql -v /home/mysql/conf.d:/etc/mysql/conf.d -v /home/mysql/my.cnf:/etc/mysql/my.cnf -p 3306:3306 --name mysqlmy -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
#3 停止容器
docker stop 容器id
# 启动容器
docker start 容器id
#4 删除容器:必须先停止再删
docker rm 容器id 容器id 容器id
#5 文件拷贝
# 从宿主机copy文件到容器
docker cp 需要拷贝的文件或目录 容器名称:容器目录
docker cp lqz.txt ff78cece7d61:/home
#从容器copy文件到宿主机
docker cp 容器名称:容器目录 需要拷贝的文件或目录
docker cp ff78cece7d61:/home/lqz.txt /root/lqz.txt
#6 查看容器详情,ip地址
docker inspect ff78cece7d61(容器名/容器id)
docker inspect --format='{{.NetworkSettings.IPAddress}}' ff78cece7d61
#7 退出当前容器
exit
# netstat 命令没有
yum install net-tools 安装
五、应用部署
# 运行mysql
docker run -di -v /home/mysql/data/:/var/lib/mysql -v /home/mysql/conf.d:/etc/mysql/conf.d -v /home/mysql/my.cnf:/etc/mysql/my.cnf -p 3306:3306 --name mysqlmy -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
# 运行redis
docker run -di --name=myredis5 -v /root/lqz/redis.conf:/data/redis.conf -p 6379:6379 redis redis-server /data/redis.conf
vim redis.conf # 配置如下
--------------------------------------
bind 0.0.0.0
daemonize no
protected-mode no
requirepass 123456
--------------------------------------
# 运行nginx
docker run -di --name=mynginx -p 80:80 nginx