docker基础命令,常用操作
docker基础命令
使用docker镜像
获取镜像
从docker registry获取镜像的命令是docker pull。命令格式是:
docker pull [选项][docker registry地址] 仓库名:标签
docker register地址:地址的格式一般是 域名:端口,默认地址是docker hub
仓库名:仓库名是两段格式,用户名/软件名,如果不写用户,默认docker hub用户名是library,也就是官方镜像
列出服务器所有的镜像文件
# 列出所有的imaga文件
docker image ls
等同与
docker images
删除所有的image文件
docker image rm [imagename]
docker命令学习
删除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
docker基础命令,常用操作的更多相关文章
- docker基础命令和操作
前言 之前在部署个人网站的时候,需要打包maven,在生产环境,需要使用到docker去做服务器和端口的守护. 于是在查阅了相关资料,学习了docker一些基本命令行操作,包括对镜像的查看,修改和添加 ...
- Docker基础和常用命令
Docker基础和常用命令 一,Docker 简介 1.1,什么是 Docker Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,nam ...
- 1. Docker基础命令
本文简要介绍Docker的基础命令,目的在于快速入门Dokcer,Docker的完整命令可以参考Docker官方手册. 0. 安装Docker Docker当前分为企业版(Docker Enterpr ...
- Linux - nginx基础及常用操作
目录 Linux - nginx基础及常用操作 Tengine淘宝nginx安装流程 nginx的主配置文件nginx.conf 基于域名的多虚拟主机实战 nginx的访问日志功能 网站的404页面优 ...
- Docker - Docker基础命令及使用
Docker Docker - 官网 Docker - Hub GitHub - Docker Docker中文社区 Docker基础命令 Docker 查看帮助信息:docker --help 查看 ...
- Linux 的基础命令的操作
Linux 的基础命令的操作 显示日期和时间:date 显示日历:cal 简单好用的计算机:bc 1.显示日期: date +%Y/%m/%d 2018/09/01 date +%H:%M 14:26 ...
- Mac 下 Git 的基础命令行操作
Mac 下 Git 的基础命令行操作 sudo apt-get install git-core //安装Git 用户配置 git config --global user.name "Yo ...
- Docker安装及常用操作
Docker简介: Docker是一个轻量级容器技术,类似于虚拟机技术,但性能远远高于虚拟机,Docker支持将软件编译成一个镜像(image),在这个镜像中做好对软件的各种配置,然后可以运行这个镜像 ...
- 02-命令篇——基础命令&常用命令
基础命令 docker 启动与停止 启动docker systemctl start docker 停止docker systemctl stop docker 重启docker systemctl ...
随机推荐
- 30天自制操作系统day2汇编语言
<30天自制操作系统>一书中第1天和第二天中有关汇编语言的程序的理解 ; hello-os ; TAB=4 ORG 0x7c00 ; 指明程序的装载地址 ; 以下的记述用于标准FAT12格 ...
- Spring系列12: `@Value` `@Resource` `@PostConstruct` `@PreDestroy` 详解
本文内容 @Resource实现依赖注入 @Value详细使用 @PostConstruct @PreDestroy的使用 @Resource实现依赖注入 前面章节介绍了使用@Autowired注入依 ...
- 3U VPX i7 刀片计算机
产品概述 该产品是一款基于第三代Intel i7双核四线程的高性能3U VPX刀片式计算机.产品提供了多个高速PCIe总线接口,其中3个x4 PCIe 3.0接口,1个x4 PCIe 2.0接口.x4 ...
- Solution -「ARC 058C」「AT 1975」Iroha and Haiku
\(\mathcal{Description}\) Link. 称一个正整数序列为"俳(pái)句",当且仅当序列中存在连续一段和为 \(x\),紧接着连续一段和为 \(y ...
- JDK、JRE 和 JVM 有什么用,它们是怎样运行的
JDK如何运作? JDK 功能 以下是JDK的重要组件: JDK 和 JRE:程序员通过使用JDK 创建由 JRE 运行的 Java 程序,其中包括 JVM 和类库. 类库:是一组可动态加载的库,Ja ...
- Rust所有权及引用
Rust 所有权和借用 Rust之所以可以成为万众瞩目的语言, 就是因为其内存安全性. 在以往内存安全几乎全都是通过GC的方式实现, 但是GC会引来性能.CPU以及Stop The World等问题, ...
- scanf坑我的那些年
scanf函数作为用户输入指令给计算机的一种输入方法,它的使用有如下几被坑点: scanf用法:#include<stdio.h>;scanf("格式控制符",地址表列 ...
- java运行原理、静态代理和动态代理区分
1.java的编译和运行原理: ■ 编译:将源文件 .java 文件,通过编译器(javac 命令) 编译成 字节码文件 .class 文件. ■ 运行,通过类加载器(以二进制流形式)把字节码加载进J ...
- 计算机网络-IP篇
目录 IP 基本认识 IP地址 IP 地址的分类 公有 IP 地址与私有 IP 地址 IP 地址与路由控制 IP 分⽚与重组 IPv6 基本认识 IPv4 ⾸部与 IPv6 ⾸部 IP协议 DNS A ...
- Ng ML笔记
目录 一.线性回归 1,假设函数.代价函数,梯度下降 2,特征处理 3,代价函数和学习速率 4,特征和多项式回归 5,正规方程 二.逻辑回归(Logistic Regression,LR) 1,假设函 ...