docker 镜像 容器基础

docker安装

镜像加速

如果发现Docker拉取镜像的速度非常缓慢,可以配置加速器来解决
阿里云镜像获取地址:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,登陆后,左侧菜单选中镜像加速器就可以看到你的专属地址了:
修改Docker的配置文件来设置加速地址
vim /etc/docker/daemon.json(如果没有该文件,新建一个)

{
  "registry-mirrors": ["https://br10hqrl.mirror.aliyuncs.com"]
}

使配置文件生效

# 加载配置并重启
systemctl daemon-reload && systemctl restart docker
# 查看是否配置成功
docker info 

 运行

镜像

1. 获取镜像(下载镜像到本地)

可以使用 docker pull 命令来从仓库获取所需要的镜像。

格式:

docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

具体选项可通过 docker pull --help

下面的例子将从 Docker Hub 仓库下载一个 Ubuntu 12.04 操作系统的镜像。

完成后,即可随时使用该镜像了,例如创建一个容器,让其中运行 bash 应用。

[root@docker docker]# docker run -it ubuntu:latest /bin/bash
root@1b85b5b911b2:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@1b85b5b911b2:/# cat /proc/version
Linux version 3.10.0-1062.9.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) #1 SMP Fri Dec 6 15:49:49 UTC 2019
root@1b85b5b911b2:/#

其中,-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开。

另:,需要让 Docker 容器在后台以守护态(Daemonized)形式运行。此时,可以通过添加 -d 参数来实现。

2. 列出本地镜像

使用 docker images 或 docker image ls显示本地已有的镜像。

[root@docker docker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              ccc6e87d482b        13 days ago         64.2MB

在列出信息中,可以看到几个字段信息

  • 来自于哪个仓库,比如 ubuntu
  • 镜像的标记,比如 latest
  • 它的 ID 号(唯一)
  • 创建时间
  • 镜像大小

镜像ID是镜像的唯一标识,一个镜像可以对应对个标签,因此在上面的例子中可以看到Ubuntu:16.04和latest拥有相同的ID,因为它们对应的是同一个镜像。

3. 删除本地镜像

要删除本地镜像,可以使用 docker image rm 命令,其格式:

docker image rm [选项] <镜像1> [<镜像2>  ...]
或者
docker rmi [选项] <镜像1

注意:用ID、镜像名、摘要删除镜像

其中,<镜像>可以是镜像短ID、镜像长ID、镜像名 或者 镜像摘要

eg: docker image rm redis

-f   强制删除

docker rmr -f redis 

4. 查找镜像

docker search redis
# 列出指定数量
docker search --limit 5 redis

5. 查看镜像所占空间

docker system df

 6.虚悬镜像

表示为仓库名、标签都为<none>的镜像

容器

1.启动容器

1. 1 新建并启动

所需要的命令主要为 docker run

语法:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

COMMAND:容器启动后进入容器中要执行的命令
OPTIONS(常用参数)
-d : 让 Docker在后台运行而不是直接把执行命令的结果输出在当前宿主机下
-t : 选项让 Docker分配一个伪终端( pseudo-tty)并绑定到容器的标准输入上,
-i : 则让容器的标准输入保持打开。
--name : 为容器命名
-v : 创建数据卷
-p : 绑定端口

-P : 随机端口

docker 运行语法:docker run -p 本地端口:容器端口 镜像
后台运行语法:docker run -d 镜像

[root@docker docker]# docker run ubuntu /bin/echo 'Hello world'
Hello world

当利用 docker run 来创建容器时,Docker 在后台运行的标准操作包括:

  • 检查本地是否存在指定的镜像,不存在就从公有仓库下载
  • 利用镜像创建并启动一个容器
  • 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
  • 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
  • 从地址池配置一个 ip 地址给容器
  • 执行用户指定的应用程序
  • 执行完毕后容器被终止

1.2. 启动已终止容器

可以利用 docker start 命令,直接将一个已经终止的容器启动运行。

docker start CONTAINER [CONTAINER...]

2. 查看容器

docker ps  ##查看启动的容器
docker ps  -a  ##查看所有容器

3. 守护态运行

需要让 Docker 容器在后台以守护态(Daemonized)形式运行。此时,可以通过添加 -d 参数来实现。

[root@docker ~]# docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
38d95518d4fb650d3fad5f5a94553963c05c033efa2bc5e50f33f4a0cc9570a2
[root@docker ~]#

容器启动后会返回一个唯一的 id,也可以通过 docker ps 命令来查看容器信息。

[root@docker ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
38d95518d4fb        ubuntu              "/bin/sh -c 'while t…"   About a minute ago   Up About a minute                       practical_leakey
[root@docker ~]#

可以通过 docker logs 命令获取容器的输出信息。

4. 终止容器

使用 docker stop 来终止一个运行中的容器

docker stop 容器 容器1

强制停止

docker kill  容器id或容器名

5.重启容器

docker restart 容器 容器1

6.删除容器

docker rm 容器 容器1
docker rm -f 容器 容器1
docker run -it ubuntu /bin/bash
docker run -itd ubuntu /bin/bash
docker ps -a
docker stop 36b0eaab1f82
docker start 36b0eaab1f82
docker kill 36b0eaab1f82
docker rm 36b0eaab1f82
docker rm -f 36b0eaab1f82

7.获取容器的输出信息

docker logs 容器 容器1

查看容器内运行的进程
docker top 容器

查看容器内部细节
docker inspect 容器

8.进入容器

1. docker exec -it 容器id /bin/bash
2. docker attach 容器id

attach直接进入容器启动命令的终端,不会启动新的进程,用exit退出,会导致容器的停止。(推荐)
exec是在容器中打开新的终端,并且可以启动新的进程,用exit退出,不会导致容器的停止。

9.主机和容器间拷贝

容器拷贝到主机

docker cp 容器id:/opt/webapp/app.py d:/www

/opt/webapp/app.py : 容器中的文件
d:/www : 主机文件夹

主机拷贝到容器

docker cp d:/www/文件 容器id:/opt/webapp/

容器导入导出

export导出容器的内容留作为一个tar归档文件[对应import命令]
import从tar包中的内容创建一个新的文件系统再导入为镜像[对应export]

docker export 容器id > 文件名.tar
cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号

10.删除容器

docker rm CONTAINER [CONTAINER...]

docker 分层原理:...

docker commit 

提交容器副本使之成为一个新的镜像

docker commit -m="提交描述" -a="作者" 容器id 要创建的目标镜像名:[标签名]

比如 ubuntu下安装vim

[root@base docker]# docker run -it ubuntu /bin/bash
root@df0d38777258:/# vim a.txt
bash: vim: command not found
root@df0d38777258:/# apt-get update
root@df0d38777258:/# apt-get -y install vim
root@df0d38777258:/# vim a.txt
root@df0d38777258:/# cat a.txt
this is a docker
此时已含有vim
退出容器

开始提交操作
[root@base docker]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS                      PORTS     NAMES
df0d38777258   ubuntu    "/bin/bash"   4 minutes ago   Exited (0) 36 seconds ago             nervous_payne
[root@base docker]# docker commit -m='install vim' -a='pykaka' df0d38777258 pykaka/ubuntu_vim:1.1
sha256:0f2a2b6be53abd47fd39ecebce0f2233fd76bdaa2af8bdbbfd381504511e426d
[root@base docker]# docker images
REPOSITORY          TAG       IMAGE ID       CREATED          SIZE
pykaka/ubuntu_vim   1.1       0f2a2b6be53a   51 seconds ago   176MB
ubuntu              latest    ba6acccedd29   7 months ago     72.8MB
[root@base docker]#

docker 推送到阿里云

https://cr.console.aliyun.com/cn-qingdao/instances

1. 创建命名空间

2.创建镜像仓库

 3. 推送 

4.拉取镜像

docker 推送到私有云

1.下载镜像docker registry

docker pull registry

2.运行私有库registry,相当于本地搭建docker hub(此处使用了数据卷)

docker run -d -p 5000:5000 -v /zzyyuse/myregistry/:/tmp/registry --privileged=true registry

3. 创建新镜像 ubuntu安装vim命令

4.curl验证私服库上有哪些镜像

curl  -XGET http://ip:5000/v2/_catalog

 5. 更改镜像格式为私服要求

docker tag 镜像:[Tag]  ip:端口/镜像:[tag]

6.修改配置文件使之支持http

vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://br10hqrl.mirror.aliyuncs.com"],
  "insecure-registries": ["ip:5000"]
}
修改完不生效时重启docker,同时需重启私服仓库 执行第2步

7.推送到私服

docker push  ip:端口/镜像:[tag]

8.curl验证私服库上有哪些镜像

9. pull 拉取到本地

docker pull  ip:端口/镜像:[tag]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker 镜像Docker 容器基础模板,包含了运行应用程序所需的所有文件、依赖库以及配置等信息。当你创建一个 Docker 镜像容器时,实际上是在基于已有的镜像或者构建一个新的镜像基础上,通过命令行的方式启动了一个运行实例。 ### 启动 Docker 容器的基本步骤: #### 步骤一:准备镜像 首先,你需要有一个 Docker 镜像,可以通过下载现成的官方镜像库中的镜像,也可以自定义构建一个镜像。构建镜像通常需要一个 `Dockerfile` 文件,这个文件里定义了镜像应包含哪些基础层、安装哪些软件、设置哪些环境变量等。例如: ```Dockerfile FROM ubuntu:latest RUN apt-get update && apt-get install -y python3 COPY . /app WORKDIR /app CMD ["python", "your_script.py"] ``` 这里的 `Dockerfile` 定义了一个基于最新版本的 Ubuntu 镜像基础,安装了 Python3,并将当前目录下的文件复制到容器内的 `/app` 目录下,并指定运行时执行的命令。 #### 步骤二:构建镜像 一旦有了 `Dockerfile` ,就可以通过下面的命令构建出新的镜像: ```bash docker build -t your_image_name . ``` 这里 `-t` 参数用于指定镜像的标签名(`your_image_name`),`.` 表示从当前目录开始构建镜像。 #### 步骤三:运行容器 构建完成后,可以运行镜像来启动容器: ```bash docker run -d -p host_port:container_port your_image_name ``` - `-d` 参数表示后台模式运行容器; - `-p` 参数将主机端口与容器内部端口关联起来,如 `host_port:container_port`,其中 `host_port` 是你在主机上使用的端口号,而 `container_port` 是容器内部的服务监听端口。 举例来说,如果 `Dockerfile` 中指定了容器内部监听的是 `8080` 端口,并且你想在主机上访问相同的功能,你可以使用上述命令来启动容器: ```bash docker run -d -p 8080:8080 my_docker_image ``` 这将会启动一个新的容器并映射主机的 `8080` 端口到容器的 `8080` 端口上,使得外部可以通过访问 `localhost:8080` 来接触到容器内运行的应用程序。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值