初级使用记录

==了解== 熟悉 掌握 精通

init

下载docker,macOS版
brew install --cask --appdir=/Applications docker

本机启动docker 服务

# service 命令的用法
$ sudo service docker start

# systemctl 命令的用法
$ sudo systemctl start docker

💡注意servicesystemctl都不能在macOS中使用,macOS的命令是launchctl,但是在macOS中brew install,就会自动下载docker Desktop,使用客户端界面打开好了。

一些概念简介

docker有镜像和容器的概念。下载docker之后,需要哪个应用,比如mysql,就下载相应的镜像,里面装的是该应用程序及其依赖。通过镜像,可以再生成容器的实例,一个镜像可以反复生成多个容器。
镜像在Docker Hub下载。

命令

镜像命令 image

列出所有镜像:

docker images

# 会列出
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

# 参数
-a # 列出所有
-q # 只显示镜像id

搜索镜像:

docker search <名字>

下载镜像:

docker pull <名字>

删除镜像

docker rmi <名字/id>

循环删除:
docker rmi -f $(docker image -aq)

容器命令

💡 有了镜像才可以创建容器。所以要先
docker pull <容器>

新建容器并启动

docker run <参数> image

# 参数说明
--name="name" 容器名字
-d            后台方式运行
-it           交互方式运行,进入容器查看内容
-p            端口,可映射  -p (主机端口:)容器端口

启动一个centos并进入:
docker run -it centos /bin/bash

退出:
exit

列出运行的容器

docker ps <参数>

    # 如果不带参数,就是查看当前运行的容器
-a  # 列出当前运行的容器 + 历史运行的容器
-n=? # 显示最近创建的容器
-q  # 只显示容器的编号

退出容器

exit  # 直接容器停止并退出
ctrl + p + q # 容器不停止退出

删除容器

docker rm <容器id>   # 删除指定容器, 不能删除运行中的id
docker rm -f ${docker ps -aq}  #删除所有容器
docker ps -a -q | xargs docker rm # 删除所有容器

启动和停止容器

docker start <容器id>   # 启动容器
docker restart <容器id>  # 重启
docker stop <容器id>  # 停止正运行的容器
docker kill <容器id>  # 强制停止当前容器

后台启动容器

docker run -d centos
# docker容器使用后台运行,必须要有一个前台进程,如果没有就会自动停止

查看日志

# 写一段脚本
docker run -d centos /bin/bash -c "while true; do echo 测试测试;sleep 1;  done"

# 查看id,假设是 bcdefg
docker ps

# 查看最后10条日志  
-t  # 显示日志
-f  # 显示时间戳
-tail num
docker logs -tf -tail 10 bcdefg

查看容器中进程信息

docker top <容器id>

查看镜像元数据

docker inspect <镜像id>

进入当前正运行的容器

-it  # 交互模式
docker exec -it <容器id> bashShell(比如bin/bash) # 进入后 开启新的终端
docker attach <容器id> bashShell(比如bin/bash) # 进入在容器正在执行的终端

从容器内copy到主机上

docker cp <容器id>:<容器路径> <主机命令>

一些练习

查看docker状态

# 看docker有无安装
docker --version  # 如果不带`--`,信息会多一些
# 查看docker状态
systemctl status docker  # linux系统
docker ps  # 其实可以直接用这个命令看docker有没有run

删除容器

# 删除容器,❗️但是必须是不在运行的容器
docker rm [容器名字/id]  
# 停止容器
docker stop [容器名字/id]  
# 强制停止容器
docker kill [容器名字/id]  

连redis

# 下载镜像
docker pull redis

# 启动redis容器
docker run -p 6379:6379 --name my-redis -d redis

# 进入redis容器
docker exec -it my-redis redis-cli

然后进入之后跟普通命令操作一样。

安装 & 连mongoDB

# 下载镜像
docker pull mongodb/mongodb-community-server

# 启动容器
docker run -d --name my-mongo -p 27017:27017 -v $HOME/.local/share/mongo-data:/data/db mongo