博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
docker常用命令与部署方式
阅读量:4118 次
发布时间:2019-05-25

本文共 5577 字,大约阅读时间需要 18 分钟。

大家都知道Docker Engine是一种开源容器化技术,主要用于构建和容器化应用程序。Docker Engine 充当客户端 - 服务器应用程序,具有如下特点:

  • 具备长时间运行的守护进程的服务dockerd;
  • API 指定程序可以用来与 Docker 守护程序交互和指令接口;
  • 命令行界面 (CLI) 客户端docker。

1.、Docker常用命令

(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 top 
docker 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

2、docker高级使用

(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。

3、搭建docker私有仓库

参考文档:

https://www.php.cn/docker/463389.html
https://www.php.cn/docker?p=2

4、如何更换国内镜像源

4.1、从官方下载

通过命令,直接从中国官方镜像加速地址下载,可通过 registry.docker-cn.com 访问

docker pull registry.docker-cn.com/myname/myrepo:mytag`注`:除非您修改了Docker守护进程的–registry-mirror参数,否则您将需要完整地指定官方镜像的名称。例如,library/ubuntu、library/redis、library/nginx

4.2、 Docker守护进程配置加速器

通过配置文件启动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

5、Docker部署

5.1、部署前提

(1)Docker 要求 CentOS 系统的内核版本高于 3.10 ,安装前提条件验证CentOS 版本是否支持 Docker 。

通过 uname -r 命令查看你当前的内核版本

(2)查看CentOS版本,本次安装以CentOS 7.8为例

通过 cat /etc/redhat-release 命令查看OS版本

5.2、在线安装

请参考官方文档: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

在这里插入图片描述

5.3、离线安装

(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/

你可能感兴趣的文章
前阿里手淘前端负责人@winter:前端人如何保持竞争力?
查看>>
【JavaScript 教程】面向对象编程——实例对象与 new 命令
查看>>
我在网易做了6年前端,想给求职者4条建议
查看>>
SQL1015N The database is in an inconsistent state. SQLSTATE=55025
查看>>
RQP-DEF-0177
查看>>
Linux查看mac地址
查看>>
Linux修改ip
查看>>
MySQL字段类型的选择与MySQL的查询效率
查看>>
Java的Properties配置文件用法【续】
查看>>
JAVA操作properties文件的代码实例
查看>>
IPS开发手记【一】
查看>>
Java通用字符处理类
查看>>
文件上传时生成“日期+随机数”式文件名前缀的Java代码
查看>>
Java代码检查工具Checkstyle常见输出结果
查看>>
北京十大情人分手圣地
查看>>
Android自动关机代码
查看>>
Android中启动其他Activity并返回结果
查看>>
2009年33所高校被暂停或被限制招生
查看>>
GlassFish 部署及应用入门
查看>>
iWatch报错: Authorization request cancled
查看>>