首页 > 其他分享 >docker入门

docker入门

时间:2022-11-19 19:22:40浏览次数:69  
标签:容器 入门 centos ce yum 镜像 docker

docker安装卸载

使用 Docker 仓库进行安装

设置仓库

安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2

$ yum install -y yum-utils device-mapper-persistent-data lvm2

使用以下命令来设置稳定的仓库。

使用官方源地址(比较慢)
yum-config-manager --add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
阿里云
yum-config-manager --add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
清华大学源
yum-config-manager --add-repo \
https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

安装 Docker Engine-Community

安装最新版本的 Docker Engine-Community 和 containerd,或者转到下一步安装特定版本:

sudo yum install docker-ce docker-ce-cli containerd.io

安装特定版本

#查看版本,按版本号(从高到低)对结果进行排序
yum list docker-ce --showduplicates | sort -r
#安装特定版本,示例:docker-ce-18.09.1
yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

启动docker

systemctl start docker

通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community

docker run hello-world

卸载 docker

删除安装包:

yum remove docker-ce

删除镜像、容器、配置文件等内容:

rm -rf /var/lib/docker

卸载旧版本

较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。

yum remove docker \
         docker-client \
         docker-client-latest \
         docker-common \
         docker-latest \
         docker-latest-logrotate \
         docker-logrotate \
         docker-engine

docker使用

镜像管理

常用命令

#从dockerhub查找镜像
docker search centos
NAME: 镜像仓库源的名称
DESCRIPTION: 镜像的描述
OFFICIAL: 是否 docker 官方发布
stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
AUTOMATED: 自动构建。
#下载镜像
docker pull centos
#查看本地镜像
docker images
#把镜像做成离线压缩包
docker save -o centos.tar.gz centos
#解压离线镜像包
docker load -i centos.tar.gz
#删除镜像
docker rmi -f centos:latest

通过镜像启动容器

docker run -it centos:latest /bin/bash
- ​	run运行容器
- ​	-it 使用交互模式运行容器并且分配一个伪输入终端
- ​	centos:latest 指定启动的容器的镜像
- ​	/bin/bash 是启动容器后运行的指令

如果提示不是root用户可以使用这条命令进入容器

docker exec -it --user root <container id> /bin/bash

更新镜像并保存

#查看运行中的容器
docker ps -a
#将一个容器转化成镜像保存起来
docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
-各个参数说明:
- ​	-m: 提交的描述信息
- ​	-a: 指定镜像作者
- ​	e218edb10161:容器 ID
- ​	runoob/ubuntu:v2: 指定要创建的目标镜像名

利用Dockerfile创建镜像

Dockerfile是一种配置文件, 可以看作批处理脚本, 但是是以一种配置化的形式进行编写

新建一个Dockerfile文件( 无后缀 ), 写入下面内容

# 选择一个镜像作为基础
FROM centos:latest

# 维护者的信息
MAINTAINER zjeff

# 启动镜像后进行的操作
RUN 	yum update -y
RUN 	yum install -y git
RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd runoob
RUN     /bin/echo 'runoob:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
# 拷贝本地文件到镜像中
COPY ./* /usr/share/gitdir/
# 前面是容器中的路径, 后面是本地路径

使用Dockerfile新建一个镜像

docker build -t runoob/centos:6.7 .
  • -t :指定要创建的目标镜像名、tag
     . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
    

如果你忘了加-y 可能会提示你输入yes 提示会停止构建镜像的过程

还有的时候不能使用-y

如果是安装脚本的场合 比如我们用sh Anaconda3-4.4.0-Linux-x86_64.sh来安装anaconda的时候,”烦人”的anaconda会问四个问题,我的回答顺序分别是Enter,yes,Enter,yes。于是你可以这样写:

RUN sh -c '/bin/echo -e "\nyes\nyes" | sh Anaconda3-4.4.0-Linux-x86_64.sh'

镜像的文件备份和加载

docker save -o centos.tar zjeff/centos:git    
# 保存镜像, -o也可以是--output
docker load -i centos.tar    
# 加载镜像, -i也可以是--input

容器管理

run可以运行一个镜像, 创建一个容器 ,之前已经用过了,现在补充一下后台运行和日志的用法

后台运行容器

docker run -d xxxx

后台启动一个容器后,如果想进入到这个容器,可以使用attach命令:

docker attach container_name/container_id

删除容器

docker rm container_name/container_id

启动, 停止 , 重启容器

docker start|stop|restart container_name/container_id 

使用DockerHub保存你的镜像

  1. 注册一个DockerHub账号 , hub.docker.com/
  2. 登录
docker login

# Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
# Username: zjeff
# Password:
# Login Succeeded
复制代码
  1. 推送

推送的时候, 要把用户名和登录名一致

docker push zjeff/centos:git    # 成功推送
docker push xxx/centos:git    # 失败
# The push refers to a repository [docker.io/xxx/centos]
# unauthorized: authentication required
复制代码
  1. pull 镜像
docker pull zjeff/centos:git

拓展阅读

深入原理面试官:你简历中写用过 Docker,能说说容器和镜像的区别吗? - 知乎 (zhihu.com)

减小你的镜像体积 两个奇技淫巧,将 Docker 镜像体积减小 99% - 知乎 (zhihu.com)

docker 常用命令操作总结 Docker学习笔记:Docker 基础用法和命令帮助 - docker ppt - docker中文社区

标签:容器,入门,centos,ce,yum,镜像,docker
From: https://www.cnblogs.com/ASSNT/p/16906821.html

相关文章

  • [参考]Powershell简单入门
    由于诸多样本都使用Powershell执行无文件攻击,加载本文可能会触发您的杀毒软件报告。本文不下载任何文件,不执行任何文件,请放心加载!!于实战中应用PowershellPowershell是一......
  • Apache CXF使用入门
    想玩玩ApacheCXF框架,以前一直在用xfire,很想知道这个xfire的升级版本怎么样,折腾了一通,在这里记下配置过程。1.下载apachecxf框架    是人都知道去官方网站去下载就......
  • .netcore 3.1 部署至Docker
    1.在工程中添加Dockerfile2.在文件中写入配置信息1FROMmcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim2WORKDIR/app3EXPOSE90904COPY..5ENTRY......
  • 滚动部署docker服务
    #!/bin/bashset-xKL_FILE="/opt/pro_swagger/project/kl-project/kl-project-zhiying/kl-project-zhiying-c-swagger/target/kl-project-zhiying-c-swagger-1.0.0-SNAP......
  • 篇(15)-入门实战-权限管理之用户创建与关联角色(ViewModel再用与模型验证一)
    篇(15)-Asp.NetCore入门实战-权限管理之用户创建与关联角色(ViewModel再用与模型验证一)在上个篇章中,讲了角色和菜单的关系(也就是给角色赋权),本章讲用户和给用户分派角......
  • Chrome 插件开发入门
    热门插件安全类 ​​LastPass:密码管理器​​一款Freemium的跨平台在线密码管理工具。旨在通过将用户的密码集中在云端以解决密码疲劳。LastPass使用Web界面为基础,但还提......
  • LOJ数列分块入门九题(中)
    #6281.数列分块入门5-题目-LibreOJ(loj.ac)区间开方,区间求和题。显然,针对区间维护开方操作很难做到,于是考虑其值的性质,显然,int范围内的值最多开方6次就会变为1,之......
  • 篇(14)-Asp.Net Core入门实战-权限管理之角色编辑和赋权(ViewModel-DTO初探)
    入门实战-权限管理之角色编辑和赋权(ViewModel-DTO初探)前面几章讲了菜单功能的管理之后,我们再创建一个角色管理的功能,创建过程不再详细介绍,只要按照菜单管理功能的步骤进......
  • Docker Host '172.17.0.1' is blocked because of many connection errors; unblock w
    产生的原因是:同一个ip在短时间内产生太多(超过mysql数据库max_connect_errors的最大值)中断的数据库连接而导致的阻塞   解决方法:使用mysqladminflush-hosts命令清......
  • 篇(13)-Asp.Net Core入门实战-将功能代码增加异步功能Async和配置简单防范CSRF攻击
    入门实战-将功能代码增加异步功能Async和配置简单防范CSRF攻击关于Asp.NetCore的新特性Async,异步,还是需要掌握的,这个特性,按微软官方的说法是可以提高你服务器的负荷,可以......