centos7 安装docker

1.yum install -y gcc gcc-c++

2.yum install -y yum-utils

3.设置stable镜像仓库

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.更新yum软件包索引 

yum makecache fast

5.安装docker ce 

yum install -y docker-ce docker-ce-cli containerd.io

6.启动docker

systemctl start docker

7.测试

docker --version

docker run hello-world

8.卸载docker

systemctl stop docker

yum remove docker-ce docker-ce-cli containerd.io

rm -rf /var/lib/docker

rm -rf /var/lib/containerd

9.镜像加速器配置

mkdir -p /etc/docker

tee /etc/docker/daemon.json <<-'EOF'

{ "registry-mirrors": ["https://vgd4an7m.mirror.aliyuncs.com"] }

EOF

systemctl daemon-reload

systemctl restart docker

10.常用命令

帮助启动类命令:systemctl start/stop/restart/status/enable docker

查看docker概要信息:docker info 

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

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

docker images 列出本地主机上的镜像 参数: -a :列出本地所有的镜像(含历史映像层) -q:只显示镜像ID

docker search 某个镜像名字 参数:--limit:只列出N个镜像,默认25个 例子:docker search --limit 5 redis

下载镜像:docker pull 某个镜像名字 [:TAG](指定版本,例如MySQL5.6) 没有TAG就是最新版 等价于docker pull 镜像名字:latest

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

docker rmi 镜像名字或id(-f强制删除)

删除多个 docker rmi -f 镜像名1:(TAG) 镜像名2:(TAG)

删除全部docker rmi -f $(docker images -qa)

仓库名、标签都是<none>的镜像,俗称虚悬镜像 dagling image

docker run [options] inage 

option: --name 指定容器新名字 -d  后台运行容器并返回容器id,也即启动守护式容器(后台运行) -i: 以交互模式运行容器,通常与-t同时使用 -t:为容器重新分配一个伪输入终端,通常和-i同时使用(也即启动交互式容器(前台有伪终端,等待交互)) -P:随机端口映射 -p: 指定端口映射

docker run -it ubuntu /bin/bash(交互式shell)

列出当前所有正在运行的容器:docker ps [options]  列出正在运行的容器      -a: 列出当前正在运行的容器+历史上运行过的 -l:显示最近创建的容器 -n:显示最近n个创建的容器 例如:decker ps -n 1 -q:静默模式,只显示容器编号

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

启动已停止运行的容器:docker start 容器id或者容器名

docker restart/stop 容器id/容器名

强制亭子容器:docker kill 容器id/容器名

删除已停止的容器 docker rm 容器id/容器名(-f 强制删除正在运行的容器)

删除多个容器实例 docker rm -f $(docker ps -qa) / docker ps -qa | xargs docker rm

11.

后台启动容器

docker run -d 镜像名 d

docker run -d centos 问题:docker ps ,发现centos停止了 ,

常见的坑,docker 容器使用后台运行 ,就必须要有一个前台进程,docker发现没有应用,就会自动停止

# nginx ,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了

12  查看日志

docker logs -f -t --tail 容器,没有日志

#自己编写一个shell脚本

docker run -d centos /bin/bash -c "while true;do eccho hello;sleep 1;done"

docker ps

docker logs        -tf          显示日志          --tail  number          显示日志的条数

docker logs -tf --tail 10 容器id

13.查看容器中进程信息

docker top 容器id

14 查看容器的元数据

docker inspect 容器id

15 进入当前正在运行的容器

# 我们通常容器是使用后台方式运行的,需要进入容器,修改一些配置

方式一:

docker exec -it 容器id bashsheel

docker exec -it 容器id /bin/bash

方式二:

docker attach 容器id

总结:

docker exec   #进入容器后开启一个新的终端,可以在里面操作(常用)

docker attach # 进入容器正在执行的终端,不会启动新的终端

16 从容器内拷贝文件到主机上

#进入容器内部     docker attach 容器id

在容器内新建文件 touch test.java

返回主机  exit

docker cp 容器id:/home/test.java  /home

# 拷贝是一个手动过程,未来我们使用-v卷的技术,可以实现

17 docker 安装 nginx

docker search nginx 

docker pull nginx 

-d  后台运行 --name 给容器命名 -p 宿主机端口,容器内部端口

docker run -d --name nginx -p 3344:80 nginx

 

测试

curl localhost:3344

18 安装tomcat

官方:docker run -it --rm tomcae:9.0    #--rm   用完即删 容器停止后查看不到

docker pull tomcat

docker run -d -p 3355:8080 --name tomcat01 tomcat

#进入容器  docker exec -it tomcat01 /bin/bash

#发现问题  1、linux命令少了 2、没有webapps,阿里云镜像的原因,默认是最小的镜像,所以不必要的都剔除掉。  保证最小可运行的环境

cpd /usr/local/tomcat 

cp -r  ./webapps.dist/*  ./webapps

19.部署 es+kibana

#es 暴漏的端口很多  、十分耗内存、数据一般要放在安全目录!挂载

# --net somenetwork 网络配置

#启动elasticsearch

docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-nide"

# 测试 curl localhost:9200

es 是十分消耗内存的

#查看docker stats

 # 赶紧关闭,增加内存的限制,修改配置文件 -e 环境配置修改

docker run -d --name elasticsearch2  -p 9200:9200 -p 9300:9300 -e "discovery.type=single-nide" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2

 

 20 可视化面板

一:portainer :

docker run -d -p 8088:9000 \

--restart=always -v /ver/run/docker.sock:/var/run/docker.sock  --privileged=true portainer/portainer

二:Rancher(CI/CD再用)

21 

 22 commit 镜像

docker commit 提交容器成为一个新的副本

docker commit -m="提交的描述信息"  -a=“作者” 容器id   目标镜像名:[TAG](自定义)

23 使用数据卷

 

方式一  : 直接使用命令来挂载 -v

docker run -it -v 主机目录,容器内目录

#测试

docker run -it /home/ceshi(主机):/home(容器内) centos /bin/bash

# 启动起来时候我们可以通过  docker inspect 容器id  查看是否挂载成功

 #测试’

停止容器>宿主机上修改文件>启动容器>容器内的数据依旧是同步的

24 实战 MySQL同步数据

docker pull mysql:5.7

-d 后台运行  -p 端口映射 -v 卷挂载 -e 环境配置 --name 指定容器名字

docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v       \    /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456  \

--name mysql01   mysql:5.7

25 匿名挂载和具名挂载

所有的docker容器内的卷,没有指定目录的情况下都是在 \ 

/var/lib/docker/volumes/xxxx/_data

-v  容器内路径  #匿名挂载

-v 卷名:容器内路径 #具名挂载

-v /宿主机路径:容器内路径 #指定路径挂载

docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx  

docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx

ro  readonly  #只读

rw  readwrite #可读可写

26 初识Dockerfile

Dockerfile 就是用来构建docker 镜像的构建文件,命令脚本

#创建一个文件  ,名字随机 建议Dockerfilexx

指令要大写  

写入:

        FROM centos

        VOLUME ["volume01","volume02"]    (匿名挂载)

        CMD  echo "-----end-----"

        CMD  /bin/bash

 docker inspect 容器id

 27. 多个mysq容器实现数据共享

docker run -d -p 3310:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD

=123456 --name mysql101 mysql:5.7

docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD =123456 --name mysql102

volumes-form mysql101 mysql:5.7

结论:容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器为止

但是一旦你持久化到了本地,这个时候,本地的数据是不会删除的

 

 28 DockerFile 介绍

 

 29 DockerFile 指令

 30  构建自己的centos

 

 31 DockerFile 制作tomcat镜像

 

 32 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值