ubuntu下docker的安装与使用
创始人
2025-05-29 07:01:54

添加apt的存储库

sudo apt-get updatesudo apt-get install \ca-certificates \curl \gnupg \lsb-releasesudo mkdir -m 0755 -p /etc/apt/keyrings
# 下载证书
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg# 使用 echo 命令输出一个包含 Docker APT 源信息的字符串。
# 使用 dpkg 命令获取当前系统的架构信息,并将其插入到源信息字符串中。
# 使用 lsb_release 命令获取当前系统的发行版代号,并将其插入到源信息字符串中。
# 使用 tee 命令将源信息字符串写入到 /etc/apt/sources.list.d/docker.list 文件中,该文件将被 apt-get 命令用于更新 Docker 软件包。
# 使用重定向符号 > 将 tee 命令的输出重定向到 /dev/null,以便禁止在控制台上显示源信息字符串。
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

安装docker engine

sudo apt-get updatesudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

文件目录

在ubuntu下docker的文件目录通常是/var/lib/docker
但是这个目录只有root才能进去,需要转换成root权限

sudo su -
cd /var/lib/docker

/var 是 Linux 系统中的一个目录,用于存储在系统运行过程中经常变化的文件。其中包括:

  • 日志文件:例如 /var/log 目录下保存了系统和应用程序的日志文件。

  • 缓存文件:例如 /var/cache 目录下保存了安装软件时下载的缓存文件。

  • 运行时数据:例如 /var/run 目录下保存了一些系统服务和进程运行时的状态信息。

  • 邮件:例如 /var/mail 目录下保存了本地用户的邮件。

  • 打印任务:例如 /var/spool 目录下保存了打印任务。

总之,/var 目录用于存储那些需要动态修改、增长或删除的数据。与之相对,/etc 目录则用于存储静态配置文件,/usr 目录则用于存储只读数据和应用程序。

其中/var/lib/docker/container文件夹用来存放container,Docker

启动关闭

以mysql为例子

docker run -itd --name -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123123 mysql
# 启动一个mysql
# -p 3306:3306 使主机的3306映射到容器的3306 可以通过主机上的Mysql访问Mysql
# 每次docker run之后会生成一个容器,并且保存所有设定参数,这些参数很难修改,第二次直接start即可

关闭

docket stop mysql

启动

docker start mysql

开机启动

可以将docker container制作成服务,让他随系统启动而启动

sudo su -
cd /etc/systemed/system
touch docker-container.service
vim docker-container.service

添加如下

[Unit]
Description=Docker Container
Requires=docker.service
After=docker.service[Service]
Restart=always
ExecStart=/bin/bash -c "/usr/bin/docker start mysql1 && /usr/bin/docker start -a mysql2"
ExecStop=/bin/bash -c "/usr/bin/docker start -t 2 mysql1 && /usr/bin/docker start -t 2 mysql2"[Install]
WantedBy=multi-user.target
# 这里启动的是两个容器/多个容器如果是一个可以改为
###########################################
# ExecStart=/usr/bin/docker start -a mysql
# ExecStop=/usr/bin/docker stop -t 2 mysql

容器内部设置

如果容器是一个ubuntu系统

可以通过docker exec -it image_name bash的方式进入容器进行一些操作

如果有需要在容器启动的时候一起启动的程序,可以在容器内部配置

vim /root/.bashrc

在其中加入

# startup run
if [ -f /root/startup_run.sh ]; then./root/startup_run.sh
fi
touch /root/startup_run.sh
vim /root/startup_run.sh

可以在这个文件里面添加需要执行的命令

# 比如我的容器里有一个jupyter notebook
#可以使用
nohup jupyter notebook --allow-root >> /root/jupyter.log 2>&1 &

这样设置完后,每次启动容器,都会启动一个jupyter notebook

容器的物理位置

docker run之后会生成一个容器,位于/var/lib/docker/containers文件夹中,但是这里面的文件夹名称很奇怪
在这里插入图片描述
都是这种,这其实是一个容器的Id

需要使用docker inspect查看容器id

docker inspect container_name | grep 'Id'
# 在这里 grep是一个命令行搜索程序,可以搜索后边的参数,
# | 字符称为管道符号,它用于将一个命令的输出重定向到另一个命令作为输入,是一种最基础的管道

在这里插入图片描述
这样我们就可以通过`Id进入到容器目录,

容器修改

目录下的文件夹是这样的,可以对这些文件进性一些需要的修改,可以达到修改容器的效果
在这里插入图片描述

也可以使用

docker container update 

来做一些修改,但限制很多

还有一种比较不容易出问题的方法,就是将容器封装回镜像,然后重新docker run的时候添加参数

docker stop container_name
docker commit container_name new_name
docker run ......
# 在这里配置具体参数
# 比如端口 名称等

相关内容

热门资讯

便利跨境往来 助力人文交流——...   2026年4月13日,中老铁路国际旅客列车迎来开通运营三周年。该趟列车使中国昆明与老挝万象之间实...
高市再提修宪 引发日本民众广泛...   日本执政党自由民主党12日在东京召开党大会。日本首相兼自民党总裁高市早苗再次表示将推进修宪,相关...
国际能源署:已准备好再次释放战...   △国际能源署署长法提赫·比罗尔(资料图)  国际能源署署长法提赫·比罗尔13日说,希望无需再次动...
乌拉圭驻华大使:期待推进乌中务...   新华社海口4月14日电(记者李欣)乌拉圭驻华大使阿尼瓦尔·卡夫拉尔13日在海南海口举行的第六届中...
视频 | 芬兰总统:美以“选择...   当地时间4月13日,正在美国访问的芬兰总统斯图布在一场智库活动上表示,在美以伊军事冲突中,伊朗目...