Docker镜像与容器的常用操作
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复制文件或目录
[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镜像与容器的常用操作的更多相关文章
- docker系列四之docker镜像与容器的常用命令
docker镜像与容器的常用命令 一.概述 docker的镜像于容器是docker中两个至关重要的概念,首先给各位读者解释一下笔者对于这两个概念的理解.镜像,我们从字面意思上看,镜子里成像,我们人 ...
- docker镜像、容器以及命令操作
docker image docker image是一个极度精简版的Linux程序运行环境,官网的java镜像包括的东西更少,除非是镜像叠加方式的如centos+java7 docker image是 ...
- Docker镜像和容器
本节内容: 安装Docker 卸载docker 镜像基本操作 容器基本操作 一.安装Docker Docker 对 Linux 内核版本的最低要求是3.10,如果内核版本低于 3.10 会缺少一些运行 ...
- Docker容器化【Docker镜像与容器相关命令】
# Docker 学习目标: 掌握Docker基础知识,能够理解Docker镜像与容器的概念 完成Docker安装与启动 掌握Docker镜像与容器相关命令 掌握Tomcat Nginx 等软件的常用 ...
- 【docker专栏8】使用IDEA远程管理docker镜像及容器服务
使用命令行的方式管理服务器镜像及容器是运维人员最常用的方式,但是有的时候我们不得不远程操作docker或者是面向对docker并不熟悉的技术人员提供能力(配置管理员.测试人员),这种情况下图形界面就有 ...
- docker镜像和容器的导出导入
本文介绍docker镜像和容器的导入导出,用于迁移.备份.升级等场景.主要用到export.import.save.load四个方法. 原文地址:代码汇个人博客 http://www.codehui. ...
- docker镜像与容器
目录 docker镜像与容器 概述 分层存储 镜像与容器 删除镜像与容器 将容器中的改动提交到镜像 慎用 docker commit--构建镜像推荐使用dockerfile docker镜像与容器 概 ...
- docker 入门(docker 镜像 、容器、仓库)
一.关于docker 镜像 .容器.仓库之间的关系 镜像(Image): 类似于虚拟机 的镜像 容器(Container): 类似于操作系统(或者说是独立的软件), 由镜像可以创建大量的容器. 仓库( ...
- 快速批量删除 docker 镜像或容器
原文:快速批量删除 docker 镜像或容器 点击在我的博客 xuxusheng.com 中查看,有更好的排版哦~ docker 本身并没有提供批量删除的功能,当有大量的镜像或者容器需要删除的时候,手 ...
随机推荐
- Cube-UI组件中create-api 模块的基本使用
1.这个模块的功能是什么? 官方文档是这样解释的: 该模块默认暴露出一个 createAPI 函数,可以实现以 API 的形式调用自定义组件.并且既可以在 Vue 实例上下文中调用,也可以在普通 js ...
- web自动化之iframe操作
from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from seleni ...
- 服务器开发 Ubuntu
一.Ubuntu安装: 为什么用Ubuntu,作为服务器初学者开发,如果真的要买苹果系统电脑性价比不高,所以在window系统中安装Linux虚拟机是不二之选.为什么用Ubuntu不多说了,开始安装吧 ...
- SpringBoot—单元测试模板(controller层和service层)
介绍 概述 在开发过程中,我们经常会一股脑的写各种业务逻辑,经常等全部大功告成的时候,打个jar包放环境里跑跑看看能不能通,殊不知在各个业务方法中已经漏洞百出,修复一个打一个包,再继续修复,这种效 ...
- jchdl - GSL实例 - DFlipFlop(D触发器)
https://mp.weixin.qq.com/s/7N3avTxTd2ZUnAcKg4w3Ig D触发器对边沿敏感,只有当相应的边沿出现时,才会触发D的值传播到输出Q. 引自:htt ...
- JavaWeb项目:旅游网站【涉及各种知识】
JQuery异步请求(ajax) $.ajax({ // 请求方式为get或者post等 type: "GET", // 服务器响应的数据类型 dataType: "js ...
- 细说Java多线程之内存可见性笔记
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 说明:多线程的内存可见性涉及到多线程间的数据争用,也涉及到了多线程间的数据可见性 一.共享变量在线程间的 ...
- 使用turtle库画同切圆
import turtle as t t.setup(600,600,None,None) t.pensize(5) t.penup() t.pendown() t.pencolor("re ...
- Vue中将网址、动态网址转为二维码
1. 首先需要安装相关的依赖包 npm install qrcodejs2 --save 或者 npm install qrcode2 --save 这里选择第二种方式进行安装,如图: 2.templ ...
- Ftrace的部分使用方法
ftrace主要是用于调试linux kernel调度相关的一个工具,也可用于分析部分kernel性能问题. 相关ftrace的介绍可以参考:kernel/msm-4.9/Documentation/ ...