服务器搭建记录 · Docker的安装和使用

Docker作用

Docker是一种轻量级的虚拟化技术,同时是一个开源的应用容器运行环境搭建平台,可以让开发者以便捷方式打包应用到一个可移植的容器中,然后安装至任何运行Linux或Windows等系统的服务器上。 相较于传统虚拟机,Docker容器提供轻量化的虚拟化方式、安装便捷、启停速度快。

Docker部署方便,而且移除方便,不用担心影响服务器环境,这就是我选择它的原因。

安装Docker

详细步骤参见Docker官方文档,这里将通过apt安装的方式摘录如下:

(非必须)卸载非官方软件包:

for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

导入GPG密钥:

sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

安装apt存储库:

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

安装最新版本:

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

自此,Docker就已经安装完成。

Docker的使用技巧

Docker常用命令

docker ps -a //查看所有容器(包括已停止容器)
docker exec -it [dockername] bash //进入容器执行命令(输入exit退出,同时不结束容器运行)
docker image list //查看所有镜像
docker rm -f [dockername] //删除容器
docker run -p [外端口]:[内端口] -v [外路径]:[内路径] --name=xx --restart=xx //启动参数

Docker容器的重启策略

  • no 在容器退出时不重启
  • on-failure 在容器非正常退出时重启
  • on-failure:3 在容器非正常退出时重启容器,最多重启3次
  • always 在容器退出时总是重启
  • unless-stopped 在容器退出时总是重启,除了在Docker守护进程启动时就已经停止的容器

Host模式详解

默认Docker容器运行会分配独立的Network Namespace隔离子系统,host模式下,容器和宿主机共用一个Network Namespace,使用宿主机的IP和端口。连接到 host 网络的容器共享 Docker host 的网络栈。可以通过 --network=host 指定使用 host 网络。直接使用 Docker host 的网络最大的好处就是性能,如果容器对网络传输效率有较高要求,则可以选择 host 网络。当然不便之处就是牺牲一些灵活性,比如要考虑端口冲突问题。

Docker修改容器内文件

如果不方便采用映射,只是想临时修改某个文件,可以从容器中拷贝目标文件到本地,修改完成后再拷贝回去:docker cp 容器id/容器名:[目标文件路径] [本地路径]

启动的容器添加目录/端口映射

记录容器ID,并停止需要添加映射目录的容器

docker ps
docker stop container_name

进入容器目录,修改容器配置文件

docker info | grep Root
cd /var/lib/docker/containers/containers_id

修改容器的config.v2.json,在MountPoints下,添加目录映射配置,如下:

"/file": {
            "Source": "/file",
            "Destination": "/file",
            "Driver": "",
            "Name": "",
            "Propagation": "rprivate",
            "RW": true,
            "Relabel": "ro",
            "SkipMountpointCreation": false,
            "Spec": {
                "Source": "/file",
                "Target": "/file",
                "Type": "bind"
            },
            "Type": "bind"
}

修改容器的hostconfig.json,在Binds下,添加目录映射配置,如下:

"Binds": [
        "/file:/file"
]

最后,重启Docker和容器。注意:要重启docker服务,否则修改的配置文件会被还原

systemctl restart docker
docker start containers_id

修改端口同理,修改config.v2.json,在ExposedPorts添加端口;修改hostconfig.json,在PortBindings添加端口。

参考资料:

Docker学习笔记四:Docker给已经启动的容器添加目录映射、端口映射
版权声明:此篇文章《服务器搭建记录 · Docker的安装和使用》作者:湙凇。未经许可严禁转载,转载与引用请首先注明作者(湙凇)、出处(https://blog.yisrime.xyz/02/04/%e6%9c%8d%e5%8a%a1%e5%99%a8%e6%90%ad%e5%bb%ba%e8%ae%b0%e5%bd%95-docker%e7%9a%84%e5%ae%89%e8%a3%85%e5%92%8c%e4%bd%bf%e7%94%a8.html)以及此段内容。
暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇

版权所有 严禁复制