详解Docker镜像与容器的常见操作

镜像加速器

国内从 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

Dcoker镜像操作

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

search搜索镜像

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

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    2 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------- 1 root root 234M Apr 13 16:21 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    2 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    2 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    2 months ago    237MB
[root@docker01 docker_test]# docker tag centos:latest centos:20200413
[root@docker01 docker_test]# docker images
REPOSITORY     TAG         IMAGE ID      CREATED       SIZE
centos       20200413      470671670cac    2 months ago    237MB
centos       latest       470671670cac    2 months ago    237MB

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

info显示整个系统的信息

[root@docker01 ~]# docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 1
Server Version: 18.06.3-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.0-1062.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 1.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/8
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       2          0          440.1MB       440.1MB (100%)
Containers     0          0          0B         0B
Local Volumes    0          0          0B         0B
Build Cache     0          0          0B         0B

inspect显示镜像或容器的详情

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

Dcoker容器操作

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"  4 minutes ago Exited (0) 36 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" 10 minutes ago Exited (0) 3 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" 10 minutes ago Up 3 seconds     centos01

restart重启容器

# 格式:docker restart <容器名>|<容器ID>
[root@docker01 ~]# docker ps
CONTAINER ID    IMAGE        COMMAND    CREATED     STATUS     PORTS  NAMES
f7c4da3cecad    centos:latest    "/bin/bash"  15 minutes ago  Up 4 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"  15 minutes ago  Up 1 second       centos01

stop停止容器

# 格式:docker stop <容器名>|<容器ID>
[root@docker01 ~]# docker ps
CONTAINER ID    IMAGE      COMMAND    CREATED    STATUS     PORTS   NAMES
f7c4da3cecad    centos:latest  "/bin/bash"  3 hours ago  Up 4 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"  3 hours ago  Exited (0) 10 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"  3 hours ago  Exited (0) 10 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"  2 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     1   0 0 10:12 pts/0  00:00:00 /bin/bash
root     78   0 0 10:19 ?    00:00:00 ps -ef

cp复制文件或目录

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

[root@docker01 ~]# docker exec -i 67ba647b0151 bash -c "ls -l /root"
total 12
-rw------- 1 root root 2366 Jan 13 21:49 anaconda-ks.cfg
-rw-r--r-- 1 root root 435 Jan 13 21:49 anaconda-post.log
-rw------- 1 root root 2026 Jan 13 21:49 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 112
-rw------- 1 root root  2366 Jan 13 21:49 anaconda-ks.cfg
-rw-r--r-- 1 root root  435 Jan 13 21:49 anaconda-post.log
drwxr-xr-x 2 root root   30 Mar 8 19:59 basedOptimi
-rw------- 1 root root  2026 Jan 13 21:49 original-ks.cfg
-rwxr-xr-x 1 root root 101776 Aug 3 2017 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"     3 hours ago     Up 1 second               centos01
# 获取容器日志
[root@docker01 ~]# docker logs -f --tail 500 f7c4da3cecad
…………

参数说明:

-f 持续打印输出
--tail 500 打印日志最后的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"  2 hours ago  Up 2 hours      centos001
# 查看容器中运行的进程信息
[root@docker01 ~]# docker top 67ba647b0151
UID  PID  PPID C STIME TTY  TIME   CMD
root  3302  3285 0 21:13 pts/0 00:00:00 /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  2 weeks ago  127MB
registry.cn-beijing.aliyuncs.com/google_registry/nginx  1.17  ed21b7a8aee9  2 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…"  3 seconds ago  Up 2 seconds  0.0.0.0:1025->80/tcp  nginx01

说明:

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

容器日志:

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

浏览器访问:

映射单个指定端口

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

浏览器访问:

映射多个指定端口

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

推荐阅读
1、 Docker简介与安装

到此这篇关于详解Docker镜像与容器的常见操作的文章就介绍到这了,更多相关Docker镜像与容器操作内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 使用IPython来操作Docker容器的入门指引

    现在Docker是地球上最炙手可热的项目之一,就意味着人民实际上不仅仅是因为这个才喜欢它. 话虽如此,我非常喜欢使用容器,服务发现以及所有被创造出的新趣的点子和领域来切换工作作为范例. 这个文章中我会简要介绍使用python中的docker-py模块来操作Docker 容器,这里会使用我喜爱的编程工具IPython. 安装docker-py 首先需要docker-py.注意这里的案例中我将会使用Ubuntu Trusty 14.04版本. $ pip install docker-py IPyh

  • CentOS7.2服务器上搭建Docker私有镜像仓库操作示例

    本文实例讲述了CentOS7.2服务器上搭建Docker私有镜像仓库操作.分享给大家供大家参考,具体如下: 鉴于国内pull镜像的速度较慢,很有必要搭建docker私有或者本地镜像仓库. 安装docker # yum -y install docker # systemctl start docker && systemctl enable docker 使用自签名进行安全认证 创建存放证书和密钥的certs目录 # mkdir -p /docker/certs # chcon -Rt s

  • Docker 容器操作指令汇总详解

    1. 创建并运行 一个容器 docker run -it --rm centos:latest bash run 运行容器 -it 以交互方式运行容器 --rm 退出容器后删除容器 centos:latest 基于 镜像启动容器 bash 命令 交互式shell 2. 退出容器 exit 3. 查看容器 docker ps 查看正在运行的容器 docker ps -a 查看所有容器 4.删除容器 docker rm [容器id ] 5 . 查看 镜像 容器 数据卷 占用空间 docker sys

  • Docker 容器操作退出后进入解决办法

    在我们对Docker容器操作的时候,有时候会误操作或者其他的原因无意间退出了正在操作的容器,也许你会担忧你在其中的一些操作未保存下来,无须担忧,本文中将会提供各种方法供你参考(我的建议使用最后一种).在本文,我们将讨论五种(4+1)连接Docker容器并与其进行交互的方法.例子中所有的代码都可以在GitHub中找到,你可以亲自对它们进行测试. 1.nsenter 安装 nsenter 工具在 util-Linux 包2.23版本后包含. 如果系统中 util-linux 包没有该命令,可以按照下

  • docker容器挂载宿主主机目录的操作方法

    有一项重要的参数 -v 目录挂载,就是让容器内部目录和宿主主机目录关联起来,这样就可以直接操作宿主主机目录而不用再操作具体容器了 比如在2中,我们要发布一个war包,是通过 sudo docker cp demo.war tomcat_xiao:/usr/local/tomcat/webapps 来发布的,有没有更快捷的方式呢? 肯定有, 没有 我就不会在这里写这些玩意儿了 sudo docker run -p 8822:8080 --name tomcat_xiao_volume -v /ho

  • 删除docker里建立容器的操作方法

    怎么删除docker里建立的容器 1.首先使用docker -s -a命令列出所有容器 # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f2582758af13 ubuntu "/bin/bash" 2 hours ago Up 2 hours first_ubuntu 6b5b5a969241 centos "/bin/bash" 2 days ago Exited (0)

  • Linux系统安装docker并用ssh登录docker容器的操作方法

    说明:我使用的是Centos安装docker 第一步:安装docker sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.daocloud.io/docker/linux/centos/docker-ce.repo sudo yum install -y -q --setopt=obsoletes=0 docker-ce-17.09.1.ce* docker-ce-selinux-1

  • docker常用命令总结之安装、镜像、容器基本操作

    以下均在centos 7进行的操作 docker安装 yum install -y docker -y:表示在安装过程中按照默认配置进行安装,不需要进行逐步确认 查看已经安装的docker yum list installed | grep docker 删除已经安装的docker yum remove -y docker.x86_64 yum remove -y docker-client.x86_64 yum remove -y docker-common.x86_64 docker服务启动

  • Docker容器的导入导出操作教程

    背景 Docker的流行与它对容器的易分享和易移植密不可分,用户不仅可以把容器提交到公共服务器上,还可以把容器导出到本地文件系统中.同样,我们也可以把导出的容器重新导入到Docker运行环境中. 方法1:容器的导入与导出(export和import) 1.查看需要导出的容器 docker ps -a 2.导出export 导出后的tar文件传输至待导入机器上 docker export 容器名或者容器ID > 导出的路径以及tar包的名字 docker export centos> cento

  • 详解Docker镜像与容器的常见操作

    镜像加速器 国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器.国内很多云服务商都提供了国内加速器服务,例如: 网易云加速器 https://hub-mirror.c.163.com 阿里云加速器(需登录账号获取): https://cr.console.aliyun.com/cn-hangzhou/mirrors 国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务,具体请参考官方文档. 在CentOS7系统

  • 详解Docker镜像的基本操作方法

    目录 一.获取镜像 二.运行镜像 三.列出镜像 四.镜像大小 五.删除本地镜像 一.获取镜像 之前我们提到过 Docker 官⽅提供了⼀个公共的镜像仓库:Docker Hub,我们就可以从这上⾯获取镜像,获取镜像的命令:docker pull,格式为: $ docker pull [选项] [Docker Registry 地址[:端⼝]/]仓库名[:标签] Docker 镜像仓库地址:地址的格式⼀般是 <域名/IP>[:端⼝号],默认地址是 Docker Hub. 仓库名:这⾥的仓库名是两段

  • 详解docker镜像centos7配置Java运行环境

    1.拉取centos镜像 docker pull centos:7 2.基于拉取到的镜像运行一个容器 docker run -it --name mycentos docker.io/centos:7 /bin/bash 运行起来就直接进入了容器的交互界面 3.容器中安装jdk 首先查询可用的jdk版本 yum search java|grep jdk 根据搜索到jdk进行安装 yum install java-1.7.0-openjdk 安装完成之后可以不用配置环境变量,因为安装完成之后貌似是

  • 详解Docker创建Mysql容器并通过命令行连接到容器

    拉取网易蜂巢的mysql-server:5.6 docker pull hub.c.163.com/nce2/mysql:5.6 创建mysql5.6容器 1master+3个slave docker run --name mysql-master -d -P hub.c.163.com/nce2/mysql:5.6 docker run --name mysql-slave1 -d -P hub.c.163.com/nce2/mysql:5.6 docker run --name mysql-

  • 详解Docker镜像提交命令commit的工作原理和使用方法

    在本地创建一个容器后,可以依据这个容器创建本地镜像,并可把这个镜像推送到Docker hub中,以便在网络上下载使用. 下面我们来动手实践. docker pull nginx:1.15.3 用命令行启动一个容器: docker run -d -p 1080:80 --name jerry-nginx nginx:1.15.3 localhost:1080 进入容器的shell: docker exec -it jerry-nginx /bin/bash 查看这个nginx镜像默认的首页: 我想

  • Docker 镜像、容器、仓库的概念及应用详解

    Docker 镜像.容器.仓库的概念 Docker镜像 Docker镜像(Image)类似于虚拟机的镜像,可以将他理解为一个面向Docker引擎的只读模板,包含了文件系统. 例如:一个镜像可以完全包含了Ubuntu操作系统环境,可以把它称作一个Ubuntu镜像.镜像也可以安装了Apache应用程序(或其他软件),可以把它称为一个Apache镜像. 镜像是创建Docker容器的基础,通过版本管理和增量的文件系统,Docker提供了一套十分简单的机制来创建和更新现有的镜像.用户可以从网上下载一个已经

  • 详解Docker使用Linux iptables 和 Interfaces管理容器网络

    我使用docker至今已有一段时间了,与绝大部分的人一样,我被docker强大的功能和易用性深深的折服.简单方便是docker的核心之一,它强大的功能被抽象成了非常简单的命令.当我在使用和学习docker的时候,我很想知道docker在后台都做了一些什么事情,特别是在网络这一块(我最感兴趣的一块) 我找到了很多关于创建和操作容器网络的文档,但是关于docker如何使网络工作的却没有那么多. Docker广泛使用linux iptables和网桥接口,这篇文章是我如何用于创建容器网络的总结,大部分

  • 详解docker pull 下来的镜像都存到了哪里

    docker pull 下来的命令都默认存在/var/lib/docker/文件夹下. 查看/var/lib/docker/image/overlay2/repositories.json文件: 正好和docker images的内容一致. 1.进入docker目录,文件结构如下: 2. 进入containers 目录,这个目录中保存是已拉取的容器ID,即一个序列号,对应一个容器. 随便进入选择一个序列号,进入后发现容器的具体结构如下: 3. 进入image 目录 这个目录中保存的是已拉取的镜像

  • 详解docker容器的层的概念

    今天我们看看容器的层的概念. 上一节中,我们知道了,容器是一个进程,在这个进程的基础上,添加了下面3个部分: 1.启动Linux Namespace的配置实现与物理机的隔离. 2.设置Cgroups参数限制容器的资源. 3.生成系统文件目录,也就是rootfs文件,也叫镜像文件 这里需要备注的是:rootfs只是容器需要使用的基本文件的组合,并不包括操作系统内核,容器的操作系统内核依旧是使用宿主机的内核.当然,rootfs的存在,并不是没有意义,它的存在,使得容器拥有了一个最主要的性能:一致性.

  • 详解Docker修改容器端口映射的方法

    直接解决方法 具体可参考Stack Overflow链接 docker运行时存在守护程序,所以我们需要停止docker内运行的容器和docker服务.具体可参考官网给出的守护程序解释 docker stop 容器id //CentOS下停止docker服务(Ubuntu类似) sudo systemctl stop docker 使用以下命令找到已创建容器的hostconfig.json和config.v2.json配置文件. find / -name hostconfig.json //或co

随机推荐