赞
踩
选择其中一种方式安装即可
curl -fsSL https://get.docker.com | sh
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
yum update
yum install -y yum-utils device-mapper-persistent-data lvm2
yum install -y -q docker-ce docker-ce-cli containerd.io docker-scan-plugin docker-compose-plugin docker-ce-rootless-extras
脚本地址:https://github.com/Jrohy/docker-install/
# 选择其中一种即可
# 在线安装或更新docker
source <(curl -sL https://docker-install.netlify.app/install.sh)
# 调用官方脚本安装(get.docker.com)
source <(curl -sL https://docker-install.netlify.app/install.sh) -s
# 离线安装/更新docker
#docker.bash需要和install.sh在同一目录内
#docker-20.10.19.tgz下载: https://download.docker.com/linux/static/stable/
./install.sh -f /root/docker-20.10.19.tgz
#启动
systemctl start docker
#查看版本号
docker version
设置仓库地址,选择其中一个就行
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum-config-manager --add-repo=http://mirrors.tencent.com/docker-ce/linux/centos/docker-ce.repo
可以添加docker组,并将非root账户加入到该组中。
groupadd docker
usermod -aG docker $USER
官网下载:https://www.docker.com/products/docker-desktop/
Windows 10 版本 2004 的内部版本 19041 或更高版本中才提供 WSL 2
安装完成后,在cmd命令下输入
# 输入命令查询版本信息
docker version
#
Client:
Cloud integration: v1.0.29
Version: 20.10.21
API version: 1.41
#.......
Server: Docker Desktop 4.15.0 (93002)
Engine:
Version: 20.10.21
#.......
docker默认镜像和数据保存路径为,避免C盘空间不足,我们需要修改为其它路径。
# docker-desktop-data
C:\Users\peng\AppData\Local\Docker\wsl\data\ext4.vhdx
# docker-desktop
C:\Users\peng\AppData\Local\Docker\wsl\distro\ext4.vhdx
1、首先我们右键点击右下角鲸鱼图标退出Docker,等待Docker完全退出后
2、使用以下的命令来查询当前docker的状态
wsl -l -v --all
# 显示如下内容
NAME STATE VERSION
* docker-desktop Stopped 2
docker-desktop-data Stopped 2
3、使用以下的命令将上面的两个系统导出来
wsl --export docker-desktop E:\docker\docker-desktop.tar
wsl --export docker-desktop-data E:\docker\docker-desktop-data.tar
4、上面导出完成后,就需要注销掉之前的,使用以下的命令注销
wsl --unregister docker-desktop
wsl --unregister docker-desktop-data
5、重新创建WSL系统
wsl --import docker-desktop E:\docker\distro\ E:\docker\docker-desktop.tar --version 2
wsl --import docker-desktop-data E:\docker\data\ E:\docker\docker-desktop-data.tar --version 2
6、重新启动 Docker Desktop 完成。
# 搜索存放在 Docker Hub 中的镜像
docker search tomcat
# 列出前5个镜像
docker search --limit 5 tomcat
# 不清楚具体的版本号,可以去docker hub中查询https://hub.docker.com/
docker pull imageName:tag
# 会从Docker Hub中的java仓库下载最新版本的Java镜像
docker pull java
#从指定的 Docker Registry 中下载标签为 8 的 Java 镜像
docker pull daocloud.io/library/java:8u40-b09
# 表示列出本地所有镜像
docker images
# 表示列出本地所有镜像+历史映像层
docker images -a
# 表示列出本地镜像I
docker images -q
# 删除指定镜像
docker rmi 镜像名或者镜像ID
# 强制删除镜像(如果某个镜像被容器使用则只能强制删除)
docker rmi -f imageID
# 删除多个镜像
docker rmi -f ubuntu:15.10 ubuntu:16.10
# 删除全部镜像
docker rmi -f `docker images -qa`
#将正在运行的docker容器打包成image镜像
docker commit centos2 centos-vim:8
# -o 参数后面跟要把镜像保存的文件路径和名称
docker save -o centos8.tar centos:8
# -i 参数后面跟要加载的文件路径和名称
docker load -i centos8.tar
# 启动交互式容器
$ docker run -it ubuntu:20.04 /bin/bash
# 启动后台运行容器
$ docker run -d 镜像名 /bin/bash
# 指定容器名
$ docker run -it --name="容器名" -p 91:80 -v /usr/local/myhtml:/usr/local/myhtml nginx /bin/bash
# --name="容器名"
# -d:后台运行容器并返回容器ID
# -i:以交互模式运行容器,通常与-t同时使用
# -t:为容器重新分配一个伪输入终端
# -p 宿主机端口:容器端口,主机和容器端口映射
# -v 宿主机目录:容器目录,目录映射,selinux会禁掉权限,需要添加参数--privileged=true
# 停止容器
$ docker stop 容器名或容器ID
#强制停止
$ docker kill 784fd3b294d7
# 启动容器已停止的容器
$ docker start 容器名或容器ID
# 重启容器
$ docker restart 容器名或容器ID
# 删除已停止的容器
docker rm 容器名或容器ID
# 对于正在运行的窗口需要加-f强制删除,强制删除所有容器
docker rm -f $(docker ps -a -q)
docker ps # 表示列出当前正在运行的容器
docker ps -a # 表示列出当前所有正在运行的容器+历史上运行过的容器
docker ps -l # 表示显示最近创建的容器(显示最近的一个容器)
docker ps -n 5 # 表示显示最近n个创建的容器(显示最近5个创建的容器)
docker ps -q # 表示静默模式,只显示容器编号
# 输入exit退出
$ docker run -it ubuntu:20.04 /bin/bash
$ exit # 交互式下exit退出
$ # 快捷键ctrl+q+p退出
$ docker stop 容器名或容器ID
$ docker kill 784fd3b294d7 #强制停止
# 使用新的终端进入容器,exit退出,不会关闭容器。
$ docker exec -it 容器ID或者容器名 /bin/bash
# 进入容器,exit退出,会关闭容器。
$ docker attach 容器ID或者容器名
# 容器文件拷到主机
$ docker cp 容器ID:容器内路径 目的主机路径
# 主机文件拷到容器
$ docker cp 目的主机路径 容器ID:容器内路径
# 导出容器并保存为tar压缩包
$ docker export 容器ID > xxxx.tar
# 导入容器和创建镜像
$ docker import nginx2.tar nginx
$ docker inspect 容器ID或者容器名
$ docker top 容器ID或者容器名
$ docker logs 容器ID或者容器名
$ docker container port nginx
docker-compose分为插件版本(docker-compose-plugin)和独立版本(docker-compose-plugin)
选择其中一个安装即可
官方安装教程:https://docs.docker.com/compose/install/linux/
# yum安装
yum update
yum install docker-compose-plugin
# 安装完成后查看版本号
docker compose version
官方安装教程:https://docs.docker.com/compose/install/other/
curl -SL https://github.com/docker/compose/releases/download/v2.13.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
命令说明:https://docs.docker.com/compose/reference/
插件版本和独立版本命令调用方式不同
# docker-compose-plugin查看版本号
$ docker compose version
# docker-compose独立版本查看版本号
$ docker-compose version
常用命令
# 查看配置命令
$ docker compose config
# 构建并后台启动
$ docker compose up -d
# 将会停止UP命令启动的容器,并删除容器
$ docker compose down
#重新启动nginx容器
$ docker compose restart
# 启动已存在的容器命令
$ docker compose start
# 停止正在运行的容器命令
$ docker compose stop
#暂停容器
$ docker compose pause
# 恢复容器
$ docker compose unpause
# 构建镜像
$ docker compose bulid
# 下载镜像
$ docker compose pull
# 删除容器
$ docker compose rm
# 查看运行的镜像
$ docker compose ps
# 查看进程
$ docker compose top
# 查看服务日志输出
$ docker compose logs
Compose模板文件默认路径是当前目录下的docker-compose.yml,可以使用.yml或.yaml作为文件扩展名。 Docker-Compose标准模板文件应该包含version、services、networks 三大部分,最关键的是services和networks两个部分。
image
image是指定服务的镜像名称或镜像ID
services:
web:
image: hello-world
build
利用Dockerfile自动构建镜像,然后使用镜像启动服务容器。
build:
context: ../
dockerfile: path/of/Dockerfile
command
使用command可以覆盖容器启动后默认执行的命令。
command: bundle exec thin -p 3000
container_name
指定自定义容器名称
container_name: app
depends_on
表示服务之间的依赖关系。
version: "3"
services:
web:
build: .
depends_on:
- redis
redis:
image: redis
#docker compose up:按依赖顺序启动服务,redis在web之前启动。
#docker-compose stop:按依赖顺序停止服务,web在redis之前停止。
pid
将PID模式设置为主机PID模式,跟主机系统共享进程命名空间。
pid: "host"
ports
映射端口
ports:
- "8000"
- "49022:22"
- "127.0.0.1:8001:8001"
extra_hosts
添加主机名映射。使用与docker客户端–add-host类似
extra_hosts:
- "somehost:162.242.195.82"
- "otherhost:50.31.209.229"
volumes
目录映射,可以直接使用 [主机:容器]格式,或者使用[主机:容器:ro]格式,后者对于容器来说,数据卷是只读的,可以有效保护宿主机的文件系统。
volumes:
# 只指定一个路径,Docker会自动在创建一个目录。
- /var/lib/mysql
# 主机使用绝对路径和容器目录映射
- /opt/data:/var/lib/mysql
# 以Compose配置文件的目录为中心的相对路径和容器目录映射
- ./cache:/tmp/cache
# 使用用户的相对路径(~/ 表示的目录是 /home/<用户目录>/ 或者 /root/)。
- ~/configs:/etc/configs/:ro
dns
自定义DNS服务器。
dns:8.8.8.8
dns:
- 8.8.8.8
- 9.9.9.9
dns_search
配置DNS搜索域。
dns_search:example.com
dns_search:
- domain1.example.com
- domain2.example.com
entrypoint
设置入口命令
entrypoint: /code/entrypoint.sh
entrypoint: ["php", "-d", "memory_limit=-1", "vendor/bin/phpunit"]
entrypoint: java -jar penngo_test.jar
env_file
从文件添加环境变量
env_file: .env
env_file:
- ./common.env
- ./apps/web.env
- /opt/runtime_opts.env
environment
添加环境变量。
environment:
RACK_ENV: development
SHOW: 'true'
SESSION_SECRET:
environment:
- RACK_ENV=development
- SHOW=true
- SESSION_SECRET
external_links
链接到docker-compose.yml外部的容器
external_links:
- redis_1
- project_db_1:mysql
- project_db_1:postgresql
cap_add
增加指定容器的内核能力(capacity)。
cap_add:
- ALL
cap_drop
去掉指定容器的内核能力(capacity)。
cap_drop:
- NET_ADMIN
cgroup_parent
创建了一个cgroup组名称为cgroups_1:
cgroup_parent: cgroups_1
devices
指定设备映射关系
devices:
- "/dev/ttyUSB1:/dev/ttyUSB0"
expose
暴露端口,但不映射到宿主机,只允许能被连接的服务访问。
expose:
- "3000"
- "8000"
labels
为容器添加Docker元数据(metadata)信息。
labels:
- "com.example.description=Accounting webapp"
- "com.example.department=Finance"
- "com.example.label-with-empty-value"
links
链接到其它服务中的容器
links:
- db
- db:database
- redis
log_driver
指定日志驱动类型。目前支持三种日志驱动类型:
log_driver: "json-file"
log_driver: "syslog"
log_driver: "none"
log_opt
日志驱动的相关参数。
net
设置网络模式。
net: "bridge"
net: "none"
net: "host"
# 查看Docker的磁盘使用情况
docker system df
# 清理磁盘,删除关闭的容器、无用的数据卷和网络
docker system prune -a
# 批量删除
docker image prune # 删除悬空的镜像
docker container prune # 删除无用的容器
docker volume prune # 删除无用的卷
docker network prune # 删除无用的网络
# 手动删除镜像
#1、删除所有悬空镜像,不删除未使用镜像:
docker rmi $(docker images -f “dangling=true” -q)
#2、删除所有未使用镜像和悬空镜像
docker rmi $(docker images -q)
# 手动删除卷
#如果卷占用空间过高,可以清除一些不使用的卷,(-v 详细信息中若显示 LINKS = 0,则是未被调用):
#删除所有未被容器引用的卷:
docker volume rm $(docker volume ls -qf dangling=true)
# 手动删除容器
# 删除所有已退出的容器:
docker rm -v $(docker ps -aq -f status=exited)
# 删除所有状态为dead的容器
docker rm -v $(docker ps -aq -f status=dead)
# 查找系统中的大文件,查找指定目录下所有大于100M的所有文件
find /var/lib/docker/overlay2/ -type f -size +100M -print0 | xargs -0 du -h | sort -nr
# 对标准输入日志大小与数量进行限制
# 新建或修改/etc/docker/daemon.json,添加log-dirver和log-opts参数
vi /etc/docker/daemon.json
{
"log-driver":"json-file",
"log-opts": {"max-size":"3m", "max-file":"1"},
"registry-mirrors":[
"https://hub-mirror.c.163.com",
"https://registry.aliyuncs.com",
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。