ubuntu环境下docker容器详细安装使用

文章目录

    • 一、简介
    • 二、ubuntu安装docker
    • 三、Docker镜像操作
      • [1. 拉取镜像](#1. 拉取镜像)
      • [2. 查看本地镜像](#2. 查看本地镜像)
      • [3. 删除镜像](#3. 删除镜像)
      • [4. 镜像打标签](#4. 镜像打标签)
      • [5. Dockerfile生成镜像](#5. Dockerfile生成镜像)
    • 四、Docker容器操作
      • [1. 获取镜像](#1. 获取镜像)
      • [2. 启动容器](#2. 启动容器)
      • [3. 退出](#3. 退出)
      • [4. 查看所有的容器](#4. 查看所有的容器)
      • [5. 启动已停止运行的容器](#5. 启动已停止运行的容器)
      • [6. 停止一个容器](#6. 停止一个容器)
      • [7. 重启容器](#7. 重启容器)
      • 8.进入容器
      • [9. 导入导出容器](#9. 导入导出容器)
      • [10. 删除容器](#10. 删除容器)
      • [11. 查看容器端口的映射](#11. 查看容器端口的映射)
      • [12. 查看容器的日志](#12. 查看容器的日志)
      • [13. 一次性删除所有的运行容器](#13. 一次性删除所有的运行容器)
      • [14. 查看容器的信息](#14. 查看容器的信息)
    • 五、Docker容器测试

一、简介

  • ubuntu下使用docker为了解决不同厂家的核板需要搭建不通的虚拟机交叉编译环境,使用docker就可以在一个虚拟机中完成多个核板的程序开发
  • 本文记录自己的安装过程以及Docker命令的使用记录

二、ubuntu安装docker

1.删除旧版本

bash 复制代码
sudo apt-get remove docker docker-engine docker.io containerd runc

2.安装方法一

使用官方安装脚本安装

bash 复制代码
 curl -fsSL https://test.docker.com -o test-docker.sh
 sudo sh test-docker.sh

3. 安装方法二(推荐使用)

  1. 更新 apt 包索引,输入以下命令:

    bash 复制代码
    sudo apt-get update
  2. 安装 apt 依赖包,用于通过 HTTPS 来获取仓库,输入以下命令

    bash 复制代码
    sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
  3. 添加 Docker 的官方 GPG 密钥,输入以下命令:

    bash 复制代码
    curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
  4. 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 通过搜索指纹的后 8 个字符,验证现在是否拥有带有指纹的密钥,输入以下命令:

    bash 复制代码
    sudo apt-key fingerprint 0EBFCD88
  5. 使用以下指令设置稳定版仓库

    bash 复制代码
    sudo add-apt-repository \ 
    "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
    $(lsb_release -cs) \
    stable"
  6. 安装 Docker Engine-Community

    bash 复制代码
    sudo apt-get update
  7. 安装最新版本的 Docker Engine-Community 和 containerd,输入以下命令

    bash 复制代码
    sudo apt-get install docker-ce docker-ce-cli containerd.io

4.运行Docker容器

  • 启动docker服务

    bash 复制代码
    service docker start
  • 列出docker现有镜像

    bash 复制代码
    docker images
  • 配置docker服务开机自启

    bash 复制代码
    systemctl enable docker

5. 配置docker加速器

中科大镜像加速器

bash 复制代码
https://docker.mirrors.ustc.edu.cn

执行下面命令

bash 复制代码
sudo mkdir -p /etc/docker
bash 复制代码
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
EOF
bash 复制代码
sudo systemctl daemon-reload
sudo systemctl restart docker

三、Docker镜像操作

1. 拉取镜像

bash 复制代码
docker image pull 镜像名称

拉取最新版的 Ubuntu 镜像

bash 复制代码
docker pull ubuntu
docker pull ubuntu:latest

2. 查看本地镜像

bash 复制代码
docker images

3. 删除镜像

bash 复制代码
docker image rm 镜像名或镜像id

4. 镜像打标签

bash 复制代码
docker tag <镜像ID或名称> <新标签名>

5. Dockerfile生成镜像

生成一个dockerfile文件

bash 复制代码
vim dockerfile
bash 复制代码
################################################
#
#生成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 -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_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命令可以查看当前已有镜像

bash 复制代码
docker build -t ubuntu_ssh:20.04 .


四、Docker容器操作

1. 获取镜像

如果我们本地没有 ubuntu 镜像,我们可以使用 docker pull 命令来载入 ubuntu 镜像:

bash 复制代码
docker pull ubuntu

2. 启动容器

bash 复制代码
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 -p 8088:80 ubuntu
docker 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. 退出

bash 复制代码
exit

4. 查看所有的容器

bash 复制代码
docker ps -a

5. 启动已停止运行的容器

bash 复制代码
//使用 docker start 启动一个已停止的容器
docker start b750bbbcfd88 

//后台运行在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式
docker run -itd --name ubuntu-test ubuntu /bin/bash

6. 停止一个容器

bash 复制代码
docker stop <容器 ID>

7. 重启容器

停止的容器可以通过 docker restart 重启

bash 复制代码
docker restart <容器 ID>

8.进入容器

如果从这个容器退出,容器不会停止,这就是为什么推荐大家使用 docker exec 的原因

bash 复制代码
docker exec -it 243c32535da7 /bin/bash

如果从这个容器退出,会导致容器的停止

bash 复制代码
docker attach 1e560fca3906 

9. 导入导出容器

这种方式主要用于分享或迁移整个镜像,包括所有版本、标签和历史

bash 复制代码
导出:
docker save -o <保存路径>/myimage.tar myimage:latest
导入:
docker load -i <路径>/myimage.tar

这种方式主要用于分享或迁移容器的当前状态。这不包括容器的历史或元数据,如环境变量,所以它常常用于对容器进行快照

bash 复制代码
导出:
docker export <容器ID> > mycontainer.tar
导入:
docker import mycontainer.tar

10. 删除容器

删除容器使用 docker rm 命令:

bash 复制代码
docker rm -f 1e560fca3906

下面的命令可以清理掉所有处于终止状态的容器

bash 复制代码
docker container prune

11. 查看容器端口的映射

bash 复制代码
//bf08b7f2cd89 为容器的id
docker port bf08b7f2cd89

12. 查看容器的日志

bash 复制代码
docker logs -f bf08b7f2cd89

13. 一次性删除所有的运行容器

bash 复制代码
docker rm -f `docker ps -a -q`

14. 查看容器的信息

bash 复制代码
docker inspect 730fde4da6ac
//过滤只查询ip信息
docker inspect --format='{{.NetworkSettings.IPAddress}}' 730fde4da6ac

五、Docker容器测试

1.使用中科大镜像加速器

上面设置了,可以直接跳过

bash 复制代码
sudo vim /etc/docker/daemon.json
bash 复制代码
{
    "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

重启 docker 服务

bash 复制代码
sudo systemctl restart docker

2.把 Docker 配置为普通用户访问

bash 复制代码
//添加 docker 用户组,输入以下命令
sudo groupadd docker

//将登陆用户加入到 docker 用户组中
sudo usermod -aG docker $USER

//更新用户组(这一步非常重要)
newgrp docker

//重启 docker 服务
sudo systemctl enable docker
sudo systemctl restart docker

3.拉取ubuntu18.04镜像

bash 复制代码
sudo apt update
docker pull ubuntu:18.04

4.运行镜像进入容器

bash 复制代码
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安装常用工具

bash 复制代码
apt update
apt install byobu vim-gtk inetutils-ping net-tools wget cpio unzip rsync xz-utils bc time

过程中需要配置地区,选择亚洲上海:

6. 添加用户

设置超级用户

bash 复制代码
apt install sudo

添加普通用户

bash 复制代码
visudo

添加自己的用户名,保存并退出

bash 复制代码
oldzhai ALL=(ALL:ALL) ALL
bash 复制代码
adduser oldzhai

切换到普通用户

bash 复制代码
su oldzhai

7. docker 文件的拷贝

bash 复制代码
//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远程连接

行容器指定端口

bash 复制代码
-p 参数:容器的 22 端口映射到本机的 10022 端口
docker run -v $(pwd):/data -p 1022:22 --hostname ubuntu01 --privileged -it --rm ubuntu:18.04 /bin/bash

安装ssh

bash 复制代码
apt update
apt-get install ssh
相关推荐
南猿北者2 小时前
docker容器
docker·容器
不是笨小孩i2 小时前
开源AI图片处理工具HivisionIDPhotos安装与证件照制作指南
ubuntu
二十雨辰2 小时前
[linux]docker基础
linux·运维·docker
time never ceases2 小时前
使用docker方式进行Oracle数据库的物理迁移(helowin/oracle_11g)
数据库·docker·oracle
饮浊酒3 小时前
Linux操作系统 ------(3.文本编译器Vim)
linux·vim
lihuhelihu3 小时前
第3章 CentOS系统管理
linux·运维·服务器·计算机网络·ubuntu·centos·云计算
矛取矛求3 小时前
Linux系统性能调优技巧
linux
One_Blanks3 小时前
渗透测试-Linux基础(1)
linux·运维·安全
Perishell3 小时前
无人机避障——大疆与Airsim中的角速度信息订阅获取
linux·动态规划·无人机
爱吃喵的鲤鱼3 小时前
linux进程的状态之环境变量
linux·运维·服务器·开发语言·c++