本文共 5577 字,大约阅读时间需要 18 分钟。
大家都知道Docker Engine是一种开源容器化技术,主要用于构建和容器化应用程序。Docker Engine 充当客户端 - 服务器应用程序,具有如下特点:
(1) 登录本地仓库
docker login 仓库地址 --username xx --password xx(2) 查找镜像
docker images| grep 镜像名称(3) 拉取镜像
docker pull 镜像名称(4) 推送镜像
docker push 镜像名称(5) 查看镜像详情
docker inspect imageId docker inspect 容器名称 | grep IPAddress #查看Docker容器ip
(6) 从Dockerfile文件构建镜像
docker build -t 镜像名称:Tag **.** 示例: docker build -t acimagehub.com.cn/projectCode_dev/cdp-export:202105_XM_0525_v1.01 . #Dockerfile需在当前目录 或 docker build -t acimagehub.com.cn/projectCode_dev/cdp-export:202105_XM_0525_v1.01 -f 所在目录的Dockerfile文件 . #例如/opt/Dockerfile 202105:月度,0525:版本分支,v1.01:版本号 docker history 镜像名称:Tag #查看镜像构建历史
(7) 重命名镜像名称
说明:重命名后会生成一个新的镜像,将旧镜像删除即可 #命令格式: docker tag 镜像id 仓库:标签 或: docker tag 旧镜像名 新镜像名 # docker tag 470671670cac mysql:latest
(8)镜像搜索
docker search 镜像名称 #需要联网或联本地仓库(9)从镜像导出tar包
docker save [options] images [images...] 命令: docker save 镜像名 > 镜像名.tar或 或 docker image save -o 镜像.tar 镜像 示例: docker save nginx >/opt/nginx.tar 或 docker image save -o nginx.tar docker.io/nginx:latest `说明`: 其中-o和>表示输出到文件,nginx.tar为目标文件,nginx:latest是`源镜像名(name:tag)`
(10)加载镜像tar包
docker load [options] 或 cat 镜像.tar | docker load 示例: docker load nginx.tar
(11)从容器导出tar包
docker export [options] container 示例: docker export -o nginx-test.tar nginx-test 区别:其中-o表示输出到文件,nginx-test.tar为目标文件,nginx-test是`源容器名(name)`
(12)加载容器tar包
docker import [options] file|URL|- [REPOSITORY[:TAG]] 示例: docker import nginx-test.tar nginx:imp 或 cat nginx-test.tar | docker import - nginx:imp
(13)启动镜像
docker run -it 镜像ID /bin/bash 示例: docker run -it 470671670 /bin/bash 或: docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest `参数说明`: -itd:在容器中打开一个伪终端进行交互操作,并在后台运行; -v:把宿主机的/data/registry目录绑定 到 容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化; -p:映射端口,访问宿主机的5000端口就访问到registry容器的服务了; --restart=always:这是重启的策略,假如这个容器异常退出会自动重启容器; --name registry:创建容器命名为registry,你可以随便命名; registry:latest:这个是刚才pull下来的镜像;
(14)查看容器进程
docker ps docker ps --all(15) 查看容器PID
docker container topdocker container inspect 示例: docker container top redis #输出PID和其他信息 或 docker inspect -f '{ {.State.Pid}}' redis #直接输出PID
(16) 删除镜像
>删除所有容器: docker stop $(docker ps -a -q) docker rm $(docker ps -a -q) >删除images: docker rmi >删除untagged images(id为): docker rmi $(docker images | grep "^" | awk "{print $3}") >删除全部image: docker rmi $(docker images -q)
(17)进入容器
dcker exec [OPTIONS] CONTAINER COMMON [ARG...] 示例: docker exec -it 775c7c9ee1e1 /bin/bash
(18) 查看容器日志
docker logs -f -t --tail 行数 容器名 示例: docker logs -f -t --tail 10 775c7c9ee1e1
(1)删除none的镜像
docker images docker rmi $(docker images | grep "none" | awk '{print $3}') //直接删除镜像会报错
#删除none镜像的正确方式 docker stop $(docker ps -a | grep "Exited" | awk '{print $1 }') //停止容器 docker rm $(docker ps -a | grep "Exited" | awk '{print $1 }') //删除容器 docker rmi $(docker images | grep "none" | awk '{print $3}') //删除镜像
(2)export和save命令使用说明
export命令是从容器(container)中导出tar文件,而save命令则是从镜像(images)中导出基于第二点,export导出的文件再import回去时,无法保留镜像所有历史(即每一层layer信息,不熟悉的可以去看Dockerfile),不能进行回滚操作;而save是依据镜像来的,所以导入时可以完整保留下每一层layer信息。如下图所示,nginx:latest是save导出load导入的,nginx:imp是export导出import导入的。
使用说明
:若是只想备份images,使用save、load即可若是在启动容器后,容器内容有变化,需要备份,则使用export、import。 参考文档:
https://www.php.cn/docker/463389.html https://www.php.cn/docker?p=2通过命令,直接从中国官方镜像加速地址下载,可通过 registry.docker-cn.com 访问
docker pull registry.docker-cn.com/myname/myrepo:mytag`注`:除非您修改了Docker守护进程的–registry-mirror参数,否则您将需要完整地指定官方镜像的名称。例如,library/ubuntu、library/redis、library/nginx
通过配置文件启动Docker,修改 /etc/docker/daemon.json 文件并添加上 registry-mirrors 键值。
sudo vim /etc/docker/daemon.json{ "registry-mirrors": ["https://registry.docker-cn.com"]}#阿里镜像地址:http://mirrors.aliyuncs.com#网易镜像地址:http://hub-mirror.c.163.com
修改保存后,重启 Docker 以使配置生效。
sudo service docker restart
(1)Docker 要求 CentOS 系统的内核版本高于 3.10 ,安装前提条件验证CentOS 版本是否支持 Docker 。
通过 uname -r 命令查看你当前的内核版本
(2)查看CentOS版本,本次安装以CentOS 7.8
为例
通过 cat /etc/redhat-release 命令查看OS版本
请参考官方文档:https://docs.docker.com/engine/install/centos/ ,总结起来如下几个步骤:
(1)添加镜像源yum install -y yum-utils #建议使用国内镜像源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(2)安装docker
#安装最新版本 yum install docker-ce docker-ce-cli containerd.io #安装指定版本 yum install docker-ce-18.09.9-3.el7 docker-ce-cli-18.09.9-3.el7 containerd.io
(3)启动docker
systemctl enable docker #设置开机自动启动 systemctl start docker #启动docker
(1) 依赖包如下:
第一部分 下载地址(http://mirrors.aliyun.com/docker-ce/linux/centos/ 或 https://download.docker.com/linux/centos/)
docker-ce-18.09.9-3.el7.x86_64.rpm docker-ce-cli-18.09.9-3.el7.x86_64.rpm containerd.io-1.2.6-3.3.el7.x86_64.rpm
第二部分 下载地址(http://mirrors.163.com/centos/7/os/x86_64/Packages/)
audit-libs-python-2.8.5-4.el7.x86_64.rpm checkpolicy-2.5-8.el7.x86_64.rpm libsemanage-python-2.5-14.el7.x86_64.rpm libcgroup-0.41-21.el7.x86_64.rpm python-IPy-0.75-6.el7.noarch.rpm policycoreutils-python-2.5-34.el7.x86_64.rpm policycoreutils-2.5-34.el7.x86_64.rpm setools-libs-3.3.8-4.el7.x86_64.rpm
第三部分 下载地址(http://mirror.centos.org/centos/7/extras/x86_64/Packages/)
container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm
(2)执行安装
将所有依赖放到Linux的同一个文件夹,如下图所示:执行本地部署命令: yum localinstall *.rpm -y(3) 启动docker 设置docker开机自动启动,并启动服务
systemctl enable dockersystemctl start docker
转载地址:http://yjcpi.baihongyu.com/