Docker容器简介

Docker容器讲解

在这里插入图片描述图片来源:传智黑马
1.daemon:守护进程,后台运行的进程(说明docker已经启动成功了)
2.container:容器,根据镜像文件按创建出的动态实例。 (镜像和容器可以类比类和实例),container来源于远程的仓库(官方的仓库在国外,下载速度比较慢,私有的仓库(私服)可以进行自己镜像的传递和共享,速度快)

  • 配置镜像加速器
    默认情况下,下载镜像的时候是从docker hub(https://hub.docker.com/)上下载镜像,速度比较慢,我们会配置镜像加速器,通常使用的是阿里云的镜像加速器。
    1.找到加速器地址: 浏览器输入“阿里云”(进行验证)—>容器镜像服务---->镜像中心(镜像加速器)---->加速器地址
    在这里插入图片描述加速器地址是特有的,每个人的都不一样,不需要付费(感谢)。

2.配置加速器: 针对Docker客户端版本大于 1.10.0 的用户

您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-‘EOF’
{
“registry-mirrors”: [“此处是生成的加速器地址”]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
在( ~表示/root)linux下运行这些命令即可。
通过运行此命令 cat /etc/docker/daemon.json 如果有数据打印出来,即"registry-mirrors":[“进行加速器的地址”] ,说明已经安装成功。

  • Docker命令
    1.操作daemon命令
    启动docker服务: systemctl start docker
    停止:systemctl stop docker
    重启:systemctl restart docker
    查看docker服务状态:systemctl status docker
    开机启动docker服务:systemctl enable docker

    2.操作images命令
    查看镜像(本地交互):docker images
    REPOSITORY(镜像名称) TAG(版本号) IMAGE_ID(镜像标识符) CREATED(创建时间) SIZE(镜像大小)
    搜索镜像(远程交互):docker search redis(“镜像名称”)
    拉取镜像(远程交互):docker pull redis (不写版本号就下载最新的) redis:3.2(版本号为3.2,查找版本号去docker hub查找)
    删除镜像(本地交互):docker rmi 镜像标识 || docker rmi 名字:版本号
    docker images -q 查询所有镜像的IMAGE_ID
    删除所有的镜像:docker rmi " docker images -q"

    3.操作container命令
    查看容器:docker ps(查看正在运行的容器) docker ps -a (查看历史容器)
    创建:docker run -it(i一直运行,t且分配一个终端,(两个立即)立即进入容器,使用exit立即退出容器) --name=mysoft("=可替换空格") 容器名称:版本号 /bin/bash (进入容器的初始化指令)
    docker run -id(i一直运行,d后台运行,创建时不会立即进入容器,只有使用命令才会进入容器,使用exit容器并不会退出) --name=mysoft("=可替换空格") 容器名称:版本号
    进入容器:docker exec -it c2(设置的别名) /bin/bash

    参数总结
    -i保持容器运行,通常与-t同时使用。加入it这两个参数后,容器创建之后自动进入容器,退出容器之后,自动退出。
    -t 为容器重新分配一个为输入终端,通常与-i使用。
    -d 以守护(后台)模式运行容器,创建一个容器在后台运行,需要使用docker.exec进入容器,退出后容器不会关闭。
    -it 创建的容器一般为交互式容器,-id创建的容器一般为守护式容器
    –name 为创建的容器命名
    退出;exit
    进入:docker exec 容器名称
    启动:docker start myredis(容器的名称) docker run …(创建并启动容器)
    查看所有的ID:docker ps -aq
    删除所有的容器:docker rm “docker ps -aq” —>开启的容器不能删除
    停止:docker stop 容器名称
    删除:docker rm 容器的id或者容器的名字
    查看容器信息:docker inspect c2

Docker容器数据卷
1.数据卷的概念:
数据卷是宿主机中的目录或文件。
当容器目录和数据卷目录绑定之后,对方的改修会立即同步。相当于共享文件的方式。
引入数据卷可以有效解决如下的问题:在我们删除容器之后,则容器中的数据会丢失,此外外部机器不能与容器进行通信,但是可以与宿主机进行通信,如果容器之间想要进行通信,该怎么解决。
在这里插入图片描述
容器1和宿主机数据卷目录挂载在一起,数据是同步的,当删除容器1时,容器1的数据还保留在宿主机的数据卷中,同时容器2和数据卷进行挂载,数据卷目录可充当容器1和容器2的桥梁,容器1可以和容器2进行通信。
(容器和数据卷的关系):一个数据卷可被多个容器挂载,一个容器也可以挂载多个数据卷

2.配置数据卷
docker run …(多个-v) -v 宿主机目录(文件):容器内目录(文件)
1.目录必须是绝对路径
2.如果目录不存在,则会自动创建
3.可以挂载多个数据卷

(1)运行此命令: docker run -it --name=mysql -v /root/data:/root/data_container mysql:5.5 /bin/bash
(2).使用cd~进入此容器的根目录
(3).输入ls命令:将会出现你创建的容器 data_container
(4).打开一个新的会话(克隆一个会话),输入ll命令,可查看到新创建的文件为data
(5) 进入data文件夹:cd data
(6)创建一个txt文件:touch hello.txt
(7) 回到容器的会话,进入创建的容器目录:cd data-container
(8) 输入:ls 可得到在宿主机中创建的文件hello.txt ,由此可得,容器和宿主机进行了数据同步。
(9)在容器的会话窗口下:输入echo itcast > a.txt
(10) 在data文件夹下,输入ll, 可查看到 a.txt ,之后输入cat a.txt,打印出:itcast
(11)在容器中使用exit命令退出,
(12)重新挂载,输入命令:docker run -it --name=mysql -v /root/data:/root/data_container mysql:5.5
会出现错误:

error: database is uninitialized and password option is not specified 
  You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD

表明启动时需要设置密码:

docker run -d -P -e MYSQL_ROOT_PASSWORD=密码 mysql:5.5

在容器和宿主机之间进行了数据同步。

echo - 显示一行文本
允许在标准输出上显示STRING(s).
-n 不输出行尾的换行符.
-e 允许对下面列出的加反斜线转义的字符进行解释.
-E 禁止对在STRINGs中的那些序列进行解释.
–help 显示帮助并退出(须单独运行)
–version 输出版本信息并退出(须单独运行)

用法:cat [选项] [文件]…
将[文件]或标准输入组合输出到标准输出。

-A, --show-all 等价于 -vET
-b, --number-nonblank 对非空输出行编号
-e 等价于 -vE
-E, --show-ends 在每行结束处显示 $
-n, --number 对输出的所有行编号
-s, --squeeze-blank 不输出多行空行
-t 与 -vT 等价
-T, --show-tabs 将跳格字符显示为 ^I
-u (被忽略)
-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
–help 显示此帮助信息并退出
–version 输出版本信息并退出

通过两个容器挂载到数据卷目录,实现两个容器之间的通信。类比容器和数据卷就可以,把另一个容器挂载到数据卷即可。

3.数据卷容器
在这里插入图片描述
说明:容器c1挂载到数据卷,容器c2挂载到数据卷,容器c3挂载到数据卷,
c1,c2分别挂载到c3,则c3就为数据卷容器。
1.创建启动c3的数据卷,使用-v 参数 设置数据卷
eg:docker run -it --name=v3 -v /volume mysql:5.5 /bin/bash
2.创建启动c1,c2容器,使用–volumes- from 参数 设置数据卷
eg: docker run -it --name=c1 --volumes-from c3 mysql:5.5 /bin/bash
eg: docker run -it --name=c2 --volumea-from c3 mysql:5.5 /bin/bash

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值