Docker 学习笔记

1. 特点

1.1. 特征

  • 类虚拟机
  • 镜像只读
  • 容器读写

1.2. 优点

  • 启动速度快
  • CPU占用小
  • 内存占用小
  • 磁盘占用小
  • 迁移部署方便

1.3. 缺点

  • 容器为线程
  • 容器权限与宿主机同步

2. 命令

2.1. 程序命令

$ docker version # 查看版本信息
$ docker info # 查看程序信息
$ docker help # 查看帮助
$ docker system df [-v] # 查看占用空间
$ docker system prune [-a | -f] # 清理空间

2.2. 镜像命令

$ docker search <name> # 仓库中搜索镜像
$ docker pull <name>[:<version>] # 拉取镜像
$ docker rmi <name>[:<version>] # 移除镜像
$ docker rmi -f $(docker images -qa) # 移除所有镜像
$ docker images[-a] # 列出镜像
$ docker build <dockerfile> # 通过Dockerfile创建镜像
$ docker commit [-a <author> | -m <description>] <container id> <name>:<version> # 通过容器创建镜像
$ docker save <-o <file>> <name[:<version>]> # 导出镜像
$ docker load <-i <file>> # 导入镜像

2.3. 容器命令

$ docker run [-it | -d | --name <container name> | -p <host post>:<container post>[/udp] | -v <volume name>:<container path>] <image name> # 创建并开始容器
$ docker exec [-it] <container id> <command> # 执行容器命令 / 进入容器操作
$ docker cp <host path> <container id>:<container path> # 复制文件
$ docker ps [-a] # 列出容器
$ docker start <container id> # 开始容器
$ docker stop <container id> # 停止容器
$ docker pause <container id> # 挂起容器
$ docker unpause <container id> # 恢复容器
$ docker kill <container id> # 强制停止容器
$ docker rm <container id> # 移除容器
$ docker stop $(docker ps -q) & docker rm $(docker ps -aq) # 移除所有容器
$ docker inspect <container id> # 查看容器信息
$ docker container logs <container id> # 查看容器日志
$ docker diff <container id> # 对比与镜像文件目录区别
$ docker top <container id> # 查看容器中进程
$ docker export <-o <file>> <container id> # 导出容器文件系统

2.4. 卷命令

$ docker volume ls # 列出卷
$ docker volume inspect <volume name> # 查看卷信息
$ docker volume create <volume name> # 创建卷
$ docker volume rm <volume name> # 移除卷
$ docker volume rm $(docker volume ls -q) # 移除所有卷

3. 特殊问题

3.1. Windows下WSL2占用内存修改

$ vim %UserProfile%/.wslconfig
  [wsl2]
  memory=2GB
  swap=0GB
  localhostForwarding=true
$ wsl --shutdown

3.2. Windows下Laradock提示”/tmp/sources.sh: not found”

$ vim laradock/workspace/sources.sh
$ :set ff=unix

4. 常用镜像

4.1. Ubuntu

docker run -itd \
--name <name> \
-p 10080:80 \
-p 10022:22 \
-m 200m \
ubuntu:latest

4.2. MySQL

docker run -itd \
--name <name> \
-p 13306:3306 \
-m 1g \
-e MYSQL_ROOT_PASSWORD=root \
mysql:latest

4.3. PostgreSQL

docker run -d \
--name <name> \
-p 15432:5432 \
-m 1g \
-e POSTGRES_PASSWORD=postgres \
postgres:latest

4.4. Redis

docker run -d \
--name <name> \
-p 16379:16379 \
-m 100m \
redis:latest

4.5. phpMyAdmin

docker run -d \
--name <name> \
-e PMA_HOST=127.0.0.1 \
-e PMA_PORT=13306 \
-e PMA_ABSOLUTE_URI=https://localhost/ \
-p 10080:80 \
-m 100m \
phpmyadmin/phpmyadmin:latest

4.6. Adminer

docker run -d \
--name <name> \
-p 18080:8080 \
adminer:latest

参考

版权协议

知识共享许可协议
本作品采用知识共享署名-非商业性使用-禁止演绎 3.0 版本许可协议进行许可。