文章目录
一、简介二、ubuntu安装docker1.删除旧版本2.安装方法一3. 安装方法二(推荐使用)4.运行Docker容器5. 配置docker加速器 三、Docker镜像操作1. 拉取镜像2. 查看本地镜像3. 删除镜像4. 镜像打标签5. Dockerfile生成镜像 四、Docker容器操作1. 获取镜像2. 启动容器3. 退出4. 查看所有的容器5. 启动已停止运行的容器6. 停止一个容器7. 重启容器8.进入容器9. 导入导出容器10. 删除容器11. 查看容器端口的映射12. 查看容器的日志13. 一次性删除所有的运行容器14. 查看容器的信息 五、Docker容器测试1.使用中科大镜像加速器2.把 Docker 配置为普通用户访问3.拉取ubuntu18.04镜像4.运行镜像进入容器5. Docker安装常用工具6. 添加用户7. docker 文件的拷贝8. 安装ssh远程连接
一、简介
ubuntu下使用docker为了解决不同厂家的核板需要搭建不通的虚拟机交叉编译环境,使用docker就可以在一个虚拟机中完成多个核板的程序开发本文记录自己的安装过程以及Docker
命令的使用记录二、ubuntu安装docker
1.删除旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
2.安装方法一
使用官方安装脚本安装
curl -fsSL https://test.docker.com -o test-docker.sh sudo sh test-docker.sh
3. 安装方法二(推荐使用)
更新 apt 包索引,输入以下命令:sudo apt-get update
安装 apt 依赖包,用于通过 HTTPS 来获取仓库,输入以下命令sudo apt-get install \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-Communitysudo apt-get update
安装最新版本的 Docker Engine-Community 和 containerd,输入以下命令sudo apt-get install docker-ce docker-ce-cli containerd.io
4.运行Docker容器
启动docker服务service docker start
列出docker现有镜像docker images
配置docker服务开机自启systemctl enable docker
5. 配置docker加速器
中科大镜像加速器
https://docker.mirrors.ustc.edu.cn
执行下面命令
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]}EOF
sudo systemctl daemon-reloadsudo systemctl restart docker
三、Docker镜像操作
1. 拉取镜像
docker image pull 镜像名称
拉取最新版的 Ubuntu 镜像
docker pull ubuntudocker 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/ShanghaiENV 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 -y install iputils-ping \ && apt-get -y install wget \ && apt-get -y install net-tools \ && apt-get -y install vim \ && apt-get -y install 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_configRUN 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 容器内部是80docker run -itd --name ubuntu01 -v /root/test:/root -p 8088:80 ubuntudocker run -itd --name ubuntu01 -v /root/test:/root -p 127.0.0.1:8088:80 ubuntu//-v 共享目录 将当前目录挂载到容器的/data//-p 端口docker run -v $(pwd):/data -p 1022:22 --hostname ubuntu01 --privileged -it --rm ubuntu:18.04 /bin/bash
3. 退出
exit
4. 查看所有的容器
docker ps -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 的原因
docker exec -it 243c32535da7 /bin/bash
如果从这个容器退出,会导致容器的停止
docker attach 1e560fca3906
9. 导入导出容器
这种方式主要用于分享或迁移整个镜像,包括所有版本、标签和历史
导出:docker save -o <保存路径>/myimage.tar myimage:latest导入:docker load -i <路径>/myimage.tar
这种方式主要用于分享或迁移容器的当前状态。这不包括容器的历史或元数据,如环境变量,所以它常常用于对容器进行快照
导出:docker export <容器ID> > mycontainer.tar导入:docker import mycontainer.tar
10. 删除容器
删除容器使用 docker rm 命令:
docker rm -f 1e560fca3906
下面的命令可以清理掉所有处于终止状态的容器
docker container prune
11. 查看容器端口的映射
//bf08b7f2cd89 为容器的iddocker port bf08b7f2cd89
12. 查看容器的日志
docker logs -f bf08b7f2cd89
13. 一次性删除所有的运行容器
docker rm -f `docker ps -a -q`
14. 查看容器的信息
docker inspect 730fde4da6ac//过滤只查询ip信息docker inspect --format='{{.NetworkSettings.IPAddress}}' 730fde4da6ac
五、Docker容器测试
1.使用中科大镜像加速器
上面设置了,可以直接跳过
sudo vim /etc/docker/daemon.json
{ "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]}
重启 docker 服务
sudo systemctl restart docker
2.把 Docker 配置为普通用户访问
//添加 docker 用户组,输入以下命令sudo groupadd docker//将登陆用户加入到 docker 用户组中sudo usermod -aG docker $USER//更新用户组(这一步非常重要)newgrp docker//重启 docker 服务sudo systemctl enable dockersudo systemctl restart docker
3.拉取ubuntu18.04镜像
sudo apt updatedocker pull ubuntu:18.04
4.运行镜像进入容器
docker container run -p 8000:3000 -it ubuntu:18.04 /bin/bash
-p 参数:容器的 3000 端口映射到本机的 8000 端口。
-it 参数:容器的 Shell 映射到当前的 Shell,然后你在本机窗口输入的命令,就会传
入容器。
ubuntu:18.04:image 文件的名字
/bin/bash:容器启动以后,内部第一个执行的命令。这里是启动 Bash,保证用户可以使
用 Shell。
5. Docker安装常用工具
apt updateapt install byobu vim-gtk inetutils-ping net-tools wget cpio unzip rsync xz-utils bc time
过程中需要配置地区,选择亚洲上海:
6. 添加用户
设置超级用户
apt install sudo
添加普通用户
visudo
添加自己的用户名,保存并退出
oldzhai ALL=(ALL:ALL) ALL
adduser oldzhai
切换到普通用户
su oldzhai
7. docker 文件的拷贝
//docker cp 主机的目录文件 容器运行id:容器路径docker cp /home/topeet/topeet-qt5.14.2/ bc1d9b59bc0b:/home/topeet/project///容器文件 拷贝到虚拟机docker cp bc1d9b59bc0b:/home/topeet/project/ /home/topeet/topeet-qt5.14.2/
8. 安装ssh远程连接
行容器指定端口
-p 参数:容器的 22 端口映射到本机的 10022 端口docker run -v $(pwd):/data -p 1022:22 --hostname ubuntu01 --privileged -it --rm ubuntu:18.04 /bin/bash
安装ssh
apt updateapt-get install ssh