docker 镜像和容器

目录

一、简述

二、拉取镜像

1、配置加速器

 /etc/docker/daemon.json上进行配置

是否配置生效的验证

2、拉取镜像   —— docker  pull   镜像名

3、查看本地已拉取的镜像   —— docker image ls / docker images

4、搜索站点内的镜像资源  —— docker search   镜像名

三、修改镜像的标签 —— docker tag  镜像ID   新repository:新tag

四、启动容器(拉取+启动)—— docker  run  -itd  repository名    

1、启动容器并给容器自定义命名  —— docker run --name "自定义名字" -itd  镜像名

2、启动容器运行指定命令后自动退出并删除 —— docker run --rm -it 镜像名 bash -c "执行的命令"

五、查看容器启动状态  ——  docker  ps  -a

六、停止容器 —— docker  stop  容器id

七、删除一个容器 —— docker  rm  容器id

八、删除一个镜像 —— docker rmi  repository:tag 

九、进入一个容器内部 —— docker exec -it  容器name bash

1、bash启动不了时,则可用 sh 替代

十、宿主机和容器内文件的相互传输(格式和scp类型)——docker  cp   宿主目录  容器NAME:容器目录

十一、端口映射(容器内映射到宿主机上)——  docker run -p  外port:内port 

1、指定映射的端口

2、自动映射端口

丶实验例子:


一、简述

win系统常用Ghost技术来做镜像,把系统和系统上安装的应用程序一起打包做备份,在别的电脑上安装这个GHO镜像则会有和源系统一摸一样的系统和应用。

docker功能类似,而且是分层的,在拉取镜像时候可见。

docker镜像拉取下来后,可以直接运行,运行后的东西我们叫容器,一个镜像可以启动很多容器。

容器就是镜像启动后的状态,在linux系统里看就是一个进程。

容器可以进入,就如同进入一个虚拟机一样。

二、拉取镜像

1、配置加速器

  •  /etc/docker/daemon.json上进行配置

官方地址是 hub.docker.com , 但我们可以自己配置一个阿里云镜像站加速。

这个镜像站可以去阿里云后台申请。

cat > /etc/docker/daemon.json  <<EOF
{
   "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOF

查看 daemon.json

配置完生效需要重启  systemctl restart docker 

  • 是否配置生效的验证

docker info   里会显示registry mirrors 一项

发生错误的话可以看debug信息

dockerd --debug    这个报错是正常的,因为在运行所以守护程序没启动。

2、拉取镜像   —— docker  pull   镜像名

这个busybox是单层的镜像

redis是多层的镜像

3、查看本地已拉取的镜像   —— docker image ls / docker images

 TAG   通常是版本号,最新版就是latest

IMAGE ID    镜像独有自己的ID

4、搜索站点内的镜像资源  —— docker search   镜像名

official  是官方的

要搜索镜像具体的版本,可以去官网 https://hub.docker.com/  搜索,点击 tag 查看

 docker pull nginx:1.23.2     拉取指定版本的nginx镜像

三、修改镜像的标签 —— docker tag  镜像ID   新repository:新tag

也可以写成:  docker   tag   旧repository:旧tag    新repository:新tag

IMAGE ID 是唯一确定容器身份的,新tag的名字虽然不一样但是image id 会是一样的。

修改镜像的tag会产生一个新的image记录,但是用的镜像id是一样的。

四、启动容器(拉取+启动)—— docker  run  -itd  repository名    

-i  让容器的标准输入打开

-t   表示分配一个伪终端

-d  表示后台启动

 启动时打印显示的 container id 是完整的,docker  ps  中查看到的只是ID的一部分,但是依然可以用于执行容器操作。

实际上启动时候会先从本地寻找这个镜像,如果没有会先自动去拉取,拉取完后启动。

1、启动容器并给容器自定义命名  —— docker run --name "自定义名字" -itd  镜像名

 有了name以后,操作容器既可以用 CONTAINER ID 也可以用NAMES

就好像操作镜像时候既可以用  也可以用 REPOSITORY:TAG

2、启动容器运行指定命令后自动退出并删除 —— docker run --rm -it 镜像名 bash -c "执行的命令"

作用:只是为了运行容器里的某些指令,执行完以后,自动会退出并删除容器

五、查看容器启动状态  ——  docker  ps  -a

加了-a可以看到未启动的容器

六、停止容器 —— docker  stop  容器id

七、删除一个容器 —— docker  rm  容器id

需要先stop停止这个容器。

如果未停止就要强行删除,加-f 选项(force)

八、删除一个镜像 —— docker rmi  repository:tag 

一个镜像文件可能起了几个tag(image id 一致的多个tag的镜像),这时用 镜像id 删除会报错,需要用 docker rmi  repository:tag 方式来删除,但这时因为该镜像还有别的tag所以只会删除该tag的镜像记录而已,并没有把该镜像文件完全删除去。

当镜像只有唯一的tag的时候,可以使用 docker rmi  容器id   的删除方式。

当镜像不是tag的时候,需要加 -f 强制一次性删除该镜像id相关的所有tag的镜像。

九、进入一个容器内部 —— docker exec -it  容器name bash

1、bash启动不了时,则可用 sh 替代

容器和宿主机内核一样,说明是共享了一个内核

容器里的 hostname 就是 容器ID 

十、宿主机和容器内文件的相互传输(格式和scp类型)——docker  cp   宿主目录  容器NAME:容器目录

在挂载点目录下的文件可以直接查看,非挂载目录下的文件需要通过命令传输。

宿主机——>容器

docker  cp  宿主机目录文件  容器NAME:容器内目录

容器 —— > 宿主 机

docker   cp  容器NAME:容器内目录文件    宿主机目录

十一、端口映射(容器内映射到宿主机上)——  docker run -p  外port:内port 

1、指定映射的端口

docker run -itd  -p  宿主机端口:容器内端口  --name  XXX  镜像名   bash

 把容器内的80端口映射到宿主机上的8088端口,则直接能从宿主机的8088端口访问容器80端口。

docker ps 中也能看到映射的端口

 

2、自动映射端口

自动 把容器已暴露的端口 随机映射 到宿主机上

docker run -itd  -P  --name  XXX  镜像名   bash

 

丶实验例子:

ubantu很纯洁,先下载update才能使用install 

 ubuntu 的apt相当于nginx的yum

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值