文章目录
一、简介
- ubuntu下使用docker为了解决不同厂家的核板需要搭建不通的虚拟机交叉编译环境,使用docker就可以在一个虚拟机中完成多个核板的程序开发
- 本文记录自己的安装过程以及
Docker
命令的使用记录
二、ubuntu安装docker
1.删除旧版本
sudoapt-get remove docker docker-engine docker.io containerd runc
2.安装方法一
使用官方安装脚本安装
curl-fsSL https://test.docker.com -o test-docker.sh
sudosh test-docker.sh
3. 安装方法二(推荐使用)
- 更新 apt 包索引,输入以下命令:
sudoapt-get update
- 安装 apt 依赖包,用于通过 HTTPS 来获取仓库,输入以下命令
sudoapt-getinstall\apt-transport-https \ca-certificates \curl\gnupg-agent \software-properties-common
- 添加 Docker 的官方 GPG 密钥,输入以下命令:
curl-fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg |sudo apt-key add -
- 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 通过搜索指纹的后 8 个字符,验证现在是否拥有带有指纹的密钥,输入以下命令:
sudo apt-key fingerprint 0EBFCD88
- 使用以下指令设置稳定版仓库
sudo add-apt-repository \"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \$(lsb_release -cs) \stable"
- 安装 Docker Engine-Community
sudoapt-get update
- 安装最新版本的 Docker Engine-Community 和 containerd,输入以下命令
sudoapt-getinstall docker-ce docker-ce-cli containerd.io
4.运行Docker容器
- 启动docker服务
servicedocker start
- 列出docker现有镜像
docker images
- 配置docker服务开机自启
systemctl enabledocker
5. 配置docker加速器
中科大镜像加速器
https://docker.mirrors.ustc.edu.cn
执行下面命令
sudomkdir-p /etc/docker
sudotee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
三、Docker镜像操作
1. 拉取镜像
docker image pull 镜像名称
拉取最新版的 Ubuntu 镜像
docker pull ubuntu
docker pull ubuntu:latest
2. 查看本地镜像
docker images
3. 删除镜像
docker image rm 镜像名或镜像id
4. 镜像打标签
docker tag <镜像ID或名称><新标签名>
5. Dockerfile生成镜像
生成一个dockerfile文件
vim dockerfile
##################################################生成SSH服务的ubuntu镜像##################################################基于哪个镜像生成新的镜像
FROM ubuntu:20.04
#作者名
MAINTAINER oldzhai
#设置环境变量
ENV TZ Asia/Shanghai
ENV LANG zh_CN.UTF-8
#执行命令#替换为阿里源
RUN sed-i's#http://archive.ubuntu.com/#http://mirrors.aliyun.com/#' /etc/apt/sources.list \&&sed-i's#http://security.ubuntu.com/#http://mirrors.aliyun.com/#' /etc/apt/sources.list
#更新软件源并安装软件#安装ssh服务
RUN apt-get update -y\&&apt-get-yinstall iputils-ping \&&apt-get-yinstallwget\&&apt-get-yinstall net-tools \&&apt-get-yinstallvim\&&apt-get-yinstall openssh-server \&&apt-get clean &&rm-rf /tmp/* /var/lib/apt/lists/* /var/tmp/*
#设置密码
RUN echo'root:root'|chpasswd
#允许root用户登入
RUN sed-ri's/^#PermitRootLogin\s+.*/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed-ri's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config
#创建sshd目录
RUN mkdir /var/run/sshd
# 声明端口
EXPOSE 22#开始ssh服务
CMD ["/usr/sbin/sshd", "-D"]
使用当前目录的 Dockerfile 创建镜像,标签为 ubuntu_ssh:20.04
注:后面的 .表示当前目录
使用docker images命令可以查看当前已有镜像
docker build -t ubuntu_ssh:20.04 .
四、Docker容器操作
1. 获取镜像
如果我们本地没有 ubuntu 镜像,我们可以使用 docker pull 命令来载入 ubuntu 镜像:
docker pull ubuntu
2. 启动容器
docker run -it ubuntu /bin/bash
//-v指定共享目录
docker run -itd--name ubuntu01 -v /root/test:/root ubuntu
//-p指定端口号 宿主机8088 容器内部是80
docker run -itd--name ubuntu01 -v /root/test:/root -p8088:80 ubuntu
docker run -itd--name ubuntu01 -v /root/test:/root -p127.0.0.1:8088:80 ubuntu
//-v 共享目录 将当前目录挂载到容器的/data
//-p 端口
docker run -v$(pwd):/data -p1022:22 --hostname ubuntu01 --privileged-it--rm ubuntu:18.04 /bin/bash
3. 退出
exit
4. 查看所有的容器
dockerps-a
5. 启动已停止运行的容器
//使用 docker start 启动一个已停止的容器
docker start b750bbbcfd88
//后台运行在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式
docker run -itd--name ubuntu-test ubuntu /bin/bash
6. 停止一个容器
docker stop <容器 ID>
7. 重启容器
停止的容器可以通过 docker restart 重启
docker restart <容器 ID>
8.进入容器
如果从这个容器退出,容器不会停止,这就是为什么推荐大家使用 docker exec 的原因
dockerexec-it 243c32535da7 /bin/bash
如果从这个容器退出,会导致容器的停止
docker attach 1e560fca3906
9. 导入导出容器
这种方式主要用于分享或迁移整个镜像,包括所有版本、标签和历史
导出:
docker save -o<保存路径>/myimage.tar myimage:latest
导入:
docker load -i<路径>/myimage.tar
这种方式主要用于分享或迁移容器的当前状态。这不包括容器的历史或元数据,如环境变量,所以它常常用于对容器进行快照
导出:
dockerexport<容器ID>> mycontainer.tar
导入:
dockerimport mycontainer.tar
10. 删除容器
删除容器使用 docker rm 命令:
dockerrm-f 1e560fca3906
下面的命令可以清理掉所有处于终止状态的容器
docker container prune
11. 查看容器端口的映射
//bf08b7f2cd89 为容器的id
docker port bf08b7f2cd89
12. 查看容器的日志
docker logs -f bf08b7f2cd89
13. 一次性删除所有的运行容器
dockerrm-f`dockerps-a-q`
14. 查看容器的信息
docker inspect 730fde4da6ac
//过滤只查询ip信息
docker inspect --format='{{.NetworkSettings.IPAddress}}' 730fde4da6ac
五、Docker容器测试
1.使用中科大镜像加速器
上面设置了,可以直接跳过
sudovim /etc/docker/daemon.json
{"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]}
重启 docker 服务
sudo systemctl restart docker
2.把 Docker 配置为普通用户访问
//添加 docker 用户组,输入以下命令
sudogroupadddocker
//将登陆用户加入到 docker 用户组中
sudousermod-aGdocker$USER
//更新用户组(这一步非常重要)
newgrp docker
//重启 docker 服务
sudo systemctl enabledockersudo systemctl restart docker
3.拉取ubuntu18.04镜像
sudoapt update
docker pull ubuntu:18.04
4.运行镜像进入容器
docker container run -p8000:3000 -it ubuntu:18.04 /bin/bash
-p 参数:容器的 3000 端口映射到本机的 8000 端口。
-it 参数:容器的 Shell 映射到当前的 Shell,然后你在本机窗口输入的命令,就会传
入容器。
ubuntu:18.04:image 文件的名字
/bin/bash:容器启动以后,内部第一个执行的命令。这里是启动 Bash,保证用户可以使
用 Shell。
5. Docker安装常用工具
apt update
aptinstall byobu vim-gtk inetutils-ping net-tools wget cpio unziprsync xz-utils bctime
过程中需要配置地区,选择亚洲上海:
6. 添加用户
设置超级用户
aptinstallsudo
添加普通用户
visudo
添加自己的用户名,保存并退出
oldzhai ALL=(ALL:ALL) ALL
adduser oldzhai
切换到普通用户
su oldzhai
7. docker 文件的拷贝
//docker cp 主机的目录文件 容器运行id:容器路径
dockercp /home/topeet/topeet-qt5.14.2/ bc1d9b59bc0b:/home/topeet/project/
//容器文件 拷贝到虚拟机
dockercp bc1d9b59bc0b:/home/topeet/project/ /home/topeet/topeet-qt5.14.2/
8. 安装ssh远程连接
行容器指定端口
-p 参数:容器的 22 端口映射到本机的 10022 端口
docker run -v$(pwd):/data -p1022:22 --hostname ubuntu01 --privileged-it--rm ubuntu:18.04 /bin/bash
安装ssh
apt update
apt-getinstallssh
版权归原作者 嵌入式翟同学 所有, 如有侵权,请联系我们删除。