1.安装

方式一:命令安装

在完成前置条件之后,请按照以下步骤安装Docker:

步骤1:更新软件包

在开始安装Docker之前,使用以下命令更新现有软件包:

sudo apt-get update

sudo apt-get upgrade

步骤2:安装必要的软件包

Docker需要一些必要的软件包才能正常运行,包括apt-transport-https,ca-certificates,curl,software-properties-common。使用以下命令安装这些软件包:

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

步骤3:配置Docker官方GPG密钥

使用以下命令下载并添加Docker官方GPG密钥:

curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

步骤4:配置Docker软件源

使用以下命令添加Docker软件源:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

步骤5:安装Docker

使用以下命令安装Docker:

sudo apt-get update

sudo apt-get install docker-ce

步骤6:启动Docker

使用以下命令启动Docker服务:

sudo systemctl start docker

步骤7:设置Docker自动启动

使用以下命令设置Docker自动启动:

sudo systemctl enable docker

步骤8:验证Docker安装是否成功

使用以下命令检查Docker版本:

sudo docker version

方式二:下载离线安装包并安装

下载安装docker-ce

该网站下载docker离线安装包到服务器(通常选x86_64):

https://download.docker.com/linux/static/stable/

下载后上传到服务器

解压

tar -zxvf docker-27.4.0.tgz

移动解压出来的二进制文件到 /usr/bin 目录中

sudo mv docker/* /usr/bin/

配置添加 systemd 二选一

编辑docker的系统服务文件

sudo vim /etc/systemd/system/docker.service

或者(以下为系统路径)

sudo vim /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 --selinux-enabled=false --insecure-registry=127.0.0.1
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target

重新加载和重启docker

sudo systemctl daemon-reload

sudo systemctl enable docker

sudo systemctl restart docker

查看docker详细信息

sudo docker version

docker去掉sudo权限方法

sudo cat /etc/group | grep docker

sudo groupadd docker

sudo gpasswd -a ${USER} docker

newgrp docker

sudo chmod a+rw /var/run/docker.sock

sudo systemctl restart docker

验证命令

docker version

2.docker容器使用 

开机启动docker服务

systemctl enable docker

--此外还有 disable / start / stop / restart / status 命令等

宿主机127.0.0.1 -> docker容器访问宿主机的127.0.0.1 ip地址时使用 172.17.0.1

获取官方镜像

docker pull xxx

docker search mysql         //查看镜像那些版本

docker pull ubuntu            //获取ubuntu镜像

docker images                  //查看已有镜像

docker ps -a                     //查看已 有/配置 容器

启动容器

-i => 交互式操作 -t => 终端

-it 非后台运行 -id 后台运行,注:镜像run之后才成为容器

docker run -it 镜像名 /bin/bash

启动容器时指定别名,指定版本,:latest版本可不填

注:加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec,做不一条指令让容器后台进行并进入,需要先run -itd,在exec进入

docker run -id --name=容器别名 镜像名:版本 /bin/bash

进入容器

docker exec -it 容器ID /bin/bash

设置容器自动重启

创建容器时设置 $  docker run -d --restart=always --name=xxx 设置容器名 使用的镜像

修改已有容器 $ docker update --restart=always 容器ID(或者容器名)

取消自动重启 $ docker update --restart=no 容器ID(或者容器名)

容器详细信息:docker inspect 容器名orid

退出容器:exit

容器停止/启动

docker stop(start) 容器ID

导出容器,快照到本地文件:

docker export 容器ID > 压缩包名.tar

导入容器快照(./为当前终端打开路径下)

cat ./压缩包名.tar | docker import - 想命名的镜像名:版本 如:

cat ./ubuntu.tar | docker import - myubuntu:v1

删除容器:当容器内存在个人文件时加 -f

docker rm -f 容器ID

删除镜像

docker rmi 镜像ID #或者docker images rm 镜像ID

查看所有镜像id docker image -q,因此可以使用docker rmi `docker image -q` 删除所有镜像,容器同理`docker ps -aq`

配置数据卷

& docker run ... -v 宿主机目录(文件):容器内目录(文件) 如(创建ubuntu目录下)

docker run -it --name=c_ubuntu -v ~/workspace/ubuntu/data:/root/data ubuntu /bin/bash

挂载多个

docker run -it --name=c1 \

-v ~/workspace/docker/data:1/root/data1 \

-v ~/workspace/docker/data:2/root/data2 \

ubuntu /bin/bash

数据卷容器(数据全部在c3)

docker run -itd --name=c3 -v /shareData ubuntu /bin/bash

docker run -itd --name=c1 --volumes-from c3 ubuntu /bin/bash

docker run -itd --name=c2 --volumes-from c3 ubuntu /bin/bash

1 部署mysql

在宿主机创建mysql用目录用于存储mysql信息

mkdir ~/workspace/docker/mysql

cd ~/workspace/docker/mysql

注:以下-p第一个端口号是宿主机端口第二个是docker容器内mysql端口;

另外$PWD=~/workspace/mysql 不能使用小写pwd

可看~/workspace/mysql/下是否自动生成相关文件,给权限sudo chmod -R 777 ./mysql

配置文件中 docker/mysql/conf/my.cnf (my.cnf需要自己创建,创建后需重启),写入

[mysqld]

character-set-server=utf8

default-time-zone='+08:00'

docker run -id --name=c_mysql --restart=always \

-p 3306:3306 \

-v $PWD/conf:/etc/mysql/conf.d \

-v $PWD/logs:/logs \

-v $PWD/data:/var/lib/mysql \

-e MYSQL_ROOT_PASSWORD=123456 \

mysql:8.0.25

2 部署tomcat

创建tomcat目录用于存储tomcat数据信息

mkdir ~/workspace/docker/tomcat

cd ~/workspace/docker/tomcat

docker run -id --name=c_tomcat \

-p 8080:8080 \

-v $PWD:/usr/local/tomcat/webapps \

tomcat:11.0

测试:在主机~/workspace/docker/tomcat目录下

mkdir test cd test touch hello.html

vim hello 写入

<h1>hello tomcat docker<h1>

然后在浏览器中访问http://127.0.0.1:8080/test/hello.html


3 部署nginx

mkdir ~/workspace/docker/nginx

cd ~/workspace/docker/nginx

mkdir config cd config touch nginx.conf 写入nginx基础配置

cd ~/workspace/docker/nginx

docker run -id --name=c_nginx \

-p 80:80 \

-v $PWD/config/nginx.conf:/etc/nginx/nginx.conf \

-v $PWD/logs:/var/log/nginx \

-v $PWD/html:/usr/share/nginx/html \

nginx

同tomcat,在~/workspace/docker/nginx/html目录下创建index.html测试文件,访问http://127.0.0.1/

相关教程:Nginx——ubuntu安装Nginx并配置https => https://www.vvso.cn/xlbk/5877.html

4 部署redis

docker中直接运行redis是没有配置文件的(参数均使用默认配置)

需要提前准备配置文件

mkdir ~/workspace/docker/redis

cd ~/workspace/docker/redis

次路径下创建两个文件夹/conf及/data,在/conf下创建redis.conf文件,写入自定义配置

bind 0.0.0.0

port 6379

appendonly yes

requirepass 111 (可不设密码)

docker run -d --name=c_redis --restart=always \

-p 6379:6379 \

-v $PWD/data:/data \

-v $PWD/conf/redis.conf:/etc/redis/redis.conf \

redis:6.2.7 \

redis-server /etc/redis/redis.conf

最后一句话指的是启动时以该配置文件的配置启动

进入redis容器

docker exec -it c_redis /bin/bash

进入redis命令模式

redis-cli

如果不设置密码则无需以下操作

127.0.0.1:6379> auth 密码

查看配置

127.0.0.1:6379> config get *

5 部署node

mkdir ~/workspace/docker/node

cd ~/workspace/docker/node

docker run -id --name=c_node \

-p 1024:1024 \

-v $PWD:/home/node \

node:20.11.1

6 部署mqtt服务器

docker search mqtt

选择STARS最多的 eclipse-mosquitto         => 1.6.14比较稳定

docker pull eclipse-mosquitto:1.6.14       

mkdir ~/workspace/docker/mosquitto => 进入文件夹下再创建config、data、log三个文件夹

在config路径下创建配置文件mosquitto.conf写入:

persistence true

persistence_location /mosquitto/data

log_dest file /mosquitto/log/mosquitto.log

allow_anonymous false         # 匿名模式,允许为true,不允许则改为false

# 指定密码文件,如果不需要账号密码功能(上句为true)可不添加该语句和文件

password_file /mosquitto/config/pwfile.conf

listener 1883         #mqtt 这个端口是mqtt默认用的,尽量别改

protocol mqtt listener 9001         #websocket 端口根据自己需要修改

protocol websockets

#websockets_log_level all

在当前config路径创建pwfile.conf

为目录授权,回到上一层目录

sudo chmod -R 777 ./mosquitto         #日志目录要最大权限

cd ~/workspace/docker/mosquitto

docker run -id --name=c_mqtt --restart=always --privileged \

-p 1883:1883 -p 9001:9001 \

-v $PWD/config/:/mosquitto/config \

-v $PWD/data:/mosquitto/data \

-v $PWD/log:/mosquitto/log \

eclipse-mosquitto:1.6.14

进入容器docker exec -it c_mqtt /bin/sh

如果设置为不可匿名访问,需要设置账号密码进入容器后执行

mosquitto_passwd -b /mosquitto/config/pwfile.conf zhangsan 123

usr为账号pwd为密码,成功后可在 /mosquitto/config/pwfile.conf文件下看到

注:执行访问模式修改或增添用户密码后需要重启容器

docker 容器转镜像

(保存镜像文件系统的历史层,目录挂载在宿主机的文件不会保存)

docker commit 容器ID/容器Name 新镜像名字:版本

将镜像压缩成文件交给别人,以及别人加载

docker save -o xxx.tar 镜像名  将指定镜像导出。

docker load -i xxx.tar  导入镜像到本地镜像库

dockerfile案例:发布springboot项目

定义父镜像:FROM java:8

定义作者信息:MAINTAINER laber

将jar包添加到容器:ADD stpringboot.jar app.jar

定义容器启动执行的命令:CMD java -jar app.jar

将以上文件写入springboot_dockerfile文件中

通过dockerfile构建镜像:docker build -f dockerfile文件路径(名) -t 镜像名称:版本 . 注意末尾加"."

docker build -f ./springboot_dockerfile -t web_java:1.0 .

docker run -id --name=web_java -p 8080:8080 web_java:1.0

访问http://127.0.0.1:8080/project/

 样例:ruoyi项目部署

Dockerfile内容

FROM openjdk:8-jre

WORKDIR /

ENV TZ="Asia/Shanghai"

ADD ruoyi-admin.jar app.jar

EXPOSE 8080

ENTRYPOINT ["java","-jar","app.jar"]

启动运行命令

docker build -f ./Dockerfile -t web_java:v1.11 .

docker run -id --restart=always --name=web_java \

-p 8080:8080 \

web_java:v1.11

docker-compose安装

https://github.com/docker/compose/releases,建议自己下载吧,网上很多 curl 或 wget 的链接其实都是不对的

查看自己的系统和架构

uname -s

Linux

uname -m

x86_64

sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

docker-compose --version

使用docker compose编排nginx+springboot项目

创建docker-compose目录

mkdir ~/workspace/docker/docker-compose

cd ~/workspace/docker/docker-compose

编写 docker-compose.yml 文件

创建./nginx/conf.d目录

mkdir -p ./nginx/conf.d

在./nginx/conf.d目录下 编写nginx.conf文件

在~/workspace/docker/docker-compose 目录下 使用docker-compose 启动容器

docker-compose up -d 加-d表示后台启动,不加则会在终端显示运行内容

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐