#搜索拉取镜像 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 ~]# lsanaconda-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 qdocker 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