删除 docker 镜像(必须删除依赖这个镜像的容器记录)
docker rmi 镜像 id / 镜像名
运行镜像, 且产生一个容器记录, 且进入容器空间内
docker run -it CentOS /bin/bash
-it 交互式的终端, 代表我可以在容器中输入命令
/bin/bash 指定 shell 解释器
创建一个容器, 在容器内安装一个 VIM 工具
- # 运行镜像,
- docker run -it CentOS /bin/bash
- # 安装 VIM
- yum install VIM
- # 退出
- exit
提交这个容器, 创建新的 image
- docker commit 059fdea031ba chaoyu/CentOS-VIM
- # 059fdea031ba 为上述容器 id, 后面的是新的 image 文件名
查看已提交的镜像记录
docker images
基于这个拥有 VIM 的镜像, 创建新的容器
- docker run -it 479 /bin/bash
- # 479 为拥有 VIM 的镜像 id, 后续为路径
导出当前系统的镜像文件, 可以传输给其他人
docker save shenzhenqishi1qi/CentOS-VIM> /opt/CentOS-VIM.tar.gz
. 其他人或者自己可以导入这个镜像文件
docker load </opt/CentOS-VIM.tar.gz
创建启动容器的方式有 2 种
1. 基于镜像创建新的容器
2. 对于已运行的容器, 进行启停
docker stop 容器 id
docker start 容器 id
运行 CentOS 镜像生成容器并执行 echo hehe
- # 这条命令意思是: 创建一个只运行一次的容器
- docker run CentOS /bin/echo "hehe"
运行一个容器记录, 且给与名字
docker run --name mydocker -it CentOS /bin/bash# 启动一个 bash 终端, 允许用户进行交互
运行一个 Ubuntu 容器
1. 查看系统的版本信息
- cat /etc/RedHat-release #这个命令查看红帽系列的系统
- cat /etc/os-release
2. 运行一个 Ubuntu 容器
docker run -it Ubuntu /bin/bash
删除容器记录
docker rm 容器 id
- docker -aq #列出所有容器记录的 id
- docker stop `docker ps -aq` #停止所有正在运行的容器
- docker rm `docker ps -aq` #一次性删除所有容器记录
- docker rmi `docker images -aq` #一次性删除所有本地的镜像记录
暴露容器端口, 端口映射
-P 参数会随机映射端口到容器开放的网络端口
docker run -d -P training/webapp python App.py
-d 后台运行
-P 端口映射, 随机映射 , 物理机的随机端口: 容器内暴露的端口
如果本地没有镜像文件, docker run 会自动帮我们下载镜像
在 docker run CentOS
- [root@qishione ~]# docker ps
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- e3e0be2b22a8 training/webapp "python app.py" 2 seconds ago Up 1 second 0.0.0.0:32769->5000/tcp qishiweb
只要我访问宿主机的 32769 端口也就是访问到了容器内的 5000 端口
指定端口映射, 启动容器应用
docker run -d -p 9999:5000 --name my9999webapp training/webapp python App.py
training/webapp 这个镜像文件, 我们基于这个镜像, 运行了一个 flask Web App
1. 基于 Ubuntu 14.04 的操作系统 FROM Ubuntu:14.04
2. 默认进入了 / opt/webapp 目录 RUN cd /opt/webapp
3. 在这个目录下存放了 Procfile App.py requirements.txt tests.py
4. 通过容器内的命令, 运行一个后台程序 python App.py
5. 最终这个镜像, 生成了一个 Web 容器
6. 数据挂载
-v 宿主机的文件夹: 容器内的文件夹
-p 端口映射 宿主机的端口: 容器内的端口
7. docker port 82e 查看容器的端口映射关系
发布 docker 镜像到 docker hub
1. 登录 odcker hub 仓库, 注册一个用户, 用于存放自己的 docker 镜像
2. 在 Linux 中登录 docker
docker login #输入账号密码
3. 修改本地镜像的名字, 推送到 docker hub
docker tag docker.io/hello-world yuchao163/qishi1qi-hello-docker
4. 推送本地镜像到共有仓库
docker push yuchao163/qishi1qi-hello-docker
5. 仍和人都可以随意下载这个镜像
docker pull yuchao163/qishi1qi-hello-docker
搭建私有 docker 仓库, 提交本地镜像
1. 下载一个 docker 官方私有仓库镜像
docker pull registry
2. 运行一个 docker 私有容器仓库
docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry
-d 后台运行
-p 端口映射 宿主机的 5000: 容器内的 5000
-v 数据卷挂载 宿主机的 /opt/data/registry :/var/lib/registry
registry 镜像名
3. 修改 docker 的配置文件, 让他支持 http 方式, 上传私有镜像
VIM /etc/daemon.JSON
写入如下内容
- {
- "registry-mirrors": ["http://f1361db2.m.daocloud.io"],
- "insecure-registries":["192.168.11.37:5000"]
- }
4. 修改 docker 的服务配置文件
VIM /lib/systemd/system/docker.service
找到 [service] 这一代码区域块, 写入如下参数
- [Service]
- EnvironmentFile=-/etc/docker/daemon.JSON
5. 重新加载 docker 服务
systemctl daemon-reload
6. 重启 docker 服务
重启 docker 服务, 所有的容器都会挂掉
重启 docker 服务, 所有的容器都会挂掉
重启 docker 服务, 所有的容器都会挂掉
systemctl restart docker
7. 修改本地镜像的 tag 标记, 往自己的私有仓库推送
docker tag docker.io/yuchao163/hello-world-docker 192.168.11.37:5000/xiayuhao
8. 下载私有仓库的镜像
docker pull 192.168.11.37:5000/xiayuhao
编写 dockerfile, 构建自己的镜像, 运行 flask 程序
1. 在宿主机中, 编写一个 flask 代码文件, 和 Dockerfile
cd /opt/dockertest/
touch flasktest.py
- from flask import Flask
- App=Flask(__name__)
- @App.route('/')
- def hello():
- return "i love china"
- if __name__=="__main__":
- App.run(host='0.0.0.0',port=8080)
2. 构建 dockerfile
1. 指引一个基础的系统镜像 CentOS
2. 定义作者标签
3. 解决环境依赖关系, 安装 python-setuptools
4. 安装 flask 模块 easy_install flask
5. 准备代码文件到容器中 COPY flasktest.py /opt/
6. 切换到 / opt 目录下 workdir /opt
7. 运行代码 python flasktest.py
3.dockerfile 内容如下
- [root@qishione dockertest]# cat Dockerfile
- FROM CentOS
- LABEL maintainer="深圳骑士 1 期"
- RUN yum install python-setuptools -y
- RUN easy_install flask
- COPY flasktest.py /opt/
- WORKDIR /opt
- EXPOSE 8080
- CMD ["python","flasktest.py"]
4. 构建镜像文件, 找到当前目录的 Dockerfile, 开始构建
docker build -t qishi1qi/flask-Web .
5. 基于这个镜像, 生成容器实例
docker run -d -p 7777:8080 945
6. 推送这个镜像到私有仓库
- docker tag qishi1qi/flask-Web 192.168.11.37:5000/qishi1qi-flaskweb
- docker push 192.168.11.37:5000/qishi1qi-flaskweb
来源: http://www.bubuko.com/infodetail-2927186.html