ubuntu环境下docker的安装与使用
Ubuntu安装docker
1.删除旧版本docker
sudo apt-get remove docker docker-engine docker.io containerd runc
2.安装docker
- 更新apt包索引,输入一下命令:
apt 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 -
- 使用以下指令设置稳定版仓库
sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ $(lsb_release -cs) stable"
- 安装Docker Engine-Community和containerd,输入以下命令
sudo apt-get update
- 安装最新版本的Docker Engine-Community和containerd,输入以下命令
sudo apt-get install docker-ce docker-ce-cli containerd.io
运行Docker服务
- 配置docker服务开机自启
systemctl enable docker
- 启动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镜像操作
- 拉取最新版本的Ubuntu镜像
docker pull ubuntu
docker pull ubuntu:latest
- 查看本地镜像
docker images
- 删除镜像
docker image rm 镜像名或镜像ID
4)镜像打标签
docker tag <镜像ID或名称> <新标签名>
- 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命令的详细解释和实例:
- 基本语法
- docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
在这个语法中,“OPTIONS”包含了一些参数,用于配置和控制容器的各种方面。“IMAGE”是要使用的Docker镜像。“COMMAND”是在容器内执行的
命令,“ARG”是该命令的参数。
- 常用选项:
- -t : 分配一个虚拟终端。
- -i : 保持标准输入常驻。
- -d : 在后台以守护进程模式运行容器。
- --name : 为容器指定一个名称。
- -p : 将主机的端口映射到容器的端口。
- -v : 指定挂载目录。
- ----privileged : 真正让当前用户有了root权限。
- --restart : 设置容器的重启策略,例如--restart always表示容器总是会在退出后自动重启。
- -uroot : 虽然给了root用户身份,但并没有真正的root权限。
- 示例
使用镜像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里设置了。