本文最后更新于 4 年前,文中所描述的信息可能已发生改变。
docker实验
一、docker安装
1.准备条件
安装前置支持应用
shell
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release添加docker官方源
shell
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg添加apt源
shell
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null更新源
shell
sudo apt update
2. 安装docker
shell
sudo apt install docker-ce docker-ce-cli containerd.io查看docker版本
shell
sudo docker version
3.补充
允许非Root用户执行docker 命令
添加docker用户组(安装docker后自动安装)
shell
sudo groupadd docker添加用户到组中
shell
sudo usermod -aG docker $USER[!Tip] 用户组改变不会立即生效,应重启使用或者使用命令
shellnewgrp docker
测试
shell
#查看所有容器
docker ps -a二、docker的镜像下载
1.下载jre 1.8镜像文件
运行此命令
shell
docker pull registry.cn-hangzhou.aliyuncs.com/hhit/java8:min
shell
# 查看镜像文件
docker images
2.修改镜像的标记
执行以下命令
shell
docker tag registry.cn-hangzhou.aliyuncs.com/hhit/java8:min
java8:1.0运行结果

三、容器运行
运行容器
shell
docker run -it java8:1.0进入容器查看java版本和网络配置,由于ubuntu24已删除ipconfig,故使用新版的ipaddr

查看当前运行的所有容器
开启第二个终端执行命令
shell
docker ps运行结果

退出当前docker
shell
exit挂载宿主机的⽬录到容器 /home/user --> /host 可以利⽤ host ⽬录共享数据
shell
docker run -it -v /home/user:/host java8:1.0
查看当前所有的docker容器
shell
docker ps -a
docker常用命令
shell
docker start 351d17349b5f #启动一个已停止的容器
docker stop 351d17349b5f #停止容器
docker rm 351d17349b5f #删除容器
四、制作镜像
制作包含TCP服务器端的镜像
编译java文件
shell
javac -source 1.8 -target 1.8 ./Downloads/TCPServer.java创建Dockerfile

运行
shell
docker build -t tcpserver:1.0 .运行结果

四、运行自制镜像
启动tcpserver容器
shell
docker run -it tcpserver:1.0开启docker的端口映射
shell
docker run -it -p 6789:6789 tcpserver:1.0在容器内部查看容器ip地址

在容器内部运⾏TCP服务器端
shell
cd /opt
java TCPserver
打开一个新的终端 在宿主机中运行TCP客户端
运行程序并发送信息

在docker中收到

六、练习
1.制作客户端的镜像
Dockerfile内容如下

建立镜像并查看

运行测试
client启动,由于需要监听6789端口,所以图方便将网络直接共享给client
shell
docker run -it --network host tcpclient:1.0server启动,将内部的6789端口映射到宿主机的6789端口上
shell
docker run -it -p 6789:6789 tcpserver:1.0启动运行部分
client端

server端

2.保存docker镜像
使用save命令保存镜像
shell
docker save -o tcpserver.tar tcpserver:1.0
docker save -o tcpclient.tar tcpclient:1.0
使用rmi删除docker镜像,方便之后导入
shell
docker rmi tcpclient:1.0
docker rmi tcpserver:1.0
使用load导入容器

后续运行同练习1
3.上传至阿里云
创建个人镜像服务

创建成功

在宿主机中登录阿里云
shell
docker login --username=雨梦博雅宋 crpi-agzizsnyuwuno8ds.cn-hangzhou.personal.cr.aliyuncs.com
推送至云端
shell
docker tag f409604e8c80 crpi-agzizsnyuwuno8ds.cn-hangzhou.personal.cr.aliyuncs.com/dreambo_study/docker_dreambo:1.0
docker push crpi-agzizsnyuwuno8ds.cn-hangzhou.personal.cr.aliyuncs.com/dreambo_study/docker_dreambo:1.0
阿里云后台
