docker安装和常用命令

1、Docker安装

选择其中一种方式安装即可

1.1、官方脚本安装

curl -fsSL https://get.docker.com | sh
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

1.2、yum安装

# yum安装docker,CentOS
yum update
yum install -y yum-utils device-mapper-persistent-data lvm2
# 设置docker源,选择其中一个就行
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
yum install -y -q docker-ce docker-ce-cli containerd.io docker-scan-plugin docker-compose-plugin docker-ce-rootless-extras

# apt-get docker,Ubuntu
# 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# 安装GPG证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新并安装Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce
 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
 
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# apt-cache madison docker-ce
#   docker-ce | 17.03.1~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
#   docker-ce | 17.03.0~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial)
# sudo apt-get -y install docker-ce=[VERSION]
# sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

1.3、非官方脚本安装

rpm离线包下载安装:https://download.docker.com/linux/centos/8/x86_64/stable/Packages/
脚本地址: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

启动docker

#启动
systemctl start docker

#查看版本号
docker version

1.4、非root执行docker命令

可以添加docker组,并将非root账户加入到该组中。

groupadd docker
usermod -aG docker $USER

1.5、Window Docker Desktop安装

官网下载: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 完成。

2、Docker镜像操作

2.1、搜索镜像

# 搜索存放在 Docker Hub 中的镜像
docker search tomcat
# 列出前5个镜像
docker search --limit 5 tomcat

2.2、下载镜像

# 不清楚具体的版本号,可以去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
#指定仓库https://registry.dockermirror.com下载镜像
docker pull ubuntu --registry-mirror=https://registry.dockermirror.com
docker pull registry.dockermirror.com/ubuntu

2.3、列出本地镜像

# 表示列出本地所有镜像
docker images 	 	 
# 表示列出本地所有镜像+历史映像层
docker images -a	 
# 表示列出本地镜像I
docker images -q     

2.4、删除镜像

#  删除指定镜像
docker rmi 镜像名或者镜像ID    
# 强制删除镜像(如果某个镜像被容器使用则只能强制删除)
docker rmi -f imageID   
#  删除多个镜像
docker rmi -f ubuntu:15.10 ubuntu:16.10
# 删除全部镜像
docker rmi -f `docker images -qa`   

2.5、保存镜像

#将正在运行的docker容器打包成image镜像 
docker commit centos2 centos-vim:8

# -o 参数后面跟要把镜像保存的文件路径和名称
docker save -o centos8.tar centos:8

2.6 加载镜像

# -i 参数后面跟要加载的文件路径和名称
docker load -i centos8.tar

3、Docker容器操作

3.1、容器创建、启动、停止、删除

# 启动交互式容器
$ 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)

3.2、查看容器

docker ps		# 表示列出当前正在运行的容器
docker ps -a	# 表示列出当前所有正在运行的容器+历史上运行过的容器
docker ps -l	# 表示显示最近创建的容器(显示最近的一个容器)
docker ps -n 5	# 表示显示最近n个创建的容器(显示最近5个创建的容器)
docker ps -q	# 表示静默模式,只显示容器编号

3.3、退出容器

# 输入exit退出
$ docker run -it ubuntu:20.04 /bin/bash
$ exit # 交互式下exit退出
$      # 快捷键ctrl+q+p退出

3.4、停止容器

$ docker stop 容器名或容器ID
$ docker kill 784fd3b294d7 #强制停止

3.5、进入运行的容器

# 使用新的终端进入容器,exit退出,不会关闭容器。
$ docker exec -it 容器ID或者容器名 /bin/bash
# 进入容器,exit退出,会关闭容器。
$ docker attach 容器ID或者容器名

3.6、容器和主机相互拷贝文件

# 容器文件拷到主机
$ docker cp 容器ID:容器内路径  目的主机路径
# 主机文件拷到容器
$ docker cp 目的主机路径 容器ID:容器内路径

3.7、导出、导入容器

# 导出容器并保存为tar压缩包
$ docker export 容器ID > xxxx.tar
# 导入容器和创建镜像
$ docker import nginx2.tar nginx

3.8、查看容器信息

$ docker inspect 容器ID或者容器名

3.9、查看容器内运行的进程

$ docker top 容器ID或者容器名

3.10、查看容器日志

$ docker logs 容器ID或者容器名

3.11、查看端口映射

$ docker container port nginx

4、docker-compose安装

docker-compose分为插件版本(docker-compose-plugin)和独立版本(docker-compose-plugin)
选择其中一个安装即可

4.1、docker-compose-plugin安装

官方安装教程:https://docs.docker.com/compose/install/linux/

# yum安装
yum update
yum install docker-compose-plugin

# 安装完成后查看版本号
docker compose version

4.2、docker-compose独立安装

官方安装教程: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

4.3、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

4.4、Docker-Compose模板文件

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"

5、清理空间

# 查看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",
	    
	    "https://registry.dockermirror.com",
		"https://5tqw56kt.mirror.aliyuncs.com",
    	"https://docker.hpcloud.cloud",
    	"https://docker.m.daocloud.io",
    	"https://docker.1panel.live",
    	"http://mirrors.ustc.edu.cn",
    	"https://docker.chenby.cn",
    	"https://docker.ckyl.me",
    	"http://mirror.azure.cn",
    	"https://hub.rat.dev"
  	]
}

其它镜像

Linux Docker是一个开源的容器管理平台,它使用户能够在虚拟化环境中运行和部署应用程序。下面是关于Linux Docker安装及基本命令的解释: 1. 安装:在Linux安装Docker需要运行一系列的命令。请访问官方网站(https://www.docker.com/)查找适合您的操作系统的安装程序。安装完成后,您需要配置Docker,将Docker服务启动,并将它与操作系统一起启动。 2. 启动:启动Docker容器可以使用“docker run”命令。这条命令会将您的容器启动,并返回一个容器ID号。如果您想更加详细地了解容器信息,您可以使用“docker ps”命令查询关于Docker容器的信息。 3. 停止:停止运行Docker容器可以使用以下命令: - Docker stop [容器 ID]:停止Docker容器。 - Docker rm [容器 ID]:删除Docker容器。 4. 构建镜像:当您需要一种特定的应用程序时,您可以构建一个Docker映像。这可以通过“docker build”命令来实现,您需要提供一个Dockerfile,它是用于指定映像内容的文件。 5. 导入和导出:您可以将您的Docker容器导入或者导出。此操作可以实现Docker容器的迁移或者备份。命令如下: - 导入:docker import [容器名称][路径或URL]。 - 导出:docker save -o [文件名].tar [容器名称]。 总之,上述是关于Linux Docker安装及基本命令的解释。更多有关Docker的信息,请访问官方文档(https://docs.docker.com/)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

penngo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值