Docker 命令汇总

https://docs.docker.com/install/linux/docker-ce/centos/
Docker v 18.09 这是代表最新版本是18年09月发布的最新版本

——————– Docker 版本 查看 ——————–
docker –version 查看是否安装成功,版本号  
docker version 查看docker client , docker server 版本号等信息

一、在 Mac 上安装Docker
https://docs.docker.com/docker-for-mac/install/

二、在 Windows 上安装Docker
https://docs.docker.com/docker-for-windows/install/

三、在 Linux 上安装Docker
https://docs.docker.com/install/linux/docker-ce/centos/

——————– Docker image 命令 ——————–
docker image –help
docker image ls #列举本地有的image
docker images push #提交image 

——————– Docker image 命令简写 ——————–
docker image ls === docker images
docker image rm === docker rmi  

——————– Image 的获取 ——————–
一、Dockerfile
二、Registry

——————– Container 命令 ——————–
docker –help  
docker container ls #列举当前运行的container
docker container ls -a #列举当前运行的container ,包括退出的
docker run image:version #container 是基于 image的,执行image 默认latest,指定则加上 :version 即可
docker run -it image #交互式运行,进入标准输出里面,exit 退出则容器停止
docker container rm ID #根据ID删除conrainer

——————– Container 命令简写 ——————–
docker container ls -a === docker ps -a
docker container rm ID === docker rm ID
docker container ls -a | awk {‘print$1’} === docker container ls -aq #列举所有的container ID
docker rm $(docker container ls -aq) #删除所有的container
docker rm $(docker container ls -f “status=exited” -q) #删除所有状态是exited的容器

——————– 把Container commit 成一个Image ——————–
docker commit myMysql lw97/mysql-demo

——————– Dockerfile build 成一个Image ——————–
vim Dockerfile 
FROM centos
RUN yum install -y vim 
:wq
docker build -t lw97/centos-demo .

——————– Dockerfile 细节 ——————–
FROM scratch #制作base image 
FROM centos #使用base image 
FROM ubunut:14.04
尽量使用官方的image 作为base image 为了安全!

LABEL maintainer=”xxx@gmail.com”
LABEL version=”1.0″
LABEL description=”This is description”
LABEL 中 Metadata 不可缺少!

RUN : 执行命令并创建新的Image Layer
RUN yum update && yum install -y vim \ python-dev #反斜线换行 
RUN apt-get update && apt-get install -y perl \ pwgen –no-install-recommends &&rm -rf \ /var/lib/apt/lists/* #注意清理cache
RUN /bin/bash/ -c ‘source $HOME/.bashrc;echo$HOME’
尽量利用&& 连接 如果太长建议\换行

WORKDIR /root

WORKDIR /test #如果没有test自动创建
WORKDIR demo
RUN pwd #输出结果 /test/demo

用WORKDIR 不要用RUN cd! 尽量使用绝对目录

ADD and COPY
ADD hello /
ADD test.tar.gz / #添加到根目录并解压

WORKDIR /root  
ADD hello test/ #/root/test/hello

WORKDIR /root
COPY hell test/

ADD or COPY 
大多数情况下,COPY优先于ADD !
ADD 除了COPY 之外还有其他的功能(解压)!
添加远程文件/目录请使用curl 或者 wget!

ENV MYSQL_VERISON 5.6 #设置常量
RUN apt-get install -y mysql-server=’${MYSQL_VERISON}’ \
&& rm -rf /var/lib/apt/lists/* # 引用常量
尽量使用ENV 增加可维护性

VOLUME and EXPOSE (存储和网络)

CMD : 设置容器启动后默认执行的命令和参数
ENTRYPOINT : 设置容器启动时运行的命令
CMD and ENTRPPOINT 

—————– 命令的两种格式 Shell && Excel —————– 
Shell 格式
RUN apt-get install -y vim 
CMD echo “hello docker”
ENTRYPOINT echo “hello docker”

Excel 格式
RUN [“apt-get”,”install”,”-y”,”vim” ]
CMD [“/bin/echo”,”hello docker”]
ENTRYPOINT [“/bin/echo”,”hello docker”]

—————– 镜像发布 —————– 
docker login 
docker push lw97/centos-demo:1.0
https://hub.docker.com/
docker rmi 
docker pull lw97/centos-test

—————– 搭建私有的镜像仓库 —————– 
docker run -d -p 5000:5000 –restart always –name registry registry:2
telnet 47.100.252.38 5000
docker build -t 47.100.252.38:5000/centos-test .

———- 如果机器中没有telnet 命令
yum list telnet* 列出telnet相关的安装包
yum install telnet-server 安装telnet服务
yum install telnet.* 安装telnet客户端

———- 如果直接push这样是不可行的 
docker push 47.100.252.38:5000/centos-test ,
错误如下:
Get https://47.100.252.38:5000/v2/: http: server gave HTTP response to HTTPS client

解决问题:
一、
sudo ls /etc/docker
vim daemon.json
{“insecure-registries”:[“47.100.252.38:5000”]}
:wq
二、
sudo vim /lib/systemd/system/docker.service
在[Service]中加入
EnvironmentFile=-/etc/docker/daemon.json
sudo service docker restart  

现在即可:
docker push 47.100.252.38:5000/centos-test
成功!
帮助文档
https://docs.docker.com/registry/spec/api/

—————– 容器的操作 —————– 
docker exec -it 容器ID /bin/bash #exec -it /bin/bash #交互式进入容器里面,执行/bin/bash命令
docker exec -it 容器ID ip a #这个容器的IP地址
docker stop 容器ID #停止容器
docker run -d –name=demo 47.100.252.38:5000/centos-test #-d 代表后台执行 –name 起别名
docker inspect 容器ID #查看容器详细信息
docker logs 容器ID #容器运行日志,便于调试

—————– Docker 持久化存储 和数据共享 —————– 
数据持久化:Data Volume
Dockerfile 中指定 VOLUME[“/var/lib/mysql”]
docker run -v mysql:/var/lib/mysql
数据持久化:Bind Mouting
docker run -v /home/aaa:/root/aaa

—————– Docker Compose —————– 
docker-compose.yml
版本:version 3 
https://docs.docker.com/compose/compose-file/
安装 & 使用
在Mac 和 Windows上 安装docker的时候默认已经安装上Docker Compose 
只有在Linux 是纯净的 需要自己安装
https://docs.docker.com/compose/install/
docker-compose –version #查看版本
docker-compose -f docker-compose.yml up === docker-compose up
docker-compose ps # 查看服务
docker-compose stop  
docker-compose down #停止并且删除,并不删除image
docker-compose up -d #后台运行
docker-compose images #compose 里面的image 
docker-compose exec [service] bash  
docker-compose up –scale web=3 -d #水平扩展

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值