docker的命令分享

docker是啥?

Docker的思想来自于集装箱。

在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了

(容器容器讲得就是这条大鲸鱼)

好像还是不够俗~

 

可以让电脑开启更多台虚拟机的一种技术

 

 

传统虚拟机

容器化技术

1、启动賊慢,应为要加载所有应用所需要的库,虚拟出一整套硬件,运行一个完整的操作系统

2、占资源,一开始要分配内存、cpu给他 且可能只是分配它实际没用到

3、步骤麻烦、各种虚拟机软件安装、镜像啊 到处找 。vm、Virtual box

1、相互隔离,且共用宿主机内核,不需要虚拟一整套硬件

2、库崩了也不会影响其他应用

3、启动快了很多

4、步骤简单了很多

5、分享也较为方便、扩容、迁移也更加方便

 

结婚3大件,docker也有三大件:

Docker镜像(Images):用于创建Docker容器的模板 (钞票模版)

Docker容器(Container):容器是独立运行的一个或一组应用 (印出来的一箱箱钞票)

Docker仓库(repository):用来保存打包好的软件镜像 (放我一箱箱钞票的地方)

 

为啥我要学docker?

我写的小工具无法在小伙伴的电脑上啊~~ 让它给小伙伴跑太繁琐,自己头都大了~~~

我想尝尝redis 敲下get 敲下set ~ 好吧~太难装了 放弃~

咦~ 他会appium也 我也学一下~ 好吧~ 环境太难搞 放弃~

突然想起蔡工说用docker啊~ 好吧~ 六个月后的我来抱抱佛脚~

由于不同的机器有不同的操作系统,以及不同的库和组件,在将一个应用部署到多台机器上需要进行大量的环境配置操作。

docker个人学习路线

1、Docker安装

2、Docker命令

3、Docker镜像

4、容器数据卷

5、仓库与镜像分享

6、DockerFile

7、Docker网络原理

 

下面这些都是啥?

7、IDEA整合Docker

8、Docker Swarm

9、CI/CD jenkins

........

 

学得越多发现自己越无知的可笑~

 

Docker安装

俺是mac

下载地址: https://download.docker.com/mac/stable/Docker.dmg (傻瓜式安装省略1w字~)

 

配置镜像加速 (不要问为什么~ 你懂得!)

我使用的是网易的镜像地址:http://hub-mirror.c.163.com

验证是否安装成功命令

$ docker --version
Docker version 17.03.1-ce-rc1, build 3476dbf

 

Docker命令

命令手册: https://docs.docker.com/engine/reference/run/

 

一、镜像相关命令

查看本地主机上的所有镜像

docker images 【-q】

 

REPOSITORY 镜像仓库源 TAG 镜像标签 IMAGE ID 镜像id

可选项 -q 只显示 镜像id

 

搜索镜像

docker search 加需要的镜像

 

下载镜像

docker pull 镜像名 【:tag】

分层下载,其他镜像里有的就可以不用下载那一层

 

删除镜像

docker rmi -f 镜像id

骚写法-递归删除所有镜像

docker rmi -f $(docker images -q)

 

二、容器相关命令

启动容器

docker run

例子: docker run hello-world

例子: docker run -it centos /bin/bash

可选参数

--name='给容器起名字'

-d 后台运行

-it 使用交互方式运行

-p 指定端口 -p 8080:8081 (左边是主机端口/右边是容器端口)

 

-P 随机指定端口

 

run命令流程(第一次用有些好奇在简书搜了下run的流程)

 

 

 

容器互通的实现方法

查看当前docker网络

docker network ls

创建一个新的 Docker 网络。

docker network create -d bridge test-net

参数说明:

-d:参数指定 Docker 网络类型,有 bridge、overlay。

运行一个容器并连接到新建的 test-net 网络:

docker run -itd --name test1 --network test-net ubuntu /bin/bash

再运行一个容器并加入到 test-net 网络:

docker run -itd --name test2 --network test-net ubuntu /bin/bash

完成 ,相互ping了下均 ok

 

 

退出容器

exit (直接容器停止且退出)

Ctrl+P+Q (退出容器,容器继续运行)

 

查看运行中容器

docker ps

可选参数

-a 查看曾经运行过的容器

-q 只展示容器id

 

删除容器

docker rm 容器id

骚写法-删除所有镜像

docker rmi -f $(docker images -q)

启动和停止容器

docker start 容器id

docker restart 容器id (重启容器)

docker stop 停止当前运行中容器

docker kill 容器id 强制停止当前容器 (stop报错了就用这个)

查看容器日志

docker logs -tf --tail 10 容器id

案例:

docker run -d centos /bin/sh -c "while true;do echo lucax;sleep 1;done"

查看容器中进程信息

docker top 容器id

 

查看容器信息 (比如查挂载情况)

docker inspect 容器id 

 

修改容器内的挂载

~~

 

 

 

进入容器

docker exec -it 容器ID /bin/bash 

 

三、其他

显示docker版本信息

docker version

显示docker 系统信息(含镜像和容器数量)

docker info

帮助命令

docker --help

 

仓库

DaoCloud 道客网络: https://hub.daocloud.io/

https://hub.docker.com/

 

 

 

打包个镜像给别人的方法

 

打个压缩包的

提交镜像更改生成新的镜像文件

docker commit -a "author" -m "commit message" 容器id name:tag (注意name镜像名称要全部小写)

docker镜像导出,tar镜像包可以拷贝到其他机器docker环境中加载

docker save hello -o hello.tar

docker镜像加载

docker load -i hello.tar

发现: (数据卷后的文件是无法保存在镜像的,要打包到另外一个目录)

 

 

docker file

https://www.linuxidc.com/Linux/2018-09/154111.htm

1、编写一个dockerfile文件

2、docker build 构建成一个镜像

3、docker run 运行镜像

 

 

Docker Hub

 

 

 

实战:

 

思路:

 

Portainer容器可视化管理工具

 

kubernetes

k8s是一个开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等~

 

 

总结:

优点

1、更高效的利用系统资源

2、更快速的启动时间

3、一致的运行环境

5、更轻松的迁移

6、部署方便

 

原文地址:https://www.cnblogs.com/kaibindirver/p/15150565.html