Docker镜像加速配置;Docker镜像常用操作;Dcoker容器常用操作。

镜像加速器

国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。国内很多云服务商都提供了国内加速器服务,例如:

 网易云加速器 https://hub-mirror.c.163.com
阿里云加速器(需登录账号获取): https://cr.console.aliyun.com/cn-hangzhou/mirrors

国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务,具体请参考官方文档。

在CentOS7系统,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)

 [root@docker01 ~]# vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://hub-mirror.c.163.com"
]
}

注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。

之后重新启动服务。

 systemctl daemon-reload
systemctl restart docker

检查加速器是否生效

执行如下命令,如果从结果中看到了如下内容,说明配置成功。

 [root@docker01 ~]# docker info  # 显示整个系统的信息
………………
Registry Mirrors:
https://hub-mirror.c.163.com/
Live Restore Enabled: false WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled

Docker镜像操作

说明:Docker 运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker 会从镜像仓库下载该镜像。

search搜索镜像

 [root@docker01 ~]# docker search centos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. [OK]
ansible/centos7-ansible Ansible on Centos7 [OK]
jdeathe/centos-ssh OpenSSH / Supervisor / EPEL/IUS/SCL Repos - … [OK]
consol/centos-xfce-vnc Centos container with "headless" VNC session… [OK]
centos/mysql--centos7 MySQL 5.7 SQL database server
…………

pull从镜像中心下载镜像

 # 格式:docker pull <image_name>:<tag> ,如果没有tag,默认为 latest
[root@docker01 ~]# docker pull centos:latest
latest: Pulling from library/centos
8a29a15cefae: Pull complete
Digest: sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700
Status: Downloaded newer image for centos:latest

push推送镜像到镜像中心

 格式:docker push <image_name>:<tag>
[root@docker01 ~]# docker push registry.cn-beijing.aliyuncs.com/google_registry/centos:latest

说明:如果有疑问可先忽略,后面搭建私有仓库文章会再次说明的。

images列出镜像

 [root@docker01 ~]# docker images  # 或者 docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 470671670cac months ago 237MB

save镜像保存到本地

 # 格式:docker save -o <保存的文件名>  <image_name:tag>|<image_id>
[root@docker01 docker_test]# docker save -o centos_docker_20200413.tar centos:latest
[root@docker01 docker_test]# ll -h
total 234M
-rw------- root root 234M Apr : centos_docker_20200413.tar

rmi删除镜像

 # 格式:docker rmi <image_name:tag>|<image_id>
[root@docker01 docker_test]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 470671670cac months ago 237MB
[root@docker01 docker_test]# docker rmi 470671670cac # 删除镜像
[root@docker01 docker_test]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE

load导入镜像

 # 格式:docker load -i <image_file>
[root@docker01 docker_test]# docker load -i centos_docker_20200413.tar
[root@docker01 docker_test]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 470671670cac months ago 237MB

tag标签

 # 格式:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
[root@docker01 docker_test]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 470671670cac months ago 237MB
[root@docker01 docker_test]# docker tag centos:latest centos:
[root@docker01 docker_test]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 470671670cac months ago 237MB
centos latest 470671670cac months ago 237MB

使用:根据需要给docker镜像打一个新标签。

info显示整个系统的信息

 [root@docker01 ~]# docker info
Containers:
Running:
Paused:
Stopped:
Images:
Server Version: 18.06.-ce
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 468a545b9edcd5932818eb9de8e72413e616e86e
runc version: a592beb5bc4c4092b1b1bac971afed27687340c5
init version: fec3683
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.-.el7.x86_64
Operating System: CentOS Linux (Core)
OSType: linux
Architecture: x86_64
CPUs:
Total Memory: .777GiB
Name: docker01
ID: XIHU:XNWU:II7A:YXUH:BOZ3:JSGG:J3P2:CU2Z:5QHA:5Y64:PZ4V:62DI
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/
Registry Mirrors:
https://hub-mirror.c.163.com/
Live Restore Enabled: false WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled

system镜像体积查看

另外一个需要注意的问题是,docker image ls 列表中的镜像体积总和并非是所有镜像实际硬盘消耗。由于 Docker 镜像是多层存储结构,并且可以继承、复用,因此不同镜像可能会因为使用相同的基础镜像,从而拥有共同的层。由于 Docker 使用 Union FS,相同的层只需要保存一份即可,因此实际镜像硬盘占用空间很可能要比这个列表镜像大小的总和要小的多。

可以通过以下命令来便捷的查看镜像、容器、数据卷所占用的空间。

 [root@docker01 docker_test]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images .1MB .1MB (%)
Containers 0B 0B
Local Volumes 0B 0B
Build Cache 0B 0B

inspect显示镜像或容器的详情

 # 格式:docker inspect <镜像ID>|<镜像名>|<容器ID>|<容器名>
[root@docker01 ~]# docker inspect centos:latest # 显示镜像详情
[root@docker01 ~]# docker inspect 67ba647b0151 # 显示容器详情

Docker容器操作

run创建容器

 # 格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
[root@docker01 ~]# docker run -i -t --name centos01 centos:latest /bin/bash
[root@f7c4da3cecad /]# # 此时已进入docker容器
[root@f7c4da3cecad /]# exit # 退出容器,此时容器会停止【正常情况】
[root@docker01 ~]#

参数说明:

 -i  交互式操作
-t 分配一个终端
--name 运行的容器名称
最后的/bin/bash 要执行的命令

ps查看容器

 [root@docker01 ~]# docker ps  # 查看正在运行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@docker01 ~]#
[root@docker01 ~]# docker ps -a # 查看所有容器,包括运行和停止的
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7c4da3cecad centos:latest "/bin/bash" minutes ago Exited () seconds ago centos01

start启动容器

 # 格式:docker start <容器名>|<容器ID>
[root@docker01 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7c4da3cecad centos:latest "/bin/bash" minutes ago Exited () seconds ago centos01
[root@docker01 ~]# docker start f7c4da3cecad # 启动容器
f7c4da3cecad
[root@docker01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7c4da3cecad centos:latest "/bin/bash" minutes ago Up seconds centos01

restart重启容器

 # 格式:docker restart <容器名>|<容器ID>
[root@docker01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7c4da3cecad centos:latest "/bin/bash" minutes ago Up minutes centos01
[root@docker01 ~]# docker restart f7c4da3cecad # 重启容器
f7c4da3cecad
[root@docker01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7c4da3cecad centos:latest "/bin/bash" minutes ago Up second centos01

stop停止容器

 # 格式:docker stop <容器名>|<容器ID>
[root@docker01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7c4da3cecad centos:latest "/bin/bash" hours ago Up minutes centos01
[root@docker01 ~]# docker stop f7c4da3cecad # 停止容器
f7c4da3cecad
[root@docker01 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7c4da3cecad centos:latest "/bin/bash" hours ago Exited () seconds ago centos01

rm删除容器

 # 格式:docker rm <容器名>|<容器ID>
[root@docker01 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7c4da3cecad centos:latest "/bin/bash" hours ago Exited () seconds ago centos01
[root@docker01 ~]# docker rm f7c4da3cecad # 删除已停止的容器
f7c4da3cecad

说明:如果要强制删除正在运行的容器,使用 docker rm -f <容器ID>。不过生产环境不建议强制删除容器,防止误删除。

rename容器重命名

 # 格式:docker rename CONTAINER NEW_NAME
[root@docker01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
67ba647b0151 centos:latest "/bin/bash" About a minute ago Up About a minute centos01
[root@docker01 ~]# docker rename 67ba647b0151 centos001 # 容器重命名
[root@docker01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
67ba647b0151 centos:latest "/bin/bash" minutes ago Up About a minute centos001

exec进入容器或在运行容器中执行命令

进入容器
 [root@docker01 ~]# docker exec -it f7c4da3cecad bash
[root@f7c4da3cecad /]#

说明:不建议通过 docker attach 方式进入容器。

在容器外让指定容器执行命令
 # 不要有 -t 选项,因为不需要分配 tty 终端
[root@docker01 ~]# docker exec -i f7c4da3cecad bash -c "ps -ef"
UID PID PPID C STIME TTY TIME CMD
root : pts/ :: /bin/bash
root : ? :: ps -ef

cp复制文件或目录

将宿主机文件或目录,拷贝到docker容器中
 [root@docker01 ~]# docker exec -i 67ba647b0151 bash -c "ls -l /root"
total
-rw------- root root Jan : anaconda-ks.cfg
-rw-r--r-- root root Jan : anaconda-post.log
-rw------- root root Jan : original-ks.cfg
[root@docker01 ~]#
[root@docker01 ~]# docker cp /usr/bin/telnet 67ba647b0151:/root/ # 拷贝文件
[root@docker01 ~]# docker cp /root/basedOptimi 67ba647b0151:/root/ # 拷贝目录
[root@docker01 ~]# docker exec -i 67ba647b0151 bash -c "ls -l /root"
total
-rw------- root root Jan : anaconda-ks.cfg
-rw-r--r-- root root Jan : anaconda-post.log
drwxr-xr-x root root Mar : basedOptimi
-rw------- root root Jan : original-ks.cfg
-rwxr-xr-x root root Aug telnet

将docker容器中的文件或目录,拷贝到宿主机中

 [root@docker01 ~]# docker cp 67ba647b0151:/root/original-ks.cfg /root/   # 拷贝文件
[root@docker01 ~]# docker cp 67ba647b0151:/etc /root/ # 拷贝目录

logs查看容器日志

 [root@docker01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7c4da3cecad centos:latest "/bin/bash" hours ago Up second centos01
# 获取容器日志
[root@docker01 ~]# docker logs -f --tail f7c4da3cecad
…………

参数说明:

 -f  持续打印输出
--tail 打印日志最后的500行

stats容器使用资源统计

可用于监控

 [root@docker01 ~]# docker stats <容器ID>|<容器名称>   # 持续监控
[root@docker01 ~]# docker stats --no-stream <容器ID>|<容器名称> # 不是持续监控,只显示第一次返回的结果

top容器中运行的进程

 [root@docker01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
67ba647b0151 centos:latest "/bin/bash" hours ago Up hours centos001
# 查看容器中运行的进程信息
[root@docker01 ~]# docker top 67ba647b0151
UID PID PPID C STIME TTY TIME CMD
root : pts/ :: /bin/bash

port容器映射特定端口

容器映射端口有:随机端口映射、指定单个端口映射、指定多个端口映射

获取镜像
 [root@docker01 ~]# docker pull registry.cn-beijing.aliyuncs.com/google_registry/nginx:1.17
[root@docker01 ~]# docker tag ed21b7a8aee9 nginx:1.17
[root@docker01 ~]# docker images | grep 'nginx'
nginx 1.17 ed21b7a8aee9 weeks ago 127MB
registry.cn-beijing.aliyuncs.com/google_registry/nginx 1.17 ed21b7a8aee9 weeks ago 127MB

映射随机端口

 [root@docker01 ~]# docker run -d -P --name nginx01 nginx:1.17
e90c9faaf8e3387920dd9763bf5c7df9dd17856673868bb512cec78741ff71dc
[root@docker01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e90c9faaf8e3 nginx:1.17 "nginx -g 'daemon of…" seconds ago Up seconds 0.0.0.0:->/tcp nginx01

说明:

0.0.0.0:->/tcp  前面为宿主机端口,后面为容器端口

容器日志:

[root@docker01 ~]# docker logs -f --tail  nginx01

浏览器访问:

映射单个指定端口

 [root@docker01 ~]# docker run -d -p : --name nginx02 nginx:1.17
04478222f0dc981883f25504164be3af7da49248886cee7386ccc89b80cc57a1
[root@docker01 ~]# docker ps | grep 'nginx02'
04478222f0dc nginx:1.17 "nginx -g 'daemon of…" seconds ago Up seconds 0.0.0.0:->/tcp nginx02

浏览器访问:

映射多个指定端口

 [root@docker01 ~]# docker run -d -p : -p : --name nginx03 nginx:1.17
5886e52ff8e934bc827c8d7753a532b9062bd045799d0658a008e371e6ecd09c
[root@docker01 ~]# docker ps | grep 'nginx03'
5886e52ff8e9 nginx:1.17 "nginx -g 'daemon of…" seconds ago Up seconds 0.0.0.0:->/tcp, 0.0.0.0:->/tcp nginx03

推荐阅读

1、 Docker简介与安装

完毕!


———END———
如果觉得不错就关注下呗 (-^O^-) !

Docker镜像与容器的常用操作的更多相关文章

  1. docker系列四之docker镜像与容器的常用命令

    docker镜像与容器的常用命令 一.概述   docker的镜像于容器是docker中两个至关重要的概念,首先给各位读者解释一下笔者对于这两个概念的理解.镜像,我们从字面意思上看,镜子里成像,我们人 ...

  2. docker镜像、容器以及命令操作

    docker image docker image是一个极度精简版的Linux程序运行环境,官网的java镜像包括的东西更少,除非是镜像叠加方式的如centos+java7 docker image是 ...

  3. Docker镜像和容器

    本节内容: 安装Docker 卸载docker 镜像基本操作 容器基本操作 一.安装Docker Docker 对 Linux 内核版本的最低要求是3.10,如果内核版本低于 3.10 会缺少一些运行 ...

  4. Docker容器化【Docker镜像与容器相关命令】

    # Docker 学习目标: 掌握Docker基础知识,能够理解Docker镜像与容器的概念 完成Docker安装与启动 掌握Docker镜像与容器相关命令 掌握Tomcat Nginx 等软件的常用 ...

  5. 【docker专栏8】使用IDEA远程管理docker镜像及容器服务

    使用命令行的方式管理服务器镜像及容器是运维人员最常用的方式,但是有的时候我们不得不远程操作docker或者是面向对docker并不熟悉的技术人员提供能力(配置管理员.测试人员),这种情况下图形界面就有 ...

  6. docker镜像和容器的导出导入

    本文介绍docker镜像和容器的导入导出,用于迁移.备份.升级等场景.主要用到export.import.save.load四个方法. 原文地址:代码汇个人博客 http://www.codehui. ...

  7. docker镜像与容器

    目录 docker镜像与容器 概述 分层存储 镜像与容器 删除镜像与容器 将容器中的改动提交到镜像 慎用 docker commit--构建镜像推荐使用dockerfile docker镜像与容器 概 ...

  8. docker 入门(docker 镜像 、容器、仓库)

    一.关于docker 镜像 .容器.仓库之间的关系 镜像(Image): 类似于虚拟机 的镜像 容器(Container): 类似于操作系统(或者说是独立的软件), 由镜像可以创建大量的容器. 仓库( ...

  9. 快速批量删除 docker 镜像或容器

    原文:快速批量删除 docker 镜像或容器 点击在我的博客 xuxusheng.com 中查看,有更好的排版哦~ docker 本身并没有提供批量删除的功能,当有大量的镜像或者容器需要删除的时候,手 ...

随机推荐

  1. CF820D Mister B and PR Shifts

    题目链接:http://codeforces.com/problemset/problem/820/D 题目大意: 给出一个\(n\)元素数组\(p[]\),定义数组\(p[]\)的误差值为\(\su ...

  2. 十、理解JavaBean

    1. 理解Bean 1.JavaBean本身就是一个类,属于Java的面向对象编程. 2.在JSP中如果要应用JSP提供的Javabean的标签来操作简单类的话,则此类必须满足如下的开发要求: (1) ...

  3. vs code插件自动压缩 min.css

    我们在进行相应的项目书写的时候,有些需要把scss 和 css 进行 压缩成 min.css 便于更好的使用 在这里强调一下 scss 后来才慢慢接触到这个语言的 感觉的确实懂得明白了之后  好用而且 ...

  4. Web前端:1、HTML&CSS概述及结构

    万维网联盟(World Wide Web Consortium)简称W3C,专门为了定义网页相关的标准而成立,如网页中的HTML.CSS.DOM.HTTP.XML等标准. 根据W3C标准,一个网页主要 ...

  5. KVM的常用操作

    KVM安装 一.网卡桥接 1.在原网卡上注释掉IP配置,添加一下内容 BRIDGE=br0 2.配置桥接网卡地址 vim ifcfg-br0 DEVICE="br0" NM_CON ...

  6. Java基本语法---标识符、变量、数据类型转换及进制

    Java基本语法 标识符 标识符:凡事可以自己起名字的地方,都可以叫做标志符 标识符命名规则: 26个字母大小写,数字0-9,下划线_,美元符号$ 数字不能开头 不能使用关键字和保留字,但是可以包含 ...

  7. Java—JSON串转换成实体Bean对象模板

    介绍 模板需求说明   开发中经常遇到前端传递过来的JSON串的转换,后端需要解析成对象,有解析成List的,也有解析成Map的. 依赖 <dependency> <groupId& ...

  8. [优文翻译]002.陪伴我作为程序员的9句名言(9 Quotes that stayed with me as a developer)

    导读:本文是从<9 Quotes that stayed with me as a developer>这篇文章翻译而来 下面的锦句均来自于<9 Quotes that stayed ...

  9. Bank5

    Account: package banking5; //账户 public class Account { protected double balance; public Account(doub ...

  10. C#线程 使用线程

    第三部分 使用线程 基于事件的异步模式 基于事件的异步模式(EAP)提供了一种简单的方法,通过这些方法,类可以提供多线程功能,而使用者无需显式启动或管理线程.它还提供以下功能: 合作取消模型 工作人员 ...