当前位置:首页 > 技术分析 > 正文内容

Mac安装Docker及使用

ruisui882周前 (04-15)技术分析18

腾讯云上买的CVM过期了,再买还要花钱,还是用Docker吧。一年多没碰Docker了,好多操作忘记了,正好趁着这个机会记录一下。本次梳理在Mac下安装Docker,并使用Docker。

关系

Docker中有几个重要概念:

Image:镜像,对应操作系统的ISO,这是一个静态的概念

Container:通过镜像可以创建容器,对应安装好的操作系统,这是一个动态的概念。我们随时可以登录容器,即登录这个操作系统

安装Docker

Mac安装Docker很方便,从
https://docs.docker.com/desktop/mac/install/ 下载软件,安装即可。记得查看一下电脑是Intel芯片还是苹果芯片。

执行命令查看安装情况:

  ~ docker version
Client:
 Cloud integration: v1.0.23
 Version:           20.10.14
 API version:       1.41
 Go version:        go1.16.15
 Git commit:        a224086
 Built:             Thu Mar 24 01:49:20 2022
 OS/Arch:           darwin/amd64
 Context:           default
 Experimental:      true

下载镜像

可以去https://hub.docker.com/ 选择自己需要的镜像。三年前做的镜像还在,就用这个吧。

下载镜像:

  ~ docker images
REPOSITORY                  TAG       IMAGE ID       CREATED       SIZE
shidawuhen/php-56-centos7   latest    92ed8b3a7cb4   3 years ago   617MB

当然,我们也可以在hub中找到自己想要的镜像,使用命令下载,如:

docker pull centos:centos7

容器操作

创建容器

有了镜像后,便可创建容器,命令如下:

# centos容器
docker run -itd \
-p 8080:8080 \
-p 8081:8081 \
-p 8082:8082 \
--privileged=true \
--name centos7 \
centos:centos7 \
/bin/bash

# mysql容器,可设置mysql密码
docker run -p 8083:8083 --name mysql8 -e MYSQL_ROOT_PASSWORD=1234Abcd -d mysql:8.0
  • p:表示宿主机和容器机器的端口映射
  • name:表示给该容器起的名称
  • centos:centos7:表示使用哪个镜像的哪个版本

查看容器

使用docker ps命令可查看在运行的容器列表,用docker ps -a可以查看所有容器列表

  ~ docker ps
CONTAINER ID   IMAGE            COMMAND       CREATED         STATUS         PORTS                              NAMES
fe13b347d938   centos:centos7   "/bin/bash"   4 seconds ago   Up 4 seconds   0.0.0.0:8080-8082->8080-8082/tcp   centos7

进入容器

可以使用docker exec命令进入容器,it后面是容器名称,/bin/bash表示在容器里使用bash命令:

docker exec -it centos7 /bin/bash
docker exec -it mysql8 /bin/bash

初次进入Centos7,可以修改root密码

[root@fe13b347d938 /]# passwd

创建user用户

[root@fe13b347d938 /]# useradd user
[root@fe13b347d938 /]# passwd user

添加sudoer

yum install sudo
visudo
# 文件末尾添加 user ALL=(ALL)  ALL

关闭容器

可以使用命令关闭容器,也可直接使用图形界面进行操作

docker stop centos7

启动容器

容器关闭后,需要启动,才能再次进入

docker start centos7

重启容器

容器可进行重启

docker restart centos7

Docker File

上面的这些操作都是手工操作,管理单个容器足够使用了,但是如果需要管理多个镜像、容器,可以使用Docker File和Docker Compose。

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

举个简单实例讲述如何使用。

创建Docker File

创建两个Dockerfile,放到t1和t2目录下,内容为:

FROM centos:centos7
RUN echo 't1' > /home/1.txt
CMD ["/bin/bash"]
FROM centos:centos7
RUN echo 't2' > /home/1.txt
CMD ["/bin/bash"]

创建Compose

创建对应的docker-compose.yml,文件内容为:

version: '2.4'
services:
  centos-t1:
    container_name: centos-t1
    privileged: true
    build: ./t1
    tty: true
    ports:
      - "5000:5000"
  centos-t2:
    container_name: centos-t2
    privileged: true
    build: ./t2
    tty: true
    ports:
      - "5001:5001"

构建镜像

docker-compose -f docker-compose.yml up -d

执行完毕后,能够看到有两个新的镜像

  docker images
REPOSITORY            TAG       IMAGE ID       CREATED          SIZE
macdocker_centos-t2   latest    0e1d76e166fc   5 seconds ago    204MB
macdocker_centos-t1   latest    85bd53e29399   35 seconds ago   204MB

也能看到多了两个container

  docker ps -a
CONTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS                     PORTS                    NAMES
905c975e225d   macdocker_centos-t2   "/bin/bash"              14 seconds ago   Up 13 seconds              0.0.0.0:5001->5001/tcp   centos-t2
b5be8096b5e6   macdocker_centos-t1   "/bin/bash"              14 seconds ago   Up 13 seconds              0.0.0.0:5000->5000/tcp   centos-t1

开启/关闭/重启

我们可以使用如下命令,对Compose的容器进行启动、关闭、重启

docker-compose  -f docker-compose.yml start
docker-compose  -f docker-compose.yml stop
docker-compose  -f docker-compose.yml restart

Compose是对yml文件中的所有容器进行统一管理的,在UI界面中也能看出这种区别

总结

Docker极大的方便了运维同学,对于研发同学也有很大的助力。自己可以方便的搭建出符合自己要求的操作系统,将其上传为镜像,今后在各个位置可以复用,无需做重复的操作。

最初打算用自己的镜像,后来发现有D-Bus问题无法解决,最终使用docker pull mysql:8.0,获取已经有的镜像。大家如果有需求,可以先到GitHub上寻找一些官方的镜像,能节省不少时间。

资料

  1. MacOS Docker 安装
  2. docker容器的安装
  3. 解决:Failed to get D-Bus connection: Operation not permitted
  4. system
  5. Docker run 命令
  6. Docker Dockerfile

最后

大家如果喜欢我的文章,可以关注我的公众号(程序员麻辣烫)

我的个人博客为:
https://shidawuhen.github.io/

往期文章回顾:

  1. 设计模式
  2. 招聘
  3. 思考
  4. 存储
  5. 算法系列
  6. 读书笔记
  7. 小工具
  8. 架构
  9. 网络
  10. Go语言

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/3493.html

分享给朋友:

“Mac安装Docker及使用” 的相关文章

【幼儿园收费管理系统】——中小型幼儿园收费管理的好帮手!

为了让幼儿园收费管理更加高效、便捷,我们推出了《幼儿园收费管理系统》!这款软件专为中小型幼儿园设计,集基础信息、幼儿管理、收费管理、车辆管理、生日提醒、报表统计等功能于一身,是您管理幼儿园的得力助手!一、基础设置:一款好的软件,首先要让您轻松上手。我们的系统提供了幼儿园信息、年级设置、班级设置、餐...

「2022」打算跳槽涨薪,必问面试题及答案——VUE篇

1、为什么选择VUE,解决了什么问题?vue.js 正如官网所说的,是一套构建用户界面的渐进式框架。与其它重量级框架不同的是,vue 被设计为可以自底向上逐层应用。vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另外一方面,当与现代化工具链以及各种支持类库结合使用时,vu...

祸害阿里云宕机3小时的IO HANG究竟是什么?

本文来自微信公号“CSDN”(ID:CSDNnews),作者 | 王知无, 责编| 郭 芮。2019年3月3日凌晨,微博炸锅,有网友反映说阿里云疑似出现宕机,华北很多互联网公司受到暴击伤害,APP、网站全部瘫痪,我自己的朋友圈和微信群里也有好友反馈,刚刚从被窝被叫起来去修Bug,结果发现服务器登不上...

编码 10000 个小时后,开发者悟了:“不要急于发布!”

【CSDN 编者按】在软件开发的道路上,时间是最好的老师。根据“一万小时定律”,要成为某个领域的专家,通常需要大约一万小时的刻意练习。本文作者身为一名程序员,也经历了一万小时的编程,最终悟出了一个道理:慢即是快,重视架构设计和代码质量,确保每一行代码都经得起时间的考验。作者 | Sotiris Ko...

HTML5学习笔记三:HTML5语法规则

1.标签要小写2.属性值可加可不加””或”3.可以省略某些标签 html body head tbody4.可以省略某些结束标签 tr td li例:显示效果:5.单标签不用加结束标签img input6.废除的标签font center big7.新添加的标签将在下一HTML5学习笔记中重点阐述。...

2024最新版:前端性能优化方案汇总

前端训练营:1v1私教,终身辅导计划,帮你拿到满意的 offer。 已帮助数百位同学拿到了中大厂 offer。欢迎来撩~~~~~~~~Hello,大家好,我是 Sunday。前端性能优化一直是很多同学非常关注的问题,在日常的面试中也是经常会被问到的点。所以今天咱们就花一点时间来了解一下2024最新的...