ubuntu环境下docker的安装与使用

Ubuntu安装docker

1.删除旧版本docker

sudo apt-get remove docker docker-engine docker.io containerd runc

2.安装docker

  1. 更新apt包索引,输入一下命令:
apt update
  1. 安装apt依赖包,用于通过HTTPS来获取仓库,输入以下命令
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
  1. 添加Docker的官方GPG密钥。
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
  1. 使用以下指令设置稳定版仓库
sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ $(lsb_release -cs) stable"
  1. 安装Docker Engine-Community和containerd,输入以下命令
sudo apt-get update
  1. 安装最新版本的Docker Engine-Community和containerd,输入以下命令
sudo apt-get install docker-ce docker-ce-cli containerd.io

运行Docker服务

  1. 配置docker服务开机自启
systemctl enable docker
  1. 启动docker服务
systemctl start docker

3.停止docker服务

systemctl stop docker

4. 配置docker加速器

中科大镜像加速器

https://docker.mirrors.ustc.edu.cn

执行一下步骤

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors":[
           "https://ox288s4f.mirror.aliyuncs.com",
           "https://registry.docker-cn.com",
           "http://hub-mirror.c.163.com",
           "https://mirror.ccs.tencentyun.com"
  ],
  "log-driver": "json-file",
  "log-opts": {"max-size":"100m", "max-file":"3"},
  "data-root":"/data/docker"
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker

5. Docker镜像操作

  1. 拉取最新版本的Ubuntu镜像
docker pull ubuntu
docker pull ubuntu:latest
  1. 查看本地镜像
docker images
  1. 删除镜像
docker image rm 镜像名或镜像ID

4)镜像打标签

docker tag <镜像ID或名称> <新标签名>
  1. Dockefile生成镜像
    生成一个dockerfile文件
vim dockerfile
################################################
#
#生成SSH服务的ubuntu镜像
#
################################################

#基于哪个镜像生成新的镜像
FROM ubuntu:latest

#作者名
MAINTAINER xxx

#设置环境变量
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"]

使用docker build命令创建新镜像,命名为ubuntu_ssh。

docker build -t ubuntu_ssh .
[+] Building 219.2s (11/11) FINISHED
 => [internal] load build definition from dockerfile
 => => transferring dockerfile: 1.21kB
 => [internal] load metadata for docker.io/library/ubuntu:latest
 => [internal] load .dockerignore
 => => transferring context: 2B
 => [1/7] FROM docker.io/library/ubuntu:latest
 => [2/7] RUN sed -i 's#http://archive.ubuntu.com/#http://mirrors.aliyun.com/#' /etc/apt/sources.lis
 => [3/7] RUN apt-get update -y     && apt-get -y install iputils-ping     && apt-get -y install wge
 => [4/7] RUN echo 'root:root' |chpasswd
 => [5/7] RUN sed -ri 's/^#PermitRootLogin\s+.*/PermitRootLogin yes/' /etc/ssh/sshd_config
 => [6/7] RUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config
 => [7/7] RUN mkdir /var/run/sshd
 => exporting to image
 => => exporting layers
 => => writing image sha256:16d60251bc6ccb381a8958cf2c212226042784890c32a491a162466984e9c06f
 => => naming to docker.io/library/ubuntu_ssh

使用docker images查看新创建的镜像

root@ydqhost:/home/ydqun/workspace/study/docker# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
ubuntu_ssh   latest    16d60251bc6c   32 minutes ago   241MB
ubuntu       latest    ba6acccedd29   2 years ago      72.8MB

6. Docker容器操作

1. 启动容器

docker run命令是docker CLI中的基一个基本命令,用于启动容器,一下是docker run命令的详细解释和实例:

  1. 基本语法
  • docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    在这个语法中,“OPTIONS”包含了一些参数,用于配置和控制容器的各种方面。“IMAGE”是要使用的Docker镜像。“COMMAND”是在容器内执行的
    命令,“ARG”是该命令的参数。
  1. 常用选项:
  • -t : 分配一个虚拟终端。
  • -i : 保持标准输入常驻。
  • -d : 在后台以守护进程模式运行容器。
  • --name : 为容器指定一个名称。
  • -p : 将主机的端口映射到容器的端口。
  • -v : 指定挂载目录。
  • ----privileged : 真正让当前用户有了root权限。
  • --restart : 设置容器的重启策略,例如--restart always表示容器总是会在退出后自动重启。
  • -uroot : 虽然给了root用户身份,但并没有真正的root权限。
  1. 示例
    使用镜像ubunut_ssh启动一个名为ubuntu_test的容器,其中映射宿主主机48822端口号到容器的22端口号,同时把容器ubuntu_ssh的/mnt目录挂载宿主目录/home/ydqun/workspace/study/docker/mnt下,并且给容器提权到root权限。
docker run -itd -p 48822:22 --name ubuntu_test -v /home/ydqun/workspace/study/docker/mnt:/mnt --privileged ubuntu_ssh:latest

2. 查看所有容器

docker ps -a 

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

docker start [container_id]

4. 停止运行的容器

docker stop [container_id]

5. 重启容器

docker restart [container_id]

6. 删除已停止的容器

docker rm [container_id]

7. 查看容器端口映射

docker port [container_id]

8. 查看容器的日志

docker logs -f [container_id]

7. 测试docker容器

由于我们启动的docker容器映射22端口到宿主主机的48822端口,并且已经启动了ssh服务,我们可以在宿主主机通过ssh登录到docker容器中去。

root@ydqhost:/home/ydqun/workspace/study/docker# ssh -p 48822 root@0.0.0.0
root@0.0.0.0's password:
root@fcc3be977442:~#

密码是root,在dockerfile里设置了。

posted @ 2024-07-30 17:43  ydqun  阅读(19)  评论(0编辑  收藏  举报