想玩Docker吗?那就先来了解一下基本操作吧


前言

本章整理了Docker的基本操作


镜像相关操作

基础操作

docker version                                          # 查看docker版本

docker search 关键字                                    # 查找指定镜像

docker pull 关键字                                      # 下载镜像
(AUFS联合文件系统,分层下载,下载后放在/var/lib/docker)

/var/lib/docker/image/overlay/repositories.json         # 下载文件信息

docker images                                           # 查看镜像信息

docker inspect 镜像ID                                   # 获取镜像信息

docker tag nginx:latest nginx:web                       # 修改镜像信息

docker images | grep nginx                              # 查看nginx镜像信息
nginx  latest  35c43ace9216  3 weeks ago  133MB
nginx  web     35c43ace9216  3 weeks ago  133MB

docker里的两种格式文件:json、yaml

docker rmi nginx:web                                    # 删除标签为web的nginx镜像

docker save -o nginx nginx:latest                       # 存出镜像名为nginx放在当前目录下

载入镜像

方法一:

docker load < nginx
docker load -i nginx

方法二:

docker load --input nginx

上传镜像

镜像的管理方式非常像git,可以使用docker push命令上传自己本地镜像到仓库,默认上传到DockerHub官方仓库(需要登陆)
命令格式为:

docker push NAME [:TAG]

在上传之前一般会先为自己的镜像添加带自己名字(作者信息)的标签

docker tage nginx:lastest abc/nginx:web   #用户名/仓库名:镜像名
docker login                              #登录
Username::docker                         #账户
password:xxxxxx                          #密码
Email:xxx@xxx.com                         #邮箱

镜像创建

基于已有镜像创建:

将容器里面运行的程序及运行环境打包生成新的镜像

docker commit [选项] 容器ID/名称 仓库名称:[标签]

选项:
-m:说明信息
-a:作者信息
-p:生成过程中停止容器的运行

基于本地模板创建

  • 通过导入操作系统模板文件生成新的镜像
  • 使用wget命令导入为本地镜像
wget http://download.openvz.org/template/precreated/debian-7.0-x86-minimal.tar.gz
  • 导入成功后可查看本地镜像信息
docker images | grep new

基于Dockerfile创建

  • Dockerfile是由一组指令组成的文件
  • Dockerfile结构四部分
    基础镜像信息
    维护者信息
    镜像操作指令
    容器启动时执行指令
  • Dockerfile每行支持一条命令,每条命令可携带多个参数,支持以"#"开头的注释

编写Dockerfile文件

创建一个目录进入,再创建一个jdk_dockerfile文件,vim jdk_dockerfile

FROM centos:7
MAINTAINER  wolf
RUN yum -y update
RUN yum -y install httpd                    #基于centos:7镜像上执行命令,并提交到新镜像,安装apache软件
EXPOSE 80                                   #新镜像加载到Docker时开启80端口
ADD index.html /var/www/html/index.html     #复制网站首页文件,将源文件复制到目标文件,源文件要与Dockerfile在同一个目录或者是一个URL
ADD run.sh /run.sh                          #复制执行脚本到镜像中
RUN chmod 755 /run.sh (新镜像中赋予执行权限)
CMD ["/run.sh"]                             #启动容器时执行脚本 (指令启动容器时要运行的命令或脚本,Dockerfile只能有一条CMD命令,如果指定多条则只能最后一条被执行)

dockerfile指令说明
指令的一般格式为INSTRUNCTION arguments,指令包括FROM、MAINTAINER、RUN等。具体指令及说明如下

指令说明
FROM指定所创建镜像的基础镜像
MAINTAINER指定维护者信息
RUN运行命令
CMD指定容器启动时默认执行的命令
ADD赋值指定的路径下的内容到容器中的路径下,可以为URL;如果为tar文件,会自动解压到路径下
ENV指定环境变量
LABEL指定生成镜像的元数据标签信息
EXPOSE声明镜像内服务所监听的端口
COPY赋值本地主机的路径下的内容到容器中的路径下;一般情况下推荐使用COPY而不是ADD
ENTRYPOINT指定镜像的默认入口
VOLUME创建数据挂载点
USER指定运行容器时的用户名或UID
WORKDIR配置工作目录
ARG指定镜像内使用的参数(例如版本号信息等)
ONBUILD配置当前所创建的镜像作为其他镜像的基础镜像时,所执行的创建操作的命令
STOPSIGNAL容器退出的信号
HEALTHCHECK如何进行健康检查
SHELL指定使用SHELL时的默认SHELL类型

创建运行脚本:

vim run.sh

#!/bin/bash
rm -rf /run/httpd/*
exec /usr/sbin/apachectl -D FOREGROUND

写一个主页:
echo “this is web test” > index.html

生成镜像:
docker build -t httpd:centos . (末尾有".",且与centos之间有空格)

新镜像运行容器:
docker run -d -p 1216:80 httpd:centos
在这里做了端口映射:-p指定端口1216

测试访问:
httpd://20.0.0.31:1216

容器相关操作

docker容器三步骤

  1. 下载镜像
  2. 创建容器
  3. 启动容器

基础操作

docker create -it nginx:latest /bin/bash    #创建容器,例如创建一个nginx容器,标签是latest
-i:让容器的标准输入保持打开
-t:让Docker分配一个为终端

docker rm nginx:web                         # 删除标签为web的nginx容器

docker ps -a                                #查看容器信息
-a:列出所有的容器,包括未运行的容器

docker start 容器ID                          #启动容器
docker stop 容器ID                           #停止容器

容器的状态:

up:运行
created:已创建但未启动
exited:停止或执行完指令被释放(其中有个返回值,为0的时候表示执行完后自动结束,非0表示执行异常或在执行过程中让其stop)

启动执行命令查看系统根目录

docker pull paigeeworld/centos7                     #下载镜像
docker create -it paigeeworld/centos7 /bin/bash     #创建容器
docker start 容器ID                                  #启动容器

将上面的三步骤用一条命令完成:
docker run paigeeworld/centos7 /usr/bin/bash -c ls
一条命令将三步骤全部完成,如果没有镜像则会先下载,结束后会释放资源。执行完毕直接关闭,状态为Exited

容器持续在后台运行:

docker run -d paigeeworld/centos7 /bin/bash -c “while true;do echo hello;done”
-d:在后台运行

容器导出:

docker export 4613c886e5f9 > nginx_c docker export 
容器的ID/名称 > 文件名

容器导入(会生成镜像,但不会创建容器):

cat nginx_c | docker import -nginx:web 
cat 文件名 | docker import -生成的镜像名称:标签

批量删除容器(删除非运行状态的容器):

docker ps -a | awk {print "docker rm "$1} | bash

进入容器

docker exec 容器的ID/名称 /bin/bash 

在容器运行状态下才可以进入

退出容器

exit 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值