安装
Ubuntu安装
1 | # 下载并执行Docker官方安装脚本 |
更换镜像源
输入以下命令测试下
1 | sudo docker run ubuntu:15.10 /bin/echo "Hello world" |
它会以ubuntu15.10 镜像创建一个新容器(或者说镜像实例),然后在容器里执行 bin/echo “Hello world”,然后输出结果。
这里由于我们新安装Docker,还没有ubuntu15.10 镜像,这个命令会去镜像仓库 Docker Hub 下载公共镜像。这时一般会出现
1 | > dock: error response from daemon ... |

出现这种情况需要更换Docker镜像源
修改或者新增/etc/docker/daemon.json
1 | sudo vim /etc/docker/daemon.json |
写入
1 | { |
重启 Docker 服务,使配置生效
1 | sudo systemctl daemon-reload |
输入以下命令
1 | sudo docker run ubuntu:15.10 /bin/echo "Hello world" |
表示成功了
执行以下命令可以看到ubuntu的镜像
1 | sudo docker images |
使用
我们dotnet new一个控制台应用发布
1 | dotnet new console -o App -n DotNet.Docker |
部署到Docker
在项目根目录创建Dockerfile
1 | # 用 .NET SDK 编译项目 |
构建镜像
1 | sudo docker build -t dotnet-image -f Dockerfile . |
sudo docker images可查看已安装的镜像列表
1 | REPOSITORY TAG IMAGE ID CREATED SIZE |
创建容器(镜像实例)
1 | sudo docker create --name core-dotnet dotnet-image |
sudo docker ps -a可查看所有容器的列表
1 | sudo docker ps -a |
管理容器
使用 sudo docker start 命令启动容器。
使用 sudo docker ps 命令可以显示正在运行的容器
1 | sudo docker start core-dotnet |
连接到容器
使用 sudo docker start 和 sudo docker attach 命令启动容器并查看输出流
1 | sudo docker start core-dotnet |
删除容器
1 | # 停止容器 |
每次docker命令加sudo太麻烦可以执行下面命令
1 | # 将当前用户加入 docker 组 |
离线安装使用
离线安装Docker
下载 Docker 离线安装包 => 拷贝到离线设备 => 解压
确认Ubuntu版本
1
2
3
4# 查看版本,如Release:22.04
lsb_release -a
# 查看架构,如x86_64
uname -m访问Docker仓库 https://download.docker.com/linux/ubuntu/dists/ 下载三个核心包
这里选择版本号,我这里是22.04也就是jammy,上面查看版本时会输出一个Codename。
再进入/pool/stable/,选择架构,我这里是x86_64选amd64

下载三个核心包
containerd.io、docker-ce-cli、docker-ce。下载时三个核心包时,
docker-ce-cli和docker-ce版本号需一致,如下面组合:- containerd.io_1.7.21-1_amd64.deb
- docker-ce-cli_28.0.4-1
ubuntu.22.04jammy_amd64.deb - docker-ce_28.0.4-1
ubuntu.22.04jammy_amd64.deb
三个核心包作用,
containerd.io是Docker底层容器运行时、docker-ce-cli是Docker命令行工具、docker-ce是Docker的核心服务端程序安装
把下载好的包拷贝到离线设备(如 /tmp/docker 目录)
按顺序安装
1
2
3
4cd /tmp/docker
sudo dpkg -i containerd.io_*.deb
sudo dpkg -i docker-ce-cli_*.deb
sudo dpkg -i docker-ce_*.deb启动,验证
1
2
3
4
5
6# 启动Docker服务
sudo systemctl start docker
# 设置开机自启
sudo systemctl enable docker
# 验证版本号
sudo docker --version
离线导入 Docker 镜像
下载 Docker 镜像 => 加载离线镜像
联网设备拉取需要的镜像
1
2
3
4
5# 拉取.NET Runtime8.0 镜像
docker pull mcr.microsoft.com/dotnet/runtime:8.0
# 若需要SDK
docker pull mcr.microsoft.com/dotnet/sdk:8.0导出镜像为tar包
1
2
3
4
5# 查看已下载的镜像
docker images
# 导出镜像,这里runtime和SDK合并一个包
docker save -o dotnet-bundle-8.0.tar mcr.microsoft.com/dotnet/runtime:8.0 mcr.microsoft.com/dotnet/sdk:8.0导入到离线设备
1
docker load -i /tmp/dotnet-images/dotnet-bundle-8.0.tar
运行.NET程序
把发布文件拷贝到离线设备
发布文件目录里面创建Dockfile
1
2
3
4
5
6
7
8# 基于导入的.NET镜像
FROM mcr.microsoft.com/dotnet/runtime:8.0
# 复制程序文件到容器
COPY ./publish /app
# 工作目录
WORKDIR /app
# 启动命令
CMD ["dotnet", "app.dll"]构建自定义镜像
1
sudo docker build -t myappimage .
运行
1
sudo docker run --name myapp-container myapp