Docker学习

一、Docker的三大元素

1.容器:镜像的实例,可以运行
2.镜像:程序运行打包的环境
3.仓库:用于存放镜像

二、Docker的安装

2.1 CentOS6.8系统安装Docker

#安装环境依赖
yum install -y epel-release

#安装docker
# 1. yum install -y docker-io 如果此方法报错 No package docker-io available ,采用法2
# 2.yum install https://get.docker.com/rpm/1.7.1/centos-6/RPMS/x86_64/docker-engine-1.7.1-1.el6.x86_64.rpm

#查看是否有docker的配置文件
cat /etc/sysconfig/docker

#启动docker的后台服务验证
service docker start

#查看是否安装成功
docker version

如果是CentOS7,安装如下:
在这里插入图片描述

2.2 配置镜像加速器及HelloWord试运行

理论上应从DockerHub上pull拉取,但是速度太慢,选择国内阿里云镜像拉取
2.2.1 阿里云镜像加速
登录阿里云–>产品与服务–>容器镜像服务->镜像加速器,获取加速地址
在这里插入图片描述
修改Docker配置文件,更改镜像仓库的地址:
在这里插入图片描述

#修改Docker配置文件,更改镜像仓库的地址
vi /etc/sysconfig/docker
#修改的内容 other_args="--registry-mirror=https://你自己的账号加速信息.mirror.aliyuncs.com"
#启动Docker后台服务
service docker restart
#检查配置的加速器是否生效
ps -ef|grep docker
# 注意:网易云加速步骤基本同阿里云加速

出现以下信息即表示生效,显示自己配置的加速地址在这里插入图片描述
2.2.2 启动Docker后台容器(测试运行 hello-world)

#启动运行helloworld
docker run hello-world
#docker run做了什么? run了一个名称为hello-world的镜像

在这里插入图片描述
docker run做了什么?
在这里插入图片描述

三、Docker常用交互命令

3.1 帮助命令

#查看验证安装版本
docker version
#查看具体信息,比docker version信息更全面
docker info
#命令帮助
docker -help

在这里插入图片描述

3.2 镜像命令

#列出本地主机上的镜像
docker images
# OPTIONS说明:
# -a : 列出本地所有的镜像(含中间映像层)
# -q : 只显示镜像ID。
# --digests :显示镜像的摘要信息
# --no-trunc :显示完整的镜像信息,不要截取,ID会贼长
## docker image 各个选项说明:
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小

同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像
在这里插入图片描述

## docker search 某个XXX镜像名字,需要去https://hub.docker.com网站上去搜索
docker search 某个XXX镜像名字
# OPTIONS说明:
# --no-trunc : 显示完整的镜像描述
# -s : 列出收藏数不小于指定值的镜像。 docker search -s 30 tomcat
# --automated : 只列出 automated build类型的镜像;

## docker pull 拉取某个镜像,格式: docker pull [:版本号]
docker pull 镜像名字[:TAG]
#例子:docker pull tomcat 注意此条命令等价于:docker pull tomcat:lastest 省略版本号,默认最新版
#如果不需要最新版,则为 docker pull tomcat:7.0(拉取7.0版本)

## docker rmi 删除某个镜像 格式: docker rmi [:版本号]
docker rmi 某个XXX镜像名字ID
#可能同时有几个版本,不写版本号,默认删除最新
# 删除单个: docker rmi  -f 镜像ID
# 删除多个: docker rmi -f 镜像名1:TAG 镜像名2:TAG 
# 删除全部: docker rmi -f $(docker images -qa)

3.3 容器命令

docker pull centos
#新建并启动容器,格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
#OPTIONS说明(常用):
# --name="容器新名字": 为容器指定一个名称;
# -d: 后台运行容器,并返回容器ID,也即启动守护式容器;
# -i:以交互模式运行容器,通常与 -t 同时使用;
# -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
# -P: 随机端口映射;
# -p: 指定端口映射,有以下四种格式
#      ip:hostPort:containerPort    IP:主机端口:容器端口(最常使用)
#      ip::containerPort
#      hostPort:containerPort
#      containerPort
# -e: 环境配置

如:
docker run -it centos /bin/bash  #启动并进入容器
exit  # 从容器中退出到主机
##列出当前所有正在运行的容器 docker ps [OPTIONS]
docker ps [OPTIONS]
#OPTIONS说明(常用):
# -a :列出当前所有正在运行的容器+历史上运行过的
# -l :显示最近创建的容器。
# -n:显示最近n个创建的容器。
# -q :静默模式,只显示容器编号。
# --no-trunc :不截断输出。
# 退出容器:两种退出方式
#1.容器停止退出,不能再回来
exit
#2.容器不停止退出,还能回来
ctrl+P+Q
#启动容器
docker start 容器ID或者容器名

#重启容器
docker restart 容器ID或者容器名

#停止容器
docker stop 容器ID或者容器名

#强制停止容器
docker kill 容器ID或者容器名

#删除已停止的容器
docker rm 容器ID
##一次性删除多个容器:
#(1)docker rm -f $(docker ps -a -q) 
#(2)docker ps -a -q | xargs docker rm

相对重要的命令

#启动守护式容器
docker run -d 容器名

#查看容器日志
docker logs -f -t --tail 容器ID
##options
#  -t 加入时间戳
#  -f 跟随最新的日志打印
#  --tail 数字 显示最后多少条


#查看容器内运行的进程
docker top 容器ID

#查看容器内部细节
docker inspect 容器ID

#进入正在运行的容器并以命令行交互,两种方式
#方式1:
docker exec -it 容器ID /bin/bash
#exec 是在容器中打开新的终端,并且可以启动新的进程
#方式2:
docker attach 容器ID
#attach 直接进入容器启动命令的终端,不会启动新的进程

#从容器内拷贝文件到主机上
docker cp  容器ID:容器内路径 目的主机路径

常用命令总结

##常用命令总结
attach    Attach to a running container                 # 当前 shell 下 attach 连接指定运行镜像
build     Build an image from a Dockerfile              # 通过 Dockerfile 定制镜像
commit    Create a new image from a container changes   # 提交当前容器为新的镜像
cp        Copy files/folders from the containers filesystem to the host path   #从容器中拷贝指定文件或者目录到宿主机中
create    Create a new container                        # 创建一个新的容器,同 run,但不启动容器
diff      Inspect changes on a container's filesystem   # 查看 docker 容器变化
events    Get real time events from the server          # 从 docker 服务获取容器实时事件
exec      Run a command in an existing container        # 在已存在的容器上运行命令
export    Stream the contents of a container as a tar archive   # 导出容器的内容流作为一个 tar 归档文件[对应 import ]
history   Show the history of an image                  # 展示一个镜像形成历史
images    List images                                   # 列出系统当前镜像
import    Create a new filesystem image from the contents of a tarball # 从tar包中的内容创建一个新的文件系统映像[对应export]
info      Display system-wide information               # 显示系统相关信息
inspect   Return low-level information on a container   # 查看容器详细信息
kill      Kill a running container                      # kill 指定 docker 容器
load      Load an image from a tar archive              # 从一个 tar 包中加载一个镜像[对应 save]
login     Register or Login to the docker registry server    # 注册或者登陆一个 docker 源服务器
logout    Log out from a Docker registry server          # 从当前 Docker registry 退出
logs      Fetch the logs of a container                 # 输出当前容器日志信息
port      Lookup the public-facing port which is NAT-ed to PRIVATE_PORT    # 查看映射端口对应的容器内部源端口
pause     Pause all processes within a container        # 暂停容器
ps        List containers                               # 列出容器列表
pull      Pull an image or a repository from the docker registry server   # 从docker镜像源服务器拉取指定镜像或者库镜像
push      Push an image or a repository to the docker registry server    # 推送指定镜像或者库镜像至docker源服务器
restart   Restart a running container                   # 重启运行的容器
rm        Remove one or more containers                 # 移除一个或者多个容器
rmi       Remove one or more images             # 移除一个或多个镜像[无容器使用该镜像才可删除,否则需删除相关容器才可继续或 -f 强制删除]
run       Run a command in a new container              # 创建一个新的容器并运行一个命令
save      Save an image to a tar archive                # 保存一个镜像为一个 tar 包[对应 load]
search    Search for an image on the Docker Hub         # 在 docker hub 中搜索镜像
start     Start a stopped containers                    # 启动容器
stop      Stop a running containers                     # 停止容器
tag       Tag an image into a repository                # 给源中镜像打标签
top       Lookup the running processes of a container   # 查看容器中运行的进程信息
unpause   Unpause a paused container                    # 取消暂停容器
version   Show the docker version information           # 查看 docker 版本号
wait      Block until a container stops, then print its exit code   # 截取容器停止时的退出状态值

四、Docker 镜像练习

1 nginx
在这里插入图片描述
tomcat
在这里插入图片描述
可视化portainer

docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

提交镜像

docker commit -m="描述信息" -a="作者" 容器id 目标镜像名:[TAG]
# docker commit -m="tomcat增加hello" -a="likangg" 075aec1b0769 hellotomcat:1.0

五、Docker容器数据卷

容器删除了,数据不会删除
使用数据卷
方式一: 直接使用命令来挂载

方式一: 直接使用命令来挂载 -v
docker run -it -v 主机目录:容器目录
# docker commit -m="tomcat增加hello" -a="likangg" 075aec1b0769 hellotomcat:1.0

#实战,mysql的数据同步
docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -v /home/mysql/log:/var/log -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

具名挂载和匿名挂载

#指定路径挂载  -v  宿主机路径:容器内路径
#具名挂载     -v  卷名:容器内路径 
#匿名挂载     -v       容器内路径               
docker volume inspect 卷名
注意:
1、所有docker容器内的卷,没有指定目录的情况下都是在 /var/lib/docker/volumes/XXX
2、docker volume ls 查看所有的卷都在这个位置/var/lib/docker/volumes

在这里插入图片描述

拓展: 通过 -v 容器内路径:ro rw 改变容器的读写权限
ro readonly  #容器只读  
rw readwrite #容器可读可写
(2)一旦这个设定了容器权限,容器对我们挂载出来的内容就有限定了
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro  nginx
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw  nginx 
ro: 容器内部对具名挂载的文件没有写权限,只能读取

方式二: DockerFile实现
DockerFile就是用来构建docker镜像的构建文件,命令脚本!
通过这个脚本可以生成对象,对象是一层一层的,脚本就是一个一个的命令,每个命令就是一层
在这里插入图片描述

# /home/docker-test-volume/dockerfilel 构建脚本文件
docker build -f /home/docker-test-volume/dockerfilel -t kang/centos:1.0 .
文件中的内容 指令必须大写
#--
FROM centos
VOLUME ["volume01","volume02"]
CMD echo “-----------end---------” #这里的每一个命令,就是镜像的一层
CMD /bin/bash
#--

在这里插入图片描述
在这里插入图片描述
构建文件中
在这里插入图片描述
这个卷和外部一定有一个同步的目录
在这里插入图片描述
数据卷容器:容器之间共享数据
如多个mysql数据同步
在这里插入图片描述
在这里插入图片描述

数据卷容器:容器隔离,数据共享
--volumes from 

#docker run -it --name d1 kang/centos:1.0
#docker run -it --name d2 --volumes from d1 kang/centos:1.0
#d2 与d1 共享数据
mysql为例
docker run -d -p 3306:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -v /var/log -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
docker run -d -p 3306:3306  -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 --volumes from mysql01 mysql:5.7

结论:容器之间配置信息的传递,数据卷容器的生命周期一直到最后一个容器stop为止。

六、DockerFile

dockerfile 用来构建docker镜像的文件

构建步骤:
1、编写一个dockerfile 文件
2、docker bulid 构建一个镜像
3、docker run  运行镜像
4、docker push 发布镜像

dockerfile命令
在这里插入图片描述

在这里插入图片描述
实战一:构建自己的centos

构建自己的centos
#1 编写编写一个dockerfile 文件 dockerfile-centos
FROM centos
MAINTAINER kang<123456@qq.com>
ENV MYPATH /user/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "----end----"
CMD /bin/bash
#2、docker bulid 构建一个镜像
docker build -f /home/docker-test-volume/dockerfile-centos -t mycentos:1.0 .
#3、运行
docker run -it mycentos:1.0
#4.发布到仓库

实战二:构建自己的tomcat
在这里插入图片描述
push到仓库
先注册账号登录在这里插入图片描述在这里插入图片描述
docker的全流程:
在这里插入图片描述

七、Docker网络

八、本地镜像发布到阿里云

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值