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