docker
Docker安装与启动
1.安装可能需要的依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
2.更换yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.安装docker
yum install docker-ce -y
4.查看docker版本
docker -v
5.启动docker
systemctl start docker
6.关闭docker
systemctl stop docker
7.设置开机自启
systemctl enable docker
8.查看docker信息
docker info
镜像加速
vim /ect/docker/daemon.json
{
"registry-mirrors":
["https://x1566319.mirror.aliyuncs.com"]
}
镜像相关命令
运程仓库下载 官方的 https://hub.docker.com/
1.镜像下载
docker pull 镜像名字:版本/tag
docker pull centos:centos7
docker pull redis # 不跟版本/tag 默认下最新的latest
2.查找镜像
(1) 官网搜索 https://hub.docker.com/
(2) docker search centos
3.查看本地镜像
docker images
4.镜像删除
docker rmi 镜像名字:tag/镜像id
5.一次性删除所有镜像
docker rmi `docker images -q`
NAME:仓库名称
DESCRIPTION:镜像描述
STARS:用户评价,反应一个镜像的受欢迎程度
OFFICIAL:是否官方
AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的
容器相关命令
1. 查看正在运行的容器
docker ps
2. 查看所有容器,无论停止还是运行
docker ps -a
3. 创建容器并启动(创建容器,运行容器)
docker run -id --name='容器名字' -v 宿主机路径:容器路径 -p 宿主机端口:容器端口 镜像名字:tag
-i: 表示运行容器 镜像名字:tag
-t: 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
-d: 在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
--name: 为创建的容器命名。
-v: 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-p: 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
### 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
docker inspect --format='{{.NetworkSettings.IPAddress}}' ff78cece7d61
# 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