35次8.23(docker02)

复制代码
#搜索拉取镜像
docker search centos
docker pull centos
#创建启动容器
docker run -it --name=a0 centod:latest echo "abc"
#如果容器中没有正在执行的指令,就会exit
docker run -it --name=a0 cenyos:latest /bin/bash
#查看docker进程
docker ps
#发现没有正在运行的进程
​
#启动容器,现在容器已经存在,但是exiting状态
docker start a0
​

35次8.23

一、打包传输

复制代码
#查看帮助文件
docker --help
#找到save,将镜像打包tar
docker save --help
#查看save使用方式
​
#查看现有镜像
docker images
#docker save -o centos.tar centos:latest
复制代码
[root@docker ~]# docker save -o centos.tar centos:latest
[root@docker ~]# ls
anaconda-ks.cfg  centos.tar
#可以将tar发送给其他用户,也可做备份

1.删除镜像

复制代码
[root@docker ~]# docker rmi centos:latest
Error response from daemon: conflict: unable to remove repository reference "centos:latest" (must force) - container cdfc1f05bc76 is using its referenced image 5d0da3dc9764
#如果有这个镜像生成的容器正在使用,就无法使用rmi移除镜像
#删除容器。退出容器的up状态
docker rm c0
#使用docker ps --all确定没有镜像
docker rmi centos:latest
复制代码
[root@docker ~]# docker rmi centos:latest
Untagged: centos:latest
Untagged: centos@sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Deleted: sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6
Deleted: sha256:74ddd0ec08fa43d09f32636ba91a0a3053b02cb4627c35051aff89f853606b59
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

2.从tar中引入镜像

复制代码
docker --help
docker load --help
docker load -i centos.tar centos:latest

二、容器导出镜像

1.从容器导出tar包

复制代码
#查看看帮助文档
docker --help
docker export --help
#使用指令
docker export -o centos_yum.tar c0
#查看新生成的tar包

2.从tar包导入镜像

复制代码
#查看帮助
docker --help
docker import --help
#使用导入
docker import -m 说明内容 centos_yum.tar centos:yum

3.封装镜像

复制代码
[root@docker ~]# docker run -it --name c0 centos:latest /bin/bash
[root@5906fffd3383 /]# cd /etc/yum.repos.d     
[root@5906fffd3383 yum.repos.d]# rm -rf *
[root@5906fffd3383 yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
[root@5906fffd3383 yum.repos.d]# ls
CentOS-Base.repo
[root@5906fffd3383 yum.repos.d]# yum -y install epel
[root@5906fffd3383 yum.repos.d]# yum clean all && yum makecache
[root@41c9a7796fde /]# read escape sequence
 # 查看帮助文档
[root@docker ~]# docker --help
[root@docker ~]# docker export --help
 # 使用指令
[root@docker ~]# docker export -o centos_yum.tar c0
 # 查看新生成的tar包
[root@docker ~]# ls
 anaconda-ks.cfg  centos.tar  centos_yum.tar 
 # 查看帮助文档
[root@docker ~]# docker --help
[root@docker ~]# docker import --help
 # 使用指令
[root@docker ~]# docker import -m yum centos_yum.tar centos:yum
 # 查看镜像
[root@docker ~]# docker images
复制代码
docker ps --all
#停用并删除容器
docker stop c1 && docker rm c0
​
#打开一个新容器
docker run -it --name c10 centos:latest /bin/bash

4.做一个带httpd服务的镜像

复制代码
docker run -it --name c100 centos:yum /bin/bash
yum -y install httpd
echo "abcd" > /var/www/html/index.html
httpd -k start   #启动服务
    curl p q
docker export -o centos_httpd.tar c100  #导出镜像
docker import -m httpd centos_httpd.tar centos:httpd  #导入镜像
docker images
docker run -it --name c101 centos:httpd /bin/bash  #测试镜像是否可以使用
httpd -k start
curl localhost

三、查看ip

1.进入容器,使用指令(交互式)

复制代码
docker attach c100
yum -y install net-tools,iprout
ip a s
ifconfig

2.使用docker指令inspect

复制代码
docker inspect c100
docker inspect c101

3.在外部调用指令(exec)

复制代码
docker exec c100 ip a
docker exec c101 ifconfig

4.使用exectouch一个文件

四、虚拟机端口映射

1.将容器中的80端口映射到宿主机(docker主机)80端口(指定端口)

复制代码
docker run -it --name c0 -p80:80 centos:httpd /bin/bash

2.随机的为容器指定映射端口,映射端口为80(随机端口)

复制代码
docker run -it --name c0 -p80:80 centos:httpd /bin/bash
​
  curl p q
  docker ps

3.通过其他的ip地址的端口映射的端口(指定其他ip的端口)

复制代码
docker run -it --name c0 -p192.168.1.51 centos:httpd /bin/bash
192.168.1.51:32768  #真机测试

五、数据存储

docker容器只是一个工具,不需要保存数据,不需要做持久化,如果要做持久化,就需要保存到宿主机上,需要宿主机和容器之间有一个共享卷

挂载外部文件

复制代码
[root@docker ~]# mkdir /source
[root@docker ~]# ls /
bin   dev  home  lib64  mnt  opt   root  sbin    srv  tmp  var
boot  etc  lib   media  nfs  proc  run   source  sys  usr
[root@docker ~]# docker run -it --name c0 -v /source:/data centos:httpd /bin/bash  #挂载
[root@996134ed7790 /]# ls
bin   dev  home  lib64       media  opt   root  sbin  sys  usr
data  etc  lib   lost+found  mnt    proc  run   srv   tmp  var
#添加文件,查看是否挂载成功
[root@docker ~]# docker exec c0 ls /data
abc.txt
[root@docker ~]# docker exec c0 touch /data/def.txt
[root@docker ~]# ls /source/
abc.txt  def.txt
相关推荐
gs8014011 分钟前
替换 Docker.io 的 Harbor 安全部署指南:域名与 IP 双支持的镜像管理解决方案
docker·harbor
coco_1998_213 分钟前
nvidia docker, nvidia docker2, nvidia container toolkits区别
docker·容器
团儿.28 分钟前
Docker服务发现新纪元:探索Consul的无限魅力
运维·docker·云计算·服务发现·consul
vvw&1 小时前
Docker Build 命令详解:在 Ubuntu 上构建 Docker 镜像教程
linux·运维·服务器·ubuntu·docker·容器·开源
dessler2 小时前
Docker-Dockerfile讲解(二)
linux·运维·docker
-指短琴长-5 小时前
Docker之技术架构【八大架构演进之路】
docker·容器·架构
大熊程序猿6 小时前
docker 搭建集群
spring cloud·docker·微服务
lcx_defender6 小时前
【Docker】部署MySQL容器
mysql·docker·容器
登高·6 小时前
Docker pull images Error
运维·docker·容器
Zhijun.li@Studio7 小时前
使用 Conda 环境创建 Docker 镜像的完整指南
docker·容器·conda