Docker---docker的一些基础操作

一:做镜像下载加速

  • 默认都是使用公有仓库进行下载,在国内,我们需要进行镜像加速:
[root@docker ]# tee /etc/docker/daemon.json <<-'EOF'
> {
>   "registry-mirrors": ["https://yu1vx79j.mirror.aliyuncs.com"]
> }
> EOF    ###此处做加速,自己可以申请阿里云账号,每个人都有自己的加速地址,可以在阿里云控制台里面找到容器镜像服务,镜像加速
[root@docker etc]# systemctl daemon-reload	'//重载Docker守护进程'
[root@docker etc]# systemctl restart docker	'//重启Docker服务'

二:镜像常规操作

2.1:搜索镜像

  • docker search 镜像名称
[root@docker etc]# docker search nginx

2.2:下载镜像

  • docker pull 镜像名称
[root@docker etc]# docker pull nginx

2.3:查看已有镜像

  • 查看已有镜像:docker images
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              ed21b7a8aee9        8 days ago          127MB

2.4:查看镜像详细信息

  • 查看镜像详细信息:docker inspect 镜像ID
[root@docker ~]# docker inspect ed21b7a8aee9

2.5:镜像存放位置

  • 镜像存放位置:/var/lib/docker
  • 文件信息:/var/lib/docker/image/overlay2/repositories.json

2.6:为镜像添加新的标签

  • 添加标签:docker tag 仓库名:原标签 仓库名:新标签
  • 标签添加完新旧标签是同时存在的
[root@docker ~]# docker tag nginx:latest nginx:web
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              ed21b7a8aee9        8 days ago          127MB
nginx               web                 ed21b7a8aee9        8 days ago          127MB

2.7:删除标签

  • 删除标签:docker rmi 仓库名:标签
[root@docker ~]# docker rmi nginx:web
Untagged: nginx:web
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              ed21b7a8aee9        8 days ago          127MB

2.8:删除镜像

  • 删除镜像:docker rmi 镜像id,删除镜像id后此镜像所有的标签都删除
[root@docker ~]# docker rmi ed21b7a8aee9 
Untagged: nginx:latest
Untagged: nginx@sha256:282530fcb7cd19f3848c7b611043f82ae4be3781cb00105a1d593d7e6286b596
Deleted: sha256:ed21b7a8aee9cc677df6d7f38a641fa0e3c05f65592c592c9f28c42b3dd89291
Deleted: sha256:8a305f371a6c3c445a1dfc500c1364743868a269ab8cdaf95902692e82168352
Deleted: sha256:d079ef06ec1f10a8050887365f9a940b39547ba6bcc46b16a463e740984f3223
Deleted: sha256:c3a984abe8a88059915bb6c7a1d249fd1ccc16d931334ac8816540b0eb686b45
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

2.9:导出镜像(保存镜像)到相应目录

  • 导出镜像:docker save -o 相应目录 仓库名:标签
[root@docker ~]# docker save -o /opt/nginx001 nginx:latest	
[root@docker ~]# ls /opt
containerd  nginx001

2.10:导入镜像

  1. 方法1:docker load < 镜像
  2. 方法2:docker load --input 镜像(不建议使用)
[root@docker ~]# docker load < /opt/nginx001 	'//方法一'
Loaded image: nginx:latest
[root@docker ~]# docker load --input /opt/nginx001	'//方法二'
Loaded image: nginx:latest

三:容器常规操作

3.1:创建容器

  • 创建容器:docker create -it 仓库名:标签 登录环境
[root@docker ~]# docker create -it nginx:latest /bin/bash
3bf2bde0e0b9fe91a643746d4e00e37e234487b9609ea083071831776aebf50a
'//-i:让容器的标准输入保持打开'
'//-t:让docker分配一个伪终端'

3.2:查看容器状态

  • 查看容器状态:docker ps -a
[root@docker ~]# docker ps -a	'//状态为created'
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
3bf2bde0e0b9        nginx:latest        "/bin/bash"         7 seconds ago       Created                                 wizardly_swanson
'//-a:列出最近一次启动的容器'

3.3:启动容器

  • 启动容器:docker start 容器id
[root@docker ~]# docker start 3bf2bde0e0b9	'//启动容器'
3bf2bde0e0b9
[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
3bf2bde0e0b9        nginx:latest        "/bin/bash"         3 minutes ago       Up 1 second         80/tcp              wizardly_swanson

3.4:登录容器

  1. 方法一:docker exec -it 容器id 环境
  2. 方法二:docker run -it 容器名:标签 环境
[root@docker ~]# docker exec -it 36c6af332247 /bin/bash
[root@36c6af332247 /]# ls	'//可以输入命令'
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@36c6af332247 /]# exit	'//退出'
exit
[root@docker ~]# docker ps -a	'//刚刚的容器依旧是up状态'

3.5:停止容器

  • 停止容器:docker stop 容器id
[root@docker ~]# docker stop 3bf2bde0e0b9

3.6:启动容器并执行命令(执行完自动退出)

  • 启动容器并执行命令:docker run 镜像 环境 -c 命令(如果没哟镜像会自动下载)
[root@docker ~]# docker run centos:7 /usr/bin/bash -c ls /	'//启动centos:7容器并执行ls命令'
[root@docker ~]# docker ps -a	'//发现此容器已经正常退出'
    '//此命令执行完成后会自动退出,释放资源,状态是exited(0)'

3.7:启动容器并执行命令(持续在后台运行)

[root@docker ~]# docker run -d  centos:7 /bin/bash -c "while true;do echo hello;done"
6101ea6eedbf7a1dcc75bb9d7cc1eb94e83b343b6829b6546d6ceda318545df6
'//-c:命令'

3.8:导出容器

[root@docker ~]# docker export 6101ea6eedbf > /opt/centos7

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

[root@docker ~]# cat /opt/centos7 |docker import - centos7.1
sha256:59faa021c1f1d1a9c8f1f8800a0392c7a7796968b2b05868f27e6f8bf6e63ac6
[root@docker ~]# docker images
REPOSITORY                                                        TAG                 IMAGE ID            CREATED             SIZE
centos7.1                                                         latest              59faa021c1f1        5 seconds ago       203MB
。。。省略内容

3.10:删除容器(先停止容器在删除)

  • 删除容器:docker rm 容器id
[root@docker ~]# docker rm 4aeeecce12fd 
4aeeecce12fd
[root@docker ~]# docker ps -a

3.11:批量删除容器

[root@docker ~]# docker ps -a |awk '{print "docker rm "$1}'|bash	'//'
  • 此命令稍作改变也可以实现批量删除镜像,批量停止容器等

四:镜像制作

4.1:基于Dockerfile创建镜像

  • 使用Dockerfile创建一个httpd镜像并运行
  1. 编写Dockerfile文件
[root@docker ~]# mkdir apache
[root@docker ~]# cd apache/
[root@docker apache]# vim Dockerfile
##基于的基础镜像
FROM centos 
##维护镜像的用户信息
MAINTAINER wukong
##镜像操作指令安装Apache软件
RUN yum -y update    
 ##安装Apache服务 
RUN yum -y install httpd 
##开启80端口
EXPOSE 80  
##复制网址首页文件
ADD index.html /var/www/html/index.html	'//此命令可以结合上图理解'
##将执行脚本复制到镜像中
ADD run.sh /run.sh           
RUN chmod 755 /run.sh
##启动容器时执行脚本
CMD ["/run.sh"]             
  1. 编写执行脚本与首页内容
[root@docker apache]# vim run.sh
#!/bin/bash
rm -rf /run/httpd/*	'//清除缓存'
exec /usr/sbin/apachectl -D FOREGROUND	'//启动apache'
[root@docker apache]# echo "this is test web" > index.html
  1. 生成镜像
[root@docker apache]# ls
Dockerfile  index.html  run.sh
[root@docker apache]# docker build -t httpd:centos .	'//最后的一个"."要注意,-t:镜像的名字:标签'
    '//每一个缓存层都会生成一个临时容器来执行命令,然后删除'
[root@docker apache]# docker images	'//查看镜像,已经生成了两个'
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
httpd               centos              d2010670b33a        19 seconds ago      434MB
centos              latest              470671670cac        3 months ago        237MB
  1. 新镜像运行容器
[root@docker apache]# docker run -d -p 1216:80 httpd:centos	'//-p 指定端口号,-P 随机端口号'
04b0f0f1bda36a4857f8d48e044cd17f442be19f4d32dee4cf3183827b451b55
[root@docker apache]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
04b0f0f1bda3        httpd:centos        "/run.sh"           4 seconds ago       Up 3 seconds        0.0.0.0:1216->80/tcp   nostalgic_greider
  1. 网页测试
    在这里插入图片描述

4.2:基于已有的镜像容器创建

  • 创建容器
[root@docker apache]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
httpd               centos              d2010670b33a        23 minutes ago      434MB
centos              latest              470671670cac        3 months ago        237MB	'//使用此镜像创建容器'
[root@docker apache]# docker create -it centos /bin/bash
[root@docker apache]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
325c28cc9349        centos              "/bin/bash"         42 seconds ago      Created                                    infallible_poitras
04b0f0f1bda3        httpd:centos        "/run.sh"           21 minutes ago      Up 21 minutes       0.0.0.0:1111->80/tcp   nostalgic_greider
  • 创建镜像
[root@docker apache]# docker commit -m "ceshi" -a "tang" 325c28cc9349 tang:centos	'//-m:说明文字,-a:提交的作者'
sha256:a49089651887dee9c9168532466542ca7ea0c9113da078230694ac30aebe064c
[root@docker apache]# docker images	'//镜像创建成功'
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
tang                centos              a49089651887        14 seconds ago      237MB
httpd               centos              d2010670b33a        30 minutes ago      434MB
centos              latest              470671670cac        3 months ago        237MB

4.3:基于本地模板创建

  • 下载本地模板

    通过导入系统模板文件可以生成镜像,模板可以从OPENVZ开源项目下载地址为:https://wiki.openvz.org/Download/template/precreated

    或者使用wget下载:wget http://download.openvz.org/template/precreated/debian-7.0-x86-minimal.tar.gz

  • 模板下载后直接导入即可

[root@docker opt]# ls
debian-7.0-x86-minimal.tar.gz   ###可以看到此镜像为一个源码包
[root@docker opt]# cat debian-7.0-x86-minimal.tar.gz | docker import - daoke:new
[root@docker opt]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
daoke               new                 487145d2411f        8 seconds ago       215MB
  • 此种方法不常用,除非对特定的源码包进行镜像制作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值