文档章节

Docker 操作记录

MrPei
 MrPei
发布于 2018/12/20 10:45
字数 1595
阅读 12
收藏 0

1.基础命令

选项 说明 其他
--config [string] 客户端本地配置文件路径 默认为 ~/.docker
-D, --debug 启用调试模式  
--help 打印用法  
-H, --host list 通过socket访问指定的docker守护进程(服务端) unix:// , fd:// , tcp://
-l, --log-level [string] 设置日志级别 (debuginfowarnerrorfatal) 默认为 info
-v, --version 打印docker客户端版本信息  

1.1 镜像相关

#查看本地镜像
docker images

# 查询三颗星及以上名字包含alpine的镜像 
docker search -f=stars=3 alpine

#搜索镜像库 docker search nginx
docker search

#获取alpine Linux 的镜像
docker pull alpine

#推送镜像到仓库
docker push [镜像名]:[tag]

#登录/退出第三方仓库
docker login harbor
docker logout daocloud.io

#查看本地镜像
docker images

#删除本地镜像
#如果用镜像id作为参数, 可以只输入前几位, 能唯一确定即可(可以同时删除多个镜像, 空格隔开)。此外, 如果该镜像启动了容器需要先删除容器
docker rmi [镜像名 or 镜像id]

#查看镜像详情
docker inspect [镜像名 or 镜像id]

#打包本地镜像, 使用压缩包来完成迁移
# 默认为文件流输出
docker save alpine > /usr/anyesu/docker/alpine.img

# 或者使用 '-o' 选项指定输出文件路径
docker save -o /usr/anyesu/docker/alpine.img alpine

#导入镜像压缩包
docker load < [文件路径]
docker load < /usr/anyesu/docker/alpine.img
docker load -i /usr/anyesu/docker/alpine.img

#修改镜像tag
docker tag [镜像名 or 镜像id] [新镜像名]:[新tag]
docker tag a41 anyesu/alpine:1.0

1.2 容器相关操作

#创建、启动容器并执行相应的命令
docker run [参数] [镜像名 or 镜像id] [命令]
#如果没有指定命令是执行镜像默认的命令, 创建镜像的时候可设置。另外要注意的一点, 启动容器后要执行一个前台进程(就是能在控制台不断输出的, 如tomcat的catalina.sh)才能使容器保持运行状态, 否则, 命令执行完容器就关闭了。 例如:hello-world
docker run hello-world

docker run -d --name anyesu-container -h docker-anyesu --dns 8.8.8.8 -e docker_host=172.18.0.1 -e docker_host2=172.18.0.2 --net anyesu_net --ip 172.18.0.13 --expose 8081 --expose 8082 -P -p 8000:8000 -p 8001:8001 -v /usr/anyesu:/usr/anyesu --add-host anyesu_host:172.18.0.1 tomcat:7
912e6632161de0783a057aa02380e676753f66cfb367ef1686d4d09cdc931659


#-d	后台运行容器, 并返回容器ID;不指定时, 启动后开始打印日志, Ctrl + C 退出命令同时会关闭容器
#-i	以交互模式运行容器, 通常与 -t 同时使用
#-t	为容器重新分配一个伪输入终端, 通常与 -i 同时使用
#--name "anyesu-container"	为容器指定一个别名, 不指定时随机生成
#-h docker-anyesu	设置容器的主机名, 默认随机生成
#--dns 8.8.8.8	指定容器使用的DNS服务器, 默认和宿主一致
#-e docker_host=172.17.0.1	设置环境变量
#--cpuset="0-2" or --cpuset="0,1,2"	绑定容器到指定CPU运行
#-m 100M	设置容器使用内存最大值
#--net bridge	指定容器的网络连接类型, 支持 bridge / host / none / container 四种类型
#--ip 172.18.0.13	为容器分配固定ip(需要使用自定义网络)
#--expose 8081 --expose 8082	开放一个端口或一组端口, 会覆盖镜像设置中开放的端口
#-p [宿主机端口]:[容器内端口]	宿主机到容器的端口映射, 可指定宿主机的要监听的ip, 默认为 0.0.0.0
#-P	注意是大写的, 宿主机随机指定一组可用的端口映射容器 expose 的所有端口
#-v [宿主机目录路径]:[容器内目录路径]	挂载宿主机的指定目录(或文件)到容器内的指定目录(或文件)
#--add-host [主机名]:[ip]	为容器hosts文件追加host, 默认会在hosts文件最后追加 [主机名]:[容器ip]
#--volumes-from [其他容器名]	将其他容器的数据卷添加到此容器
#--link [其他容器名]:[在该容器中的别名]	添加链接到另一个容器, 在本容器hosts文件中加入关联容器的记录, 效果类似于 --add-host
#单字符选项可以合并, 如 -i -t 可以合并为 -it


#查看运行中的容器
#加 -a 选项可查看所有的容器
docker ps

#开启/停止/重启容器

# 关闭容器(发送SIGTERM信号,做一些'退出前工作',再发送SIGKILL信号)
docker stop anyesu-container
# 强制关闭容器(默认发送SIGKILL信号, 加-s参数可以发送其他信号)
docker kill anyesu-container
# 启动容器
docker start anyesu-container
# 重启容器
docker restart anyesu-container

#删除容器
#可以指定多个容器一起删除, 加 -f 选项可强制删除正在运行的容器
docker rm [容器名 or 容器id]

#查看容器详情
docker inspect [容器名 or 容器id]

#查看容器中正在运行的进程
docker top [容器名 or 容器id]

#将容器保存为镜像
docker commit [容器名 or 容器id] [镜像名]:[tag]

#使用Dockerfile构建镜像
docker build -t [镜像名]:[tag] -f [DockerFile名] [DockerFile所在目录]

1.3 硬件资源

#显示容器硬件资源使用情况
#不指定容器时显示所有正在运行的容器
docker stats [选项] [0个或多个正在运行容器]

#更新容器的硬件资源限制
docker update [选项]

2. 创建docker镜像详解

2.1 用save和export的方式将镜像保存为tar包,然后在需要的时候导入tar镜像包

2.2 将已经配置好的镜像push到我们的私有仓库或者已注册过的共有仓库中,需要的时候直接pull下来使用

这两种方式都可以,但是自动化程度低、自由度不够、定制起来比较麻烦。既然如此,那就来说一下更加自动化的创建方式。

2.3 如何用Dockerfile创建镜像

先看一份简单的Dockerfile文件

# this is a centos nginx base image dockerfile
# Author: peizhouyu

FROM centos

MAINTAINER MrPri

RUN mkdir /usr/server
RUN mkdir /usr/server/nginx
ADD nginx-1.15.7.tar.gz /usr/server/
#COPY nginx-1.15.7.tar.gz /usr/server/
RUN yum -y install tar
#RUN tar -zxf /usr/server/nginx-1.15.7.tar.gz
RUN yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel \
   # && mv /usr/server/nginx-1.15.7 /usr/server/nginx \
    && cd /usr/server/nginx-1.15.7 && ./configure && make && make install

CMD /usr/sbin/nginx

 

© 著作权归作者所有

共有 人打赏支持
MrPei
粉丝 6
博文 75
码字总数 34302
作品 0
朝阳
高级程序员
私信 提问
CentOS7 安装Docker

Docker大行其道的今天,平时对软件的操作,经常要使用到Docker,Docker使用最多的地方还是在Linux上面,经常用到,每次都要打开Docker的官网在CentOS上安装Docker实在有些麻烦,这里记录下D...

艾贺
2018/08/14
0
0
Docker容器硬盘热扩容-centos6

前面已介绍了docker很多知识点的操作记录,今天这里梳理下docker容器空间扩展的操作。默认情况下,docker容器的空间是10G。在实际生产环境下,对docker容器进行热扩容(动态扩容)是非常重要的...

u011314442
2018/05/12
0
0
Docker架构概览

Docker架构概览 Docker使用了传统的client-server架构模式,用户通过Docker client与Docker daemon建立通信,并将请求发送给后者。而Docker后端是松耦合结构,不同模块各司其职。 Docker dae...

yeit
2015/11/25
4
1
20个Docker Command

在这之前呢,也写过两篇关于Docker基础入门类的文章 Docker容器技术入门(一) Docker容器技术入门(二) 很多人都感觉这文章这么简单、这么基础,可是别忘记了“万丈高楼平地起”,如果少了...

孟飞阳
2018/06/08
0
0
(三) Docker安装使用 镜像

镜像 what is image? Docker镜像是一个不包含内核而又精简的操作系统 source? docker.io daoclod.io 推荐! 加速器: curl -sSL https://get.daocloud.io/daotools/setmirror.sh | sh -s ...

江措小朋友
01/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Nginx反向代理

Nginx反向代理 应用场景 A 机器运行的nginx提供的web服务,只有一个内网地址192.168.254.128(内网) B机器有两块网卡,一个地址是192.168.254.137(内网),另一个是192.168.79.128(外网)...

李超小牛子
今天
2
0
数据库事务隔离级别

当数据库上有多个事务同时执行的时候,可能出现下面问题: 脏读(dirty read):指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访...

Jacktanger
今天
1
0
4.61 - 第二个JAVA应用 4.62/63 - Tomcat的管理功能

4.61 - 第二个JAVA应用 方法一:配置文件: /usr/local/tomcat/conf/server.xml <Host name="www.aminglinux.cc" appBase="/data/wwwroot/www.aminglinux.cc" unpackWARs="tr......

Champin
今天
0
0
MariaDB密码重置

MariaDB密码重置 如果记得root的密码: mysqladmin -uroot -paminglinux password "aming-linux" //用此方式将原密码aminglinux重置为aming-linux 如果不记得原密码: # vi /etc/my.cnf......

wzb88
昨天
1
0
印度封禁抖音,称导致该国年轻人“文化堕落”!

本文经授权转载自顶级程序员 (ID:TopCoding) 作者 | 江户川雨 责编 | https://weavi.com/13775725 https://weavi.com/13775726 https://weavi.com/13775724 https://weavi.com/13775723 ......

陈刚生
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部