Docker学习笔记-CentOS7安装Docker-常用命令-常用组件的安装(tomcat、mysql、redis)

本文详细介绍了在CentOS7系统上安装Docker的步骤,包括GCC和依赖软件的安装,阿里云镜像仓库的配置,以及Docker服务的启动、管理、容器操作、数据卷挂载和权限设置等内容。
摘要由CSDN通过智能技术生成

CentOS7安装Docker

#yum安装gcc相关
yum -y install gcc
yum -y install gcc-c++

#安装需要的软件包
yum install -y yum-utils

#设置stable镜像仓库(阿里云)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#更新yum软件包索引
yum makecache fast

#安装DOCKER CE
yum -y install docker-ce docker-ce-cli containerd.io

#启动docker
systemctl start docker

#测试
docker version

#卸载
systemctl stop docker 
yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
rm -rf /var/lib/containerd

mkdir -p /etc/docker
vim  /etc/docker/daemon.json


 #写内容,阿里云
{
  "registry-mirrors": ["https://{自已的编码}.mirror.aliyuncs.com"]
}

启动类命令:

启动docker:systemctl start docker

停止docker:systemctl stop dokcer

重启docker:systemctl restart dokcer

查看docker状态:systemctl status docker

开机启动:systemctl enable docker

查看docker概要信息:docker info

查看docker总体帮助文档:docker --help

查看docker命令帮助文档:docker 具体命令 --help

镜像类命令:

docker images [OPTIONS]:列出本地主机上的镜像
  1. -a:列出本地所有的镜像(含历史映像层);docker images -a
  2. -q:只显示镜像ID;docker images -q

docker search [OPTIONS]  [镜像名称]:在镜像仓库搜索某个镜像 
  1. --limit:只列出N个镜像,默认25个;docker search --limit 5 redis

docker pll [镜像名称]:下载镜像
  1. [:TAG]:tag是镜像版本,没有就代表最新版本;docker pull redis:6.0.8 

docker system df:查看镜像/容器/数据卷所占的空间

docker rmi [OPTIONS] [镜像名称/ID]:删除镜像
  1. -f:强制删除;docker rim -f redis;docker rmi -f $(docker images -qa)

容器类命令:

docker run [OPTIONS] [容器名称/ID] [COMMAND] [ARG...]:新建+启动容器
  1. --name="容器新名字":为容器指定一个名称;docker run -d --name="redis1" redis
  2. -d:后台运行容器并返回容器ID,也即启动守护式容器(后台运行); docker run -d --name="redis1" redis
  3. -i:以交互模式运行容器,通常与-t同时使用;docker run -it ubuntu
  4. -t:为容器重新分配一个伪输入终端,通常与-i同时使用;docker run -it ubuntu
  5. -it:也即启动交互式容器(前台有伪终端,等待交互);docker run -it ubuntu
  6. -P:随机端口映射,大写P
  7. -p:指定端口映射,小写p;docker run -d redis -p 6379:6379
  8. docker run -it ubuntu /bin/bash:启动交互式容器,使用镜像ubuntu :latest以交互模式启动一个容器,在容器内执行/bin/bash命令。

docker ps [OPTIONS]:查看容器
  1. -a:列出当前所有正在运行的容器+历史上运行过的;docker ps -a
  2. -l:显示最近创建的容器;docker ps -l
  3. -n:显示最近n个创建的容器;docker ps -n
  4. -q:静默模式,只显示容器编号;docker ps -q

退出容器
  1. exit:run进去容器,exit退出,容器停止
  2. ctrl+p+q:run进去容器,ctrl+p+q退出,容器不停止

docker start [容器名称/id]:启动已停止运行的容器;docker start redis

docker restart [容器名称/id]:重启容器;docker restart redis

docker stop [容器名称/id]:停止容器;docker stop redis

docker kill [容器名称/id]:强制停止容器;docker kill redis

docker rm [容器名称/id]:删除已停止的容器;docker rm redis
  1. docker rm -f $(docker ps -a -q);一次性删除多个容器实例
  2. docker ps -a -q | xargs docker rm ;一次性删除多个容器实例

docker logs [容器ID]:查看容器日志

docker top [容器ID]:查看容器内运行的进程

docker inspect [容器ID]:查看容器内部细节

进入正在运行的容器并以命令行交互:
  1. docker exec -it [容器ID] /bin/bash;exec是在容器中打开新的终端,并且可以启动新的进程,用exit退出,不会导致容器停止
  2. docker attach [容器ID];attach直接进入容器启动命令的终端,不会启动新的进程,用exit退出,不会导致容器停止

docker cp  [容器ID]:[容器内路径] [目的主机路径]:从容器内拷贝文件到主机上;docker cp 324dsfsdf3:/a.txt /opt

docker export [容器ID] > [文件名.tar]:xport导出容器的内容作为一个tar归档文件;docker export 32423ewrwe > abcd.tar

cat [文件名.tar] | docker import - [镜像用户/镜像名:版本号]:import从tar包中的内容创建一个新的的文件系统再导入为镜像;cat adcd.tar | docker import - jack/ubuntu:0.1

Docker镜像commit操作案例

docker commit提交容器副本使之成为一个新的镜像

docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]

docker commit -m="vim cmd add" -a="wza" 4a7f8d28f941  myubuntu:0.1

数据卷案例

docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名

docker run -it  --name="myubuntu2" --privileged=true -v /tem/host_data:/tem/docker/docker_data myubuntu:0.1


//查看数据卷是否挂载成功
//docker inspect [容器ID] 
docker inspect dsw34rczxcs


"Mounts": [
            {
                "Type": "bind",
                "Source": "/tem/host_data",
                "Destination": "/tem/docker/docker_data",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],

 Docker挂载主机目录访问如果出现cannot open directory .: Permission denied
解决办法:在挂载目录后多加一个--privileged=true参数即可
 
如果是CentOS7安全模块会比之前系统版本加强,不安全的会先禁止,所以目录挂载的情况被默认为不安全的行为,
在SELinux里面挂载目录被禁止掉了额,如果要开启,我们一般使用--privileged=true命令,扩大容器的权限解决挂载目录没有权限的问题,也即
使用该参数,container内的root拥有真正的root权限,否则,container内的root只是外部的一个普通用户权限。

 docker安装tomcat

docker pull tomcat
docker run -d -p 8080:8080 tomcat

如果访问tomcat首页失败

1、可能没有映射端口或者没有关闭防火墙,服务器8080端口是否开启

2、把webapps.dist目录换成webapps(这是新版tomcat导致的问题)

可以使用老版本镜像安装就不会出错

docker pull billygoo/tomcat8-jdk8
docker run -d -p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk8

docker安装mysql 

docker pull mysql:5.7

#3个-v 分别挂载了日志、数据、配置到主机的目录,--privileged=true权限,-e MYSQL_ROOT_PASSWORD设置密码

docker run -d -p 3306:3306 --privileged=true -v /wzause/mysql/log:/var/log/mysql -v /wzause/mysql/data:/var/lib/mysql -v /wzause/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456  --name mysql mysql:5.7

1、外部没法访问,同样需要在服务器的防火墙里配置端口

2、docker里的mysql无法插入中文

#查看字符集
show variables like 'character%';

  1. 在本机挂载的/wzause/mysql/conf下新建my.cnf,通过容器卷同步给mysql容器实例,将以下内容写入到my.cnf,写入后记得重启容器
    [client]
    default_character_set=utf8
    [mysqld]
    collation_server = utf8_general_ci
    character_set_server = utf8

docker安装redis

docker pull redis

#在CentOS宿主机下新建目录/app/redis
mkdir -p /app/redis

#/app/redis目录下创建redis.conf文件,将默认配置复制进去
vim redis.conf

#redis-server /etc/redis/redis.conf 指定使用我们自己配置的redis.conf文件
docker run  -p 6379:6379 --name redis --privileged=true -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app/redis/data:/data -d redis redis-server /etc/redis/redis.conf

1、外部没法访问,同样需要在服务器的防火墙里配置端口

2、默认redis.conf配置文件内容网上找一下

3、修改redis.conf

  • 开启redis验证(可选) requirepass 123
  • 允许redis外地连接 (必须) 注释掉 # bind 127.0.0.1
  • daemonize no
  • 开启redis数据持久化  appendonly yes(可选)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值