“Docker镜像、仓库与容器”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
列出镜像列表
Docker仓库
 
(未显示3个用户的18个中间版本)
第1行: 第1行:
 +
==Docker仓库==
 +
实验要求:使用master和slave两台设备
 +
 +
基础准备:两天节点都已安装好docker-ce
 +
 +
 +
构建私有仓库
 +
 +
运行Registry
 +
 +
cd /opt (进入opt目录)
 +
 +
./image.sh(导入所有节点)
 +
 +
将Registry镜像运行并生成一个容器
 +
 +
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000--restart=always --name registry registry:latest
 +
 +
查看安装的docker
 +
 +
<nowiki>docker images</nowiki>
 +
 +
<nowiki>ll</nowiki>
 +
 +
<nowiki>cat image.sh</nowiki>
 +
 +
<nowiki>ll images/</nowiki>
 +
 +
查看容器运行情况
 +
 +
docker ps
 +
 +
编辑信息
 +
vi /etc/docker/daemon.json
 +
添加本机ip
 +
{
 +
  "insecure-registries":[ip地址:5000"]
 +
}
 +
 +
重启服务
 +
 +
Systemctl daemon-reload
 +
 +
Systemctl restart docker
 +
 +
将该镜像标记ip:5000/centos:latest
 +
 +
docker tag centos:latest ip:5000/centos:latest
 +
 +
用docker push 上传标记的镜像
 +
 +
docker push ip:5000/centos:latest
 +
 +
查看仓库中的镜像(使用curl)
 +
 +
curl -L http://ip:5000/v2/_catalog
 +
 +
使用浏览器地址查看
 +
 +
ip:5000/v2/_catalog
 +
看是否上传成功
 +
 +
拉取镜像
 +
 +
登陆Slave节点,配置私有仓库地址
 +
vi /etc/docker/daemon.json
 +
{
 +
  "insecure-registries":["ip:5000"]
 +
}
 +
重启服务
 +
Systemctl daemon-reload
 +
systemctl restart docker
 +
 +
拉取镜像并查看结果
 +
 +
docker pull ip:5000/centos:latest
 +
docker images
 +
 +
==Docker镜像==
 +
实验要求:使用master
 +
 +
基础准备:该节点已安装好docker-ce
 +
 +
 
'''当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载'''
 
'''当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载'''
  
==Docker镜像==
+
===查看镜像列表===
 +
 +
docker images
  
===列出镜像列表===
 
<nowiki>docker images</nowiki>
 
 
  REPOSITORY:表示镜像的仓库源
 
  REPOSITORY:表示镜像的仓库源
 
  TAG:镜像的标签
 
  TAG:镜像的标签
第19行: 第103行:
 
-i: 交互式操作。
 
-i: 交互式操作。
 
-t: 终端。
 
-t: 终端。
 +
 
latest 这是指用最高版本的镜像为基础来启动容器。
 
latest 这是指用最高版本的镜像为基础来启动容器。
 +
 
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash
 
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash
  
第33行: 第119行:
  
 
  NAME: 镜像仓库源的名称
 
  NAME: 镜像仓库源的名称
 
 
  DESCRIPTION: 镜像的描述
 
  DESCRIPTION: 镜像的描述
 
 
  OFFICIAL: 是否 docker 官方发布
 
  OFFICIAL: 是否 docker 官方发布
 
 
  stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
 
  stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
 
 
  AUTOMATED: 自动构建。
 
  AUTOMATED: 自动构建。
  
第75行: 第157行:
 
  CMD    /usr/sbin/sshd -D
 
  CMD    /usr/sbin/sshd -D
  
每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。第一条FROM,指定使用哪个镜像源
+
每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。
 +
 
 +
第一条FROM,指定使用哪个镜像源
 +
 
 
RUN 指令告诉docker 在镜像内执行命令,安装了什么  
 
RUN 指令告诉docker 在镜像内执行命令,安装了什么  
  
第93行: 第178行:
 
===使用镜像创建容器===
 
===使用镜像创建容器===
 
   
 
   
  docker run -t -i runoob/centos:6.7 /bin/bash
+
  docker run -t -i runoob/centos:latest /bin/bash
  
 
===查看===
 
===查看===
第104行: 第189行:
  
  
==Docker仓库==
 
  
  构建私有仓库
+
==容器==
 +
 
 +
===重看Docker客户端所有命令选项===
 +
 
 +
  docker
 +
 
 +
==容器的使用==
 +
 
 +
===获取镜像===
 +
 +
docker pull centos
 +
 
 +
===启动容器===
 +
 +
docker run -it centos /bin/bash
 +
 
 +
参数说明:
 +
-i: 交互式操作。
 +
-t: 终端。
 +
buntu: ubuntu 镜像。
 +
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
 +
 
 +
===退出终端===
 +
 +
exit
 +
 
 +
===查看多有容器命令===
 +
 
 +
docker ps -a
 +
 
 +
===使用docker start启动一个已停止的容器===
 +
 
 +
docker start 容器名称
 +
 
 +
===停止一个容器===
 +
 
 +
docker stop 容器ID
 +
 
 +
===停止的容器重启===
 +
 
 +
docker restart 容器ID
 +
 
 +
===后台运行===
 +
 
 +
docker run -itd --name linux-test linux /bin/bsh
 +
 
 +
==进入容器==
 +
 
 +
'''docker exec 此命令退出容器终端,不会导致容器的停止'''
 +
 
 +
docker exec -it 容器号 /bin/bash
  
 +
==导出和导入容器==
  
运行Registry
+
===导出容器===
<nowiki>cs /opt</nowiki> (进入opt目录)
 
  
  <nowiki>./image.sh</nowiki> (导入所有节点)
+
  docker export 容器ID > centos.tar
  
[[文件:图片2 |600px]]
+
'''导出容器 1e560fca3906 快照到本地文件 ubuntu.tar
 +
这样将导出容器快照到本地文件。'''
  
<nowiki>docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000--restart=always --name registry registry:latest<nowiki>
+
===导入容器快照===
  
查看安装的docker
+
'''使用 docker import 从容器快照文件中再导入为镜像
 +
  以下实例将快照文件 centos.tar 导入到镜像 test/centos:v1:'''
  
  1.<nowiki>docker images</nowiki>
+
  cat docker/centos.tar | docker import - test/centos:v1
  
2. <nowiki>ll</nowiki>
+
===删除容器===
  
  3.<nowiki>cat image.sh</nowiki>
+
  docker rm -f 容器ID
  
4.<nowiki>ll images/</nowiki>
+
===清理掉所有处于终止状态的容器===
  
[[文件:图片1 |600px]]
+
docker container prune
  
查看容器
+
==运行一个web应用==
  
  <nowiki>docker ps</nowiki>
+
  docker pull training/webapp #载入镜像
 +
docker run -d -p training/webapp python app.py
  
[[文件:图片3 |600px]]
+
参数说明:
  
编辑信息
+
-d:让容器在后台运行。
  <nowiki>vi /etc/docker/daemon.json</nowiki>
+
  -P:将容器内部使用的网络端口随机映射到我们使用的主机上。
  
添加本机ip
+
===查看WEB应用容器===
 +
 +
docker ps #会发现下方多了端口信息
  
[[文件:图片4 |600px]]
+
===可以通过浏览器访问WEB应用===
  
重启服务
+
  '''Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32769 上。
  <nowiki>Systemctl daemon-reload/nowiki>
 
  
<nowiki>Systemctl restart docker</nowiki>
+
这时我们可以通过浏览器访问WEB应用。'''

2020年10月15日 (四) 23:52的最新版本

Docker仓库

实验要求:使用master和slave两台设备

基础准备:两天节点都已安装好docker-ce


构建私有仓库

运行Registry

cd /opt (进入opt目录)
./image.sh(导入所有节点)

将Registry镜像运行并生成一个容器

docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000--restart=always --name registry registry:latest

查看安装的docker

docker images
ll
cat image.sh
ll images/

查看容器运行情况

docker ps

编辑信息

vi /etc/docker/daemon.json
添加本机ip
{
 "insecure-registries":[ip地址:5000"]
}

重启服务

Systemctl daemon-reload
Systemctl restart docker

将该镜像标记ip:5000/centos:latest

docker tag centos:latest ip:5000/centos:latest

用docker push 上传标记的镜像

docker push ip:5000/centos:latest

查看仓库中的镜像(使用curl)

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

使用浏览器地址查看

ip:5000/v2/_catalog
看是否上传成功

拉取镜像

登陆Slave节点,配置私有仓库地址
vi /etc/docker/daemon.json
{
 "insecure-registries":["ip:5000"]
}
重启服务
Systemctl daemon-reload
systemctl restart docker

拉取镜像并查看结果

docker pull ip:5000/centos:latest
docker images

Docker镜像

实验要求:使用master

基础准备:该节点已安装好docker-ce


当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载

查看镜像列表

docker images
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小

运行容器

  docker run -t -i latest /bin/bash  

参数说明

-i: 交互式操作。 -t: 终端。

latest 这是指用最高版本的镜像为基础来启动容器。

/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash

获取一个新的镜像

docker pull +下载版本号

查找镜像

docker search httpd

参数说明:

NAME: 镜像仓库源的名称
DESCRIPTION: 镜像的描述
OFFICIAL: 是否 docker 官方发布
stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
AUTOMATED: 自动构建。

拖取镜像

docker pull httpd

下载完成后,使用下方命令使用该镜像

docker run httpd

删除镜像

docker rmi 镜像名称

构建镜像

创建Dockerfile文件夹

touch Dockerfile

创建新的镜像

vi Dockerfile

进入编辑添加下方信息

FROM    centos:latest
MAINTAINER      Fisher "fisher@sudops.com"
RUN     /bin/echo 'root:本机密码' |chpasswd
RUN     useradd runoob
RUN     /bin/echo 'runoob:本机密码' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D

每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。

第一条FROM,指定使用哪个镜像源

RUN 指令告诉docker 在镜像内执行命令,安装了什么

查看Dockerfile

cat Dockerfile

通过docker build构建一个镜像

docker build -t runoob/centos:latest


查看已经创建的镜像列表

docker images

使用镜像创建容器

docker run -t -i runoob/centos:latest  /bin/bash

查看

id runood




容器

重看Docker客户端所有命令选项

docker

容器的使用

获取镜像

docker pull centos

启动容器

docker run -it centos /bin/bash
参数说明:
-i: 交互式操作。
-t: 终端。
buntu: ubuntu 镜像。
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

退出终端

exit

查看多有容器命令

docker ps -a

使用docker start启动一个已停止的容器

docker start 容器名称

停止一个容器

docker stop 容器ID

停止的容器重启

docker restart 容器ID

后台运行

docker run -itd --name linux-test linux /bin/bsh

进入容器

docker exec 此命令退出容器终端,不会导致容器的停止

docker exec -it 容器号 /bin/bash

导出和导入容器

导出容器

docker export 容器ID > centos.tar

导出容器 1e560fca3906 快照到本地文件 ubuntu.tar 这样将导出容器快照到本地文件。

导入容器快照

使用 docker import 从容器快照文件中再导入为镜像

  以下实例将快照文件 centos.tar 导入到镜像 test/centos:v1:
cat docker/centos.tar | docker import - test/centos:v1

删除容器

docker rm -f 容器ID

清理掉所有处于终止状态的容器

docker container prune

运行一个web应用

docker pull training/webapp #载入镜像
docker run -d -p training/webapp python app.py

参数说明:

-d:让容器在后台运行。
-P:将容器内部使用的网络端口随机映射到我们使用的主机上。

查看WEB应用容器

docker ps #会发现下方多了端口信息

可以通过浏览器访问WEB应用

Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32769 上。

这时我们可以通过浏览器访问WEB应用。