ubuntu下docker安装、使用等
在开始安装Docker之前,使用以下命令更新现有软件包:Docker需要一些必要的软件包才能正常运行,包括apt-transport-https,ca-certificates,curl,software-properties-common。
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表示后台启动,不加则会在终端显示运行内容
更多推荐
所有评论(0)