docker

方便理解

拉取了一个个虚拟机模板,启动实例, 根据虚拟机模板,创建多个虚拟机  虚拟机套虚拟机

容器就是简易版的linux环境 (包括root用户权限,进程空间,用户空间,网络空间)和运行在其中的应用程序

1安装docker

Docker 要求 CentOS 系统的内核版本高于 3.10,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

1通过 uname -r 命令查看你当前的内核版本

1.2.  如果安装过请先卸载

 停止docker

systemctl stop docker
yum remove docker \
           docker-client \
           docker-client-latest \
           docker-common \
           docker-latest \
           docker-latest-logrotate \
           docker-logrotate \
           docker-engine

1.3.安装依赖

 yum -y install gcc
yum -y install gcc-c++

安装依赖:

yum install -y yum-utils 

阿里云的镜像地址

 yum-config-manager \
  --add-repo \
   http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

验证设置是否成功 

cd /etc/yum.repos.d
ls

1.4、安装docker相关的引擎

1.4.1更新索引

yum makecache fase 

1.4.2 安装docker

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

1.4.3 启动并加入开机启动

systemctl start docker

  设置开机启动 

systemctl enable docker

1.6.验证是否安装成功

docker version

加速下载镜像可以配置阿里的加速器

地址:https://cr.console.aliyun.com的控制台

mkdir -p /etc/docker/

 mkdir -p /etc/docker
 tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://aaaaaa.aliyuncs.com"]
}
EOF
 systemctl daemon-reload
 systemctl restart docker

2docker常用命令

启动

systemctl start docker

停止

systemctl stop docker

重启

systemctl restart docker

状态

systemctl status docker

 概要信息

docker info

机器存放docker镜像得地址,也可以看到docker仓库的地址 

帮助文档

docker --help

搜索镜像(mysql为例)

docker search mysql

  1. name:代表此镜像的名称
  2. description:此镜像的描述
  3. stars:下载次数
  4. official:是否由官方提供(官方提供可放心下载,可以基于此镜像做自己的镜像)
  5. automated 自动化的

拉取镜像 (不加版本直接拉取最新版本)

#直接下拉最新版本
docker pull mysql
#拉取8.0版本
docker pull mysql:8.0

查看本地镜像

docker images  #查看已下载镜像。

导入镜像

docker load -i /root/docker-centos-httpd.tar

删除镜像

#删除镜像 
docker rmi  [IMAGE ID]   

#强制删除镜像 
docker rmi -f [IMAGE ID]    

#删除全部镜像  
docker rmi -f $(docker images -aq)     

3容器命令

3.1运行容器

运行容器

option作用
--name="容器的新名称"为容器指定一个新名称
-d后台运行
-i交互模式运行容器,通常与-t同时使用 (非后台启动)
-t为容器从新分配一个伪终端,通常与 -i同时使用
-p(小写p) 指定端口映射,格式:主机(宿主)端口:容器端口
-P(大写P)随机端口映射
-u以什么用户身份创建容器
-m, --memory bytes设置容器使用内存最大值
-h, --hostname string指定容器的 host name
–dns 8.8.8.8指定容器 dns 服务器
-e username=“ritchie”设置环境变量
–restart Docker重启后,容器是否自动重启
–privileged容器内是否使用真正的 root 权限

 直接启动容器实例:

#启动mysql实例 但是名称是随机的,端口也是 不推荐
docker run mysql


#启动mysql实例并且开启一个内部的 shell窗口(可用linux命令操作mysql实例内部)
docker run -it  mysql /bin/bash

退出shell窗口
exit:容器也会停止
ctrl+p+q :容器不会停止


# 运行   名字是 my_tomcat8的 tomcat(版本8) 非后台启动方式
docker run --name my_tomcat8 tomcat:8
ctrl +c 退出


# 后台运行
docker run -d --name my_tomcat8 tomcat:8


#后台启动 主机9999端口映射8080 
docker run -d -p 9999:8080 --name my_tomcat8 tomcat:8


#主机的目录 /usr/local/tomcat/webapps 映射到容器的 /usr/local/tomcat/webapps
以后直接在主机的 webapps 目录上传 war 包,就能在浏览器访问对应的项目
docker run -d -p 9999:8080 -i --name tomcat7 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat:7

查询已经启动的容器

docker ps

查询全部容器(已经停止的/正在启动)

docker ps -a

重启容器:

docker restart 容器id或者容器名

停止容器:

docker stop 容器id或者容器名

强制停止容器:

docker kill 容器id或者容器名

删除已经停止的容器:

docker rm 容器id或者容器名

事例如何停止容器实例

 镜像命令大全

不指定名称或者端口映射 都是随机给你

docker images  #查看所有本地主机的镜像
docker search 镜像名           #搜索镜像
docker pull 镜像名 [标签]      #下载镜像(如果不写tag,默认是latest)
docker rmi 镜像名 [标签]       #删除镜像  
docker rmi image Id       #删除镜像 (运行中的删除不了)
 docker rmi -f $(docker images -aq)  删除全部镜像
 docker rmi -f image Id  强制删除镜像
docker tag  镜像名:版本   新镜像名:版本    #复制镜像并且修改名称
docker commit  -a "xxx"  -c "xxx" 镜像ID 名字:版本   #提交镜像 
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;

docker load -i    /xxx/xxx.tar         #导入镜像
docker save -o   /xxx/xxx.tar          #保存一个镜像为一个tar包

容器命令

docker run [可选参数] image 命令 #启动容器(无镜像会先下载镜像)
#参数说明
--name = "Name"   容器名字
-c   后面跟待完成的命令
-d   以后台方式运行并且返回ID,启动守护进程式容器
-i   使用交互方式运行容器,通常与t同时使用
-t   为容器重新分配一个伪输入终端。也即启动交互式容器
-p   指定容器端口    -p 容器端口:物理机端口  映射端口
-P   随机指定端口
-v   给容器挂载存储卷

docker build  #创建镜像        -f:指定dockerfile文件路径   -t:镜像名字以及标签
docker logs 容器实例的ID          #查看容器日志
docker rename 旧名字  新名字      # 给容器重新命名
docker top    容器实例的ID                  #查看容器内进程
docker ps -a                    #列出所有容器(不加-a就是在运行的)
docker rm      容器实例的ID                 #删除容器(正在运行容器不能删除,除非加-f选项)
docker kill  容器实例的ID        #杀掉容器
docker history   容器实例的ID    #查看docker镜像的变更历史
docker start 容器实例的ID        #启动容器
docker restart 容器实例的ID       #重启容器
docker stop 容器实例的ID         #停止正在运行的容器
docker attach /docker exec  容器实例的ID   #同为进入容器命令,不同的是attach连接终止会让容器退出后台运行,而exec不会。并且,docker attach是进入正在执行的终端,不会情动新的进程,而docker exec则会开启一个新的终端,可以在里面操作。
docker image inspect  容器名称:容器标签       #查看容器内源数据
docker cp  容器id:容器内路径   目的主机路径           #从容器内拷贝文件到主机(常用)或者从主机拷贝到容器(一般用挂载)
exit                           #直接退出容器 
crlt + P + Q                   #退出容器但是不终止运行

3.2 运行后容器操作

 运行一个redis实例 

docker run -d -p 6379:6379 --name my_redis redis:6.0.8

  查询全部容器实例(找到容器实例ID)

docker ps -a

  查询容器产生的日志

docker logs 容器id或者容器名

  查看容器内运行进程

docker top 容器id或者容器名

  查看容器内部信息(json形式展示)

docker inspect 容器id

进入容器并以命令交互 

进入容器里(推荐): /user/local/启动的镜像 
docker exec -it 容器id /bin/bash
 进入容器里:(不要用)
docker attach 容器id /bin/bash

区别:attach直接进入,不会启动新的进程,用exit退出,会导致容器的停止

        exec ,启动新的进程,用exit退出,不会导致容器的停止

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

docker cp 容器id: 容器内路径  目的主机路径 
docker cp 容器id: /user/local/a.txt  /user/local 

导入导出镜像

  场景 基础镜像

docker export 容器id>文件名.tar
cat 文件名.tar | docker import - 镜像新名称:镜像版本号

 将实例打包到当前目录下并叫 my_redis.tar

docker export e0bb0dcbc45b>my_redis.tar

 导入

cat my_redis.tar | docker import - myredis/redis:6.0.8

 导入的时候不能改别的名称

docker load -i    /xxx/xxx.tar         #导入镜像
docker save -o   /xxx/xxx.tar          #保存一个镜像为一个tar包

提交镜像:

docker commit  -a "xxx"  -c "xxx" 镜像ID 名字:版本   #提交镜像 
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
docker commit  -a "xiaoming" -m "测试redis docker images"  e0bb0dcbc45b redisname:6.0.8

本地镜像发布到阿里云

容器卷挂载

1:保存重要数据作用

2:映射的目录的数据,双向同步数据,主机创建,docker会同步,docker里创建,主机也会同步数据(因为-v  默认是 "rw" 权限,读写权限  )

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

查看运行的容器挂在信息

docker inspect 容器id

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值