×

docker使用教程(精华)

dingpeng dingpeng 发表于2022-11-29 13:03:18 浏览262 评论0

抢沙发发表评论

注:详细命令及用法可访问菜鸟教程-docker命令大全


一、基于linux安装Docker

1、下载关于Docker的依赖环境

#先更新升级软件包sudo apt update或yum update

#centos
yum -y install yum-utils device-mapper-persistent-data lvm2

#ubuntu
sudo apt install apt-transport-https ca-certificates curl software-properties-common

2、设置镜像下载Docker的镜像源

#centos
yum-config-manager --add-repo 
#ubuntu
sudo mkdir -p /etc/apt/keyrings/
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

3、安装Docker

#centos
yum makecache fast
yum -y install docker-ce

#ubuntu
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

4、启动Docker,并设置为开机自动启动,测试

# 启动Docker服务
systemctl start docker
# 设置开机自动启动
systemctl enable docker
# 测试
docker run hello-world

二、Docker启动与停止

1、启动docker

sudo service docker start

2、停止docker

sudo service docker stop

3、重启docker

sudo service docker restart

三、镜像操作

1、查找镜像

docker search 镜像名称

或者到官网https://hub.docker.com/搜索

2、拉取镜像到本地

docker pull 镜像名称
#在hub.docker.com(官方docker镜像仓库)右侧有拉取镜像的地址

3、查看全部本地镜像

docker images

4、删除本地镜像

docker image rm 镜像id
或
docker rmi 镜像id

5、修改镜像名称

docker tag 镜像id 新镜像名称:版本


四、容器操作

1、运行容器

简单操作

docker run 镜像的标识|镜像名称[tag]

常用的参数

docker run -d -p  宿主机端口:容器端口 --name 容器名称 镜像的标识|镜像名称[tag]
# -d: 代表后台运行容器
# -p: 宿主机端口:容器端口: 为了映射当前Linux的端口和容器的端口
# --name 容器名称: 指定容器的名称

2、查看正在运行的容器

docker ps [OPTIONS]

# OPTIONS说明:
# -a: 代表查看全部的容器,包括没有运行
# -q: 只查看容器的标识
# -f: 根据条件过滤显示的内容
# --format: 指定返回值的模板文件
# -l: 显示最近创建的容器
# -n: 列出最近创建的n个容器
# --no-trunc: 不截断输出
# -s: 显示总的文件大小

3、容器自启动

创建容器时

docker run -d --restart=always --name 设置容器名 使用的镜像
#(上面命令  --name后面两个参数根据实际情况自行修改)
# Docker 容器的重启策略如下:
 --restart具体参数值详细信息:
       no        // 默认策略,容器退出时不重启容器;
       on-failure    // 在容器非正常退出时(退出状态非0)才重新启动容器;
       on-failure:3    // 在容器非正常退出时重启容器,最多重启3次;
       always      // 无论退出状态是如何,都重启容器;
       unless-stopped  // 在容器退出时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了的容器。

修改已有容器

docker update --restart=always 容器ID(或者容器名)
(容器ID或者容器名根据实际情况修改)

4、查看容器的日志

docker logs -f 容器id
# -f: 可以滚动查看日志的最后几行

5、进入到容器内部

docker exec -it 容器id bash

6、启动容器

docker start 容器id

7、停止容器

# 停止指定的容器
docker stop 容器id
# 停止全部容器
docker stop $(docker ps -qa)

8、删除容器

# 删除指定容器
docker rm 镜像id
# 删除全部容器
docker rm $(docker ps -qa)

8、查看容器运行参数等详细信息

docker inspect 容器名


五、创建容器实操

以flame导航主页为例


1、下载(拉取)flame镜像文件

在https://hub.docker.com搜索框中搜索flame

可以看见右侧有docker pull command拉取镜像的命令,以windows为例,打开cmd输入以上命令即可下载docker镜像

2、配置docker新建容器

然后依旧在控制台输入下列命令,它是组携带了各种参数的命令

docker run -dit -p 301:5005 -v D:\Docker\flame\data:/app/data -e PASSWORD=admin --restart=always --name flame pawelmalak/flame:latest

在上面代码中各部分的意义:

docker run 是指固定创建容器语句

-dit 其中 d是指-d 后台运行容器,并返回容器ID,i是指 以交互模式运行容器,通常与 -t 同时使用,t是指-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用

-p 301:5005 是指容器端口5005映射到301

-v D:\Docker\flame\data:/app/data 是指将容器路径/app/data映射到本机路径D:\Docker\flame\data

-e PASSWORD=admin 是指指定一个参数,具体参数要看镜像的描述

-restart=always 是指容器自动启动,或意外弹出后自动启动

–name flame 是指为容器命名

pawelmalak/flame:latest 镜像名称,docker images可以查看全部

代码运行成功后打开浏览器输入:http://localhost:301,有页面显示则表示安装成功了。


以上是docker的基本使用命令以及实际容器搭建。

————————————————

版权声明:本文为CSDN博主「求关注的加菲猫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:

https://blog.csdn.net/qq_33957967/article/details/124361475


六、docker网络安全管理

docker会直接操作linux的iptables防火墙规则,所以常用的ufw等高层工具无法干预docker的网络。需要直接写入iptables规则

1、查看当前docker-user表规则,-t 和filter可以省略,代表查看filter表;DOCKER-USER为链名;v代表统计规则匹配的数量;--line-numbers表示将规则排序列出来

iptables -t filter -L DOCKER-USER -v --line-numbers

2、禁止某些所有IP访问,其中 -I DOCKER-USER 1表示插入到第一行,-s代表来源,-p tcp 表示匹配tcp协议 --dport 表示端口号。-j DROP表示忽略,表现为无响应;还可以配置accept(接受)、REJECT(拒绝)

iptables -I DOCKER-USER 1 -s 0.0.0.0 -p tcp --dport 6379 -j DROP

3、如果规则配置错了,还可以删除,首先使用第一个命令查看当前链的表规则,并列出序号。使用-D表示删除,1表示第几个规则。

iptables -D DOCKER-USER 1


七、docker私有容器仓库的登录使用

如搭建使用了docker私有仓库,有几个注意事项:

1、如果私有仓库没有https加密,需要在docker配置中添加白名单

#sudo编辑docker的配置文件"/etc/docker/daemon.json",在配置json中添加以下内容,注意json格式,元素之间要逗号间隔:
"insecure-registries" :  ["docker的私有仓库IP:端口"]

2、重启docker

sudo systemctl restart docker

3、登录与登出


#登录仓库
sudo docker login 仓库地址:端口
#登出仓库
sudo docker logout 仓库地址:端口