Mac安装Docker及使用

腾讯云上买的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语言

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员麻辣烫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值