centos-7下docker的基本常用命令使用-01

centos-7下docker的基本常用命令使用学习笔记(B站千锋学习记录)

前提

进入root用户或者在下方所有命令前加上sudo,注意下面运行的容器要开放防火墙端口

防火墙常用命令

#查看已经开放的端口
firewall-cmd --list-ports
#开启端口,例如8080
firewall-cmd --zone=public --add-port=8080/tcp --permanent
#关闭端口,例如8080
firewall-cmd --permanent --zone=public --remove-port=8080/tcp
#开启防火墙
systemctl start firewalld
#重启防火墙
firewall-cmd --reload #重启
firewall systemctl stop firewalld.service #停止
firewall systemctl disable firewalld.service #禁止firewall开机启动

docker 安装

  1. 确保机器上没有老的docker版本
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine;
  1. 安装docker的依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
  1. 添加docker的软件源(这里选择阿里云)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  1. 更新yum,缓存,建立元数据
yum makecache fast
  1. 下载docker-ce
yum install -y docker-ce
  1. 启动docker
systemctl start docker
  1. 查看docker的版本
docker version
  1. 测试运行
docker run hello-world
  1. 重启docker
systemctl restart docker

docker 卸载

yum remove docker-ce
rm -rf /var/lib/docker

docker 镜像加速器的配置

  1. 进入/etc/docker目录,并创建daemon.json文件
cd /etc/docker/
mkdir daemon.json
  1. 往文件中添加镜像地址
#打开文件
vi daemon.json
#按i进入insert模式,粘入下方地址
{
"registry-mirrors":["https://gxeo3yz7.mirror.aliyuncs.com"]
}
#按esc保存退出
:wq
  1. 重启docker
systemctl daemon-reload
systemctl restart docker
  1. 检查是否生效
docker info

image-20220817091142204

docker 镜像下载

  1. 尝试tomcat镜像下载
docker pull tomcat
  1. 查看下载的镜像
docker images

出现下图所示的镜像

image-20220817091451556

  1. 指定版本
docker images tomcat:7

出现下方tomcat的7版本

image-20220817091644796

docker 镜像查看

docker images

docker 镜像卸载

虚悬镜像的卸载

产生原因:新旧镜像重名,导致docker images查看时出现名为的镜像。

image-20220817134729278

停止虚悬镜像的使用,然后输入命令

docker image prune

普通镜像的卸载

提前:要删除镜像必须确认此镜像⽬前没有被任何容器使⽤

#ID不用输全(一般前两位就行)
docker image rmi ID
docker image rm ID

例如下方,给出几种删除形式

image-20220817092513465

#单个删除第一个
docker image rmi 71
docker image rm 71
#多个删除
docker image rmi 71 bd e6

docker 查看容器

#查看正在运行的容器
docker ps
#查看所有容器
docker ps -a

docker 启动容器

-i #保持和 docker 容器内的交互,启动容器时,运⾏的命令结束后,容器依然存活,没有退出(默认是会退出,即停⽌的) 
-t #为容器的标准输⼊虚拟⼀个tty 
-d #后台运⾏容器 
--rm #容器在启动后,执⾏完成命令或程序后就销毁 
--name #给容器起⼀个⾃定义名称 
-p #宿主机:内部端口
#例如创建运行一个在本地8080,内部8080端口运行的名为tomcat1的在后台运行,停止即删除的tomcat容器
docker run --rm -d --name tomcat1 -p 8080:8080 tomcat
#例如创建运行一个在本地8081,内部8080端口运行的名为tomcat2的在后台运行,停止不删除的tomcat容器
docker run -d --name tomcat2 -p 8081:8080 tomcat

docker 停止,删除,重启容器

#通过容器ID或者名称
#停止容器
docker stop ID
#重启容器
docker restart ID
#删除容器(所有容器删除前都要先停止)
docker rm ID
#停止所有容器
docker stop $(docker ps -a -q)
#删除所有容器
docker rm $(docker ps -a -q)

docker 日志查看

#containerName替换成相对应的容器名
docker logs containerName
#完整版查看从2018-12-1后的十条日志文件
#--since : 此参数指定了输出日志开始日期,即只输出指定日期之后的日志。 
#-f : 查看实时日志 
#-t : 查看日志产生的日期 
#-tail=10 : 查看最后的10条日志
docker logs -f -t --since="2018-12-1" --tail=10 containerName

docker 进入容器

#containerName替换成相对应的容器名
docker exec -it containerName bash

docker 在宿主机和容器之间交换⽂件

#例如将当前目录下的1.jpg图片复制到tomcat1容器中的/usr/local/tomcat/webapps/ROOT目录下,也可以反过来复制出来
docker cp 1.jpg tomcat1:/usr/local/tomcat/webapps/ROOT

docker 数据卷理解

作用:数据可持久化,让数据不在随着容器的消失而消失;独立于容器之外。

数据卷的特点:

1.数据卷可在容器之间共享或重用数据。
2.卷中的更改可以直接生效。
3.数据卷中的更改不会包含在镜像的更新中。
4.数据卷的生命周期一直持续到没有容器使用它为止。

docker 数据卷使用

#创建数据卷,默认会存放到目录: /var/lib/docker/volume/数据卷名称/_data目录下
docker volume create volumeName
#查看所有数据卷
docker volume ls
#查看数据卷
docker volume inspect volumeName
#删除数据卷
docker volume rm volumeName
#数据卷应用
#当你映射数据卷时,如果数据卷不存在,Docker会帮你自动创建
docker run -v volumeName:ContainerPath ID
#直接指定一个路径作为数据卷的存储位置
docker run -v volumePath:ContainerPath ID

#案例
#创建一个数据卷wlb
docker volume create wlb
#将项目案例放入指定路径并启动一个tomcat
docker run -d -p 8080:8080 --name tomcat-8080 -v volumeName:ContainerPath tomcat
docker run -d -p 8080:8080 --name tomcat-8080 -v volumePath:ContainerPath tomcat

docker 安装nignx

#取最新版的 Nginx 镜像,也可以指定版本
docker pull nginx:latest
#安装成功后查看
docker images

image-20220819092649584

#容器运行
#name nginx-test:容器名称。
#-p 80:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
#-d nginx: 设置容器在在后台一直运行。
docker run -it --name nginx-test --rm -d -p 80:80 nginx
#进入容器
docker exec -it nginx-test bash
#由于容器内部不支持vi编辑工具,不方便对nginx.conf进行编写所以在外面新建文件进行映射
#在~下执行
mkdir -p /usr/local/nginx
cd /usr/local/nginx/
mkdir conf
mkdir html
mkdir logs
#进入conf进行映射
cd conf/
#拷贝nginx的两个配置文件
docker cp nginx-test:/etc/nginx/nginx.conf /usr/local/nginx/conf
docker cp nginx-test:/etc/nginx/conf.d /usr/local/nginx/conf
#删除原先的nginx-test容器
docker stop nginx-test
docker rm nginx-test
#重新创建运行容器,做数据卷的创建
docker run -d -p 80:80 --name nginx-test -v /usr/local/nginx/html:/usr/share/nginx/html -v /usr/local/nginx/conf/conf.d/default.conf:/etc/nginx/conf.d/default.conf -v /usr/local/nginx/logs:/var/log/nginx nginx
#进入html目录创建index.html
cd /usr/local/nginx/html/
vi index.html
i  <h1>sssss</h1> :wq
#ip查看发现出现了内容

nginx 集群配置

#在conf目录编辑nginx.conf
#在http内粘贴,例如我本地ip为192.168.1.148,配置三个端口
upstream nginxCluster{
	server 192.168.1.148:8080; 
	server 192.168.1.148:8081; 
	server 192.168.1.148:8082; 
}
#在conf.d内粘贴,文件中也有一个location /删除或修改/为/aa或其他
location /{ 
	proxy_pass http://nginxCluster; 
}
#重启docker中的nginx容器
docker restart nginx-test

docker 安装 mysql

执行下述操作用可用可视化工具例如navicat连接

#安装mysql5.*
#拉取mysql镜像
docker pull mysql:5.6
#创建运行容器
docker run -d --name mysql5.6-3306 -p 3306:3306 -e MYSQL_ROOT_PASSWORD='root1' mysql:5.6
#进入容器
docker exec -it mysql5.6-3306 bash
#启动mysql,输入密码root
mysql -u root -p
#授权主机访问
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root1' WITH GRANT OPTION;
#刷新权限
FLUSH PRIVILEGES;
#退出
EXIT;

#安装mysql8.*
#拉取mysql镜像
docker pull mysql:8
#创建运行容器
docker run -d --name mysql8 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root1 1mysql:8
#进入容器
docker exec -it mysql8 bash
#启动mysql,输入密码root
mysql -u root -p
#授权主机访问
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root1';

docker 安装Redis

#拉取镜像
docker pull redis:4.0.1
#创建并运行容器
docker run --rm -d --name redis6379 -p 6379:6379 redis:4.0.1 --requirepass "wlb"
#进入redis
docker exec -it redis6379 bash
#开启客户端
redis-cli

docekr 定制镜像部署springboot微服务

#常用命令解释
FROM #定基础镜像
MAINTAINER #提供dockerfile制作者本人信息
ENV #设置环境变量
USER #切换运行属主身份
WORKDIR #切换工作目录
VOLUME #数据卷
COPY #把宿主机中的文件复制到镜像中
EXPOSE #为容器打开指定要监听的端口以实现与外部通信
RUN #指令是用来执行命令行命令的
#宿主机创建空目录,用demo_0001.jar演示
mkdir -p /usr/local/docker/demo
#创建Dockerfile文件
vi Dockerfile
#粘贴下方内容
FROM java:8  
VOLUME /tmp 
ADD demo_0001.jar demo.jar 
EXPOSE 8080 
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/demo.jar"]

FROM:表示基础镜像,即运行环境

VOLUME /tmp创建/tmp目录并持久化到Docker数据文件夹,因为Spring Boot使用的内嵌Tomcat容器默认使

用/tmp作为工作目录

ADD:拷贝文件并且重命名(ADD demo_0001.jar demo.jar 将应用jar包复制到/demo.jar)

EXPOSE:并不是真正的发布端口,这个只是容器部署人员与建立image的人员之间的交流,即建立image的人员

告诉容器布署人员容器应该映射哪个端口给外界

ENTRYPOINT:容器启动时运行的命令,相当于我们在命令行中输入java -jar xxxx.jar,为了缩短 Tomcat 的启动

时间,添加java.security.egd的系统属性指向/dev/urandom作为 ENTRYPOINT

#构建容器
docker build -t demo .
#运行容器
docker run --rm -d --name containerName -p 8080:8080 demo

为Spring Boot使用的内嵌Tomcat容器默认使

用/tmp作为工作目录

ADD:拷贝文件并且重命名(ADD demo_0001.jar demo.jar 将应用jar包复制到/demo.jar)

EXPOSE:并不是真正的发布端口,这个只是容器部署人员与建立image的人员之间的交流,即建立image的人员

告诉容器布署人员容器应该映射哪个端口给外界

ENTRYPOINT:容器启动时运行的命令,相当于我们在命令行中输入java -jar xxxx.jar,为了缩短 Tomcat 的启动

时间,添加java.security.egd的系统属性指向/dev/urandom作为 ENTRYPOINT

#构建容器
docker build -t demo .
#运行容器
docker run --rm -d --name containerName -p 8080:8080 demo

参考

B站学习直达:https://www.bilibili.com/video/BV1ug411j71W?p=1&vd_source=0fa8de2d2ffc73e699c5b8f3d6d71c5c
官方参考文档: https://docs.docker.com/

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胡图图爸爸胡英俊

文章自得方为贵,衣钵相传岂是

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值