docker入门

前言

Docker作为一个重要的云容器,在目前的线上部署环境中被广泛应用,甚至很多公司已经在用K8S了,但是我们绝大多数后端开发小伙伴可能连Docker这样的容器都还没有真正使用过,今天我们就简单的开箱一下这一款迷之容器,揭开它神秘的面纱。

最近又开始上手折腾Docker,是因为新公司的应用都是部署在云环境的,而且服务比较多,为了快速搭建本地开发环境,所以我就又一次拾起了尚未入门的docker,探索一下它真实的面目,今天讲的内容会比较浅显,保证你上手能用,高级用法等我研究透了再说,另外最近我也接触了ES的一些内容,后面应该会抽时间研究琢磨,等到我觉得时候分享的时候,我会发出来的。

另外说一句,最近一直没有更新什么技术内容,原因之前说过了,现在所有的事情都很顺利,所以技术学习更新从这周开始恢复正常,后面就开始漫长的、无止境的学习之路,让我们一起进步吧!!!!

image

Docker安装

下载

直接访问docker官网进行下:

https://www.docker.com/products/docker-desktop

选择选择对应的版本,这里我的操作系统是windows

image

安装

安装过程很简单,双击下载好的exe文件,其他操作系统类似,然后等待安装完成,因为当前系统已经安装过了,所以我就没法演示了,网上爬了一张图:

image

启停docker服务

一般安装成功后会自动启动docker服务,如果没有启动,你可以手动启动,这里以win10为例:

image

在任务栏右边找到docker的小图标,右键选择自己需要的操作,即可对docker服务进行启停。如果任务栏没有docker的小图标,可以在桌面双击运行docker应用快捷方式进行启动

image

docker简单配置

因为docker并非国内产物,所以在下载相关镜像资源的时候特别慢,为了提高我们资源的下载速度,我们需要配置docker的镜像信息,右键任务栏docker小图标,打开docker的控制面板(或者双击小图标):

image

点击设置按钮,选择docker Engine,修改其中registry-mirrors的配置信息:

image

配置信息是json格式:

"registry-mirrors": [
    "https://reg-mirror.qiniu.com/",
    "https://docker.mirrors.ustc.edu.cn/",
    "https://hub-mirror.c.163.com/"
  ]

其中第一个地址是七牛的镜像,第二个是中科大的镜像,最后一个是网易的镜像。配置完成后,下载资源速度会特别快,不信的小伙伴可以对比下。

基本操作

下面是一些常用的操作,小伙伴们可以参考下:

基本命令

1. 拉取镜像

$ docker pull ubuntu:latest
#或者
$ docker pull ubuntu

解释下上面的命令,ubuntu表示镜像资源的名称,latest表示版本信息,如果不加版本信息,一般会默认拉取最新版本,也就是latest,当然你也可以根据自己的需要指定版本信息。

所以,上面命令的作用就是将ubuntu的最新镜像拉至本地仓库,一般在拉取镜像资源之前,我们都会先通过docker search搜索一下镜像资源,确保资源存在。

2. 查看本地镜像

$ docker images

上面这个命令就很简单,就是展示本地已经拉取的镜像资源:

image

3. 运行容器

$ docker run -itd --name ubuntu-test ubuntu

这个命令应该是最常用的,表示运行某个镜像,但是针对不同的镜像指令可能会有差异,我们在具体使用的时候根据自己的需要进行添加,相信的指令我们后面在详细研究。

上面命令的作用是,启动ubuntu的镜像,镜像实例的名称为ubuntu-test,因为我们没有加版本号,所以默认使用的镜像资源是latest,如果latest版本不存在,就会报错

4. 搜索镜像

$ docker search image-name

例如:

$ docker search redis

5. 常用操作

下面是一些常用组件在docker中的部署、启动操作命令,各位小伙伴可以参考下:

安装并运行nginx
# 拉取最新版本
$ docker pull nginx:latest
# 启动运行
$ docker run --name nginx-test -p 8080:80 -d nginx

其中,name和前面一样,表示启动的实例名称;p表示端口号,8080:80表示将本地的8080端口映射到docker80端口,这时候我们就可以通过当前主机de8080端口来访问我们docker中的nginxd表示在后台运行,这时候就算你关闭了启动的命令行窗口,容器依然会正常运行;最后面的nginx其实是我们偷懒省略了:latest,它等同于nginx:latest

安装并运行mysql
# docker 中下载 mysql
$ docker pull mysql

#启动
$ docker run --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.19

#进入容器
$ docker exec -it mysql bash

#登录mysql
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

#添加远程登录用户
CREATE USER 'syske'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'syske'@'%';

这里大部分的参数都和前面的作用一样,唯一不同的是多了e,这里-e的作用是设置环境变量,也就是说MYSQL_ROOT_PASSWORD=root是要设置的环境变量,作用就是设置root用户的密码。

这里再增加另一个版本:

$ docker run --rm --name mysqlTemp -it -v /usr/local/mysql/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456  mysql:5.7 /bin/bash

$ cp /etc/mysql/my.cnf /var/lib/mysql

-- rm 退出后就删除该容器

-v /usr/local/mysql/:/var/lib/mysql 装主机目录/usr/local/mysql/映射Docker中的/var/lib/mysql目录

-it 交互模式

/bin/bash 进入 bash 命令模式

上面这几种启动方式,在实际使用中重启docker容器之后,数据都会丢失,为了能够在下次启动容器的时候数据还在,我们要用下面的启动命令:

$ docker run -p 3306:3306 -d -e MYSQL_ROOT_PASSWORD=密码 -v /windows盘符/指定的文件夹路径:/var/lib/mysql    mysql:5.7
安装并运行redis
# 拉取最新版本镜像
$ docker pull redis:latest
# 启动运行
$ docker run -itd --name redis-test -p 6379:6379 redis
$ docker run --name redis -p 6380:6379 redis-test --requirepass 123456
#前边是宿主机端口 后面是docker使用的端口

参数大部分都和前面一致,--requirepas是这只redis的访问密码

和上面mysql一样,为了确保存储数据下次可以被加载,我们要用下面的启动命令

docker run -p 6379:6379 -d  -v /windows盘符/指定的文件夹路径:/data    redis:5.0 redis-server --appendonly yes
安装activemq
$ docker run -d --name myactivemq -p 61616:61616 -p 8162:8161 docker.io/webcenter/activemq:latest

这里没什么特殊的参数,不做过多说明

安装zookeeper
$ docker run -d --name zookeeper-test -p 2181:2181 zookeeper

查看所有容器

$ docker ps -a

这里就是查看docker的进程,和linuxps命令类似,看到这个命令我就猜到她肯定还有另一个命令:

$ docker kill pid

然后我试了下,果然有效,依然和linux类似

启动已存在容器

$ docker start 容器ID

结语

原本打算通过docker搭建本地开发测试环境的,但是新公司采用的都是线上集成开发环境,所以目前这块仅用于日常学习和练习。虽然这次了解的不多,但是我还是发现用docker搭建本地开发测试环境简直美滋滋,而且美的不要不要的,你想想原来你每次搞个测试环境要安装这个组件,又要安装那个组件,有了docker一行命令一个组件就可以搞定了,而且如果环境出现问题了,还可以把容器删除了重头再来,而不像本地,搞坏了,重新安装还会出现各种问题,所以小伙伴们,赶紧把docker用起来,开发真的美滋滋!😉


更多java优质内容,请关注我的公众号【云中志】

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容