“Docker镜像、仓库与容器”的版本间的差异
来自CloudWiki
(→Docker仓库) |
|||
(未显示5个用户的24个中间版本) | |||
第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 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应用。''' |
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应用。