欢迎来到魔幻小生的博客

Docker基本使用教程

前言

Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。Docker 是一个开源的应用容器引擎,基于Go 语言并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。

Docker安装

1.使用官方安装脚本自动安装

安装命令如下:

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

也可以使用国内 daocloud 一键安装命令:

curl -sSL https://get.daocloud.io/docker | sh

2.手动安装

使用 Docker 仓库进行安装

在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。

设置仓库

安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

使用以下命令来设置稳定的仓库(三选一)。

# 官方源(比较慢)
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 https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

安装 Docker Engine-Community

安装最新版本的 Docker Engine-Community 和 containerd。

sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker        # 启动docker
sudo systemctl status docker       # 查看docker状态
sudo systemctl enable docker       # 设置开机自启动

通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community 。

sudo docker run hello-world

image

卸载 docker

删除安装包:

yum remove docker-ce

删除镜像、容器、配置文件等内容:

rm -rf /var/lib/docker

3.离线安装(无外网环境)

下载地址:https://download.docker.com/linux/static/stable/x86_64/

(例如我下载的是docker-20.10.9.tgz)

tar -zxvf docker-20.10.9.tgz            # 解压产品包
sudo cp docker/* /usr/bin/              # 拷贝到/usr/bin目录
sudo dockerd &                          # 启动Docker守护进程
docker info                             # 验证是否安装成功,若正常打印版本信息则安装成功

将docker注册为系统服务方便后续管理

sudo vi /usr/lib/systemd/system/docker.service                  #配置文件中添加如下内容

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target

启动/停止 docker 服务

systemctl start/stop docker

开机自启/取消开机自启 docker 服务

systemctl enable/disable docker

Docker使用

image

1.镜像使用

DockerHub 是一个由 Docker 公司运行和管理的基于云的存储库。它是一个在线存储库,Docker 镜像可以由其他用户发布和使用。

可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为:https://hub.docker.com/

也可以使用docker search命令来搜索镜像

docker search <image name>

image

通过docker pull命令拉取Docker镜像

docker pull <image name>

image

查看当前系统上所有Docker镜像

docker images

image

各个选项说明:

  • REPOSITORY:表示镜像的仓库源
  • TAG:镜像的标签
  • IMAGE ID:镜像ID
  • CREATED:镜像创建时间
  • SIZE:镜像大小

删除镜像(需先删除该镜像下所有容器)

docker rmi <image name>

image

导出镜像

docker save <image name> > <存储路径>

image

image

导入镜像

将导出的镜像tar包导入到其它Docker服务器上

docker load < <镜像tar包路径>

image

此时可以看到导入的镜像没有仓库名和标签

image

为该镜像添加仓库名和标签

image

2.容器使用

使用镜像创建一个容器,参数为以命令行模式进入该容器

docker run -itd <image name> /bin/bash

参数说明:

  • -i: 交互式操作。
  • -t: 终端。
  • /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
  • -d: 后台运行。

image

要退出终端,直接输入exit

image

查看所有容器

docker ps -a

image

查看已启动的容器

docker ps

image

容器的启动/停止(容器ID可只输入前几位)

docker start <container ID>       # 启动容器
docker stop <container ID>        # 停止容器
docker kill <container ID>        # 停止容器
docker restart <container ID>     # 重启容器

docker stop 关闭容器,会发送停止命令,并允许该容器处理后续的数据,因此该命令运行后至容器关闭需要大概3-5秒的时间,且当再次启动该容器后进程号不变;

docker kill 直接“杀死”容器,该命令会强制容器停止运行,因此该命令执行后Docker容器会被瞬间关闭,再次启动后会生成新的进程,因此进程号发生改变。

进入容器

  • docker attach:退出容器会关闭该容器
  • docker exec:推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。
docker exec -it <container ID> /bin/bash

image

删除容器

docker rm <container ID>

image

3.文件操作

上传文件

docker cp SRC_PATH CONTAINER ID:DEST_PATH

例:

docker cp /root/test.txt ecef8319d2c8:/root/

该命令的意思是将当前操作系统(Linux)家目录(root)下的文件test.txt拷贝到容器id为ecef8319d2c8的家目录(root)文件夹下。如果是win系统的话请替换为win下的合法路径(例如:D:/test.txt)。

下载文件

docker cp CONTAINER:SRC_PATH DEST_PATH

例:

docker cp ecef8319d2c8:/root/test.txt /root/

该命令的意思是将容器id为ecef8319d2c8的家目录(root)文件夹下的文件test.txt拷贝到当前操作系统(Linux)家目录(root)下。如果是win系统的话请替换为win下的合法路径(例如:D:/test.txt)。

Docker的相关使用

Docker搭建DB2数据库

之前的博客已经记录,地址如下:https://www.cnblogs.com/werr370/p/16072984.html

Docker安装CentOS容器并配置静态ip

之前的博客已经记录,地址如下:https://www.cnblogs.com/werr370/p/17353411.html

posted @ 2021-09-08 18:52  魔幻小生  阅读(217)  评论(0编辑  收藏  举报