服务器在线 - 服务器软件 - 网站地图 服务器在线,专注于服务器技术!

当前位置:主页 > 云和虚拟化 > Docker > 正文

Docker常用操作命令

时间:2023-02-06    来源:未知    投稿:admin    点击:

centos7 下安装:yum install -y docker

运行 docker:systemctl start docker

开机启动:systemctl enable docker

查看 docker 状态:systemctl status docker

运行镜像:docker run hello-world


 

docker 增

1.从 dockerhub 仓库中获取 docker 的镜像,从 github 获取代码一个道理

docker pull centos #去docker仓库中寻找centos系统镜像
docker pull ubuntu #获取ubuntu镜像

2.获取一个 hello-world 进程
docker pull hello-world

3.获取一个 ubuntu 镜像
docker pull ubuntu

4.搜索相关的镜像
docker search python3

docker 删

1.删除本地镜像文件
docker rmi 镜像id
docker rmi fce #删除镜像id的前3位即可,必须要先删除有相关依赖的容器进程记录

2.删除容器记录的命令
docker rm 容器id前3位

3.批量清空无用的 docker 容器记录,容器记录非常容易创建 docke run
#批量删除挂掉的容器记录
docker rm `docker ps -aq` # 把docker容器记录的id号,保存在反引号中,丢给docker rm实现批量删除

4.批量删除镜像
docker rmi `docker iamges -aq`

5.批量停止容器
docker stop `docker ps -aq`
docker start 容器id #启动暂停的容器
docker stop 容器id #暂停一个容器
docker restart 容器id #重启容器

docker 改

1.运行第一个 docker 的容器实例,运行镜像文件,产生容器进程
docker run 镜像文件的名字即可
docker run centos #运行centos基础镜像,如果docker容器中没有在后台运行的进程,容器会直接挂掉
#如果你发现你的容器没有启动成功,说明容器内部出错了,程序没有运行

2.运行一个 hello world 容器进程
#如果本地有就直接运行,如果本地没有就远程pull在本地后在运行:1.下载镜像,2.执行镜像
docker run hello-world

3.交互式的运行一个存活的 docker 容器,centos
# -it参数 -i 是交互式的命令操作 -t开启一个终端 /bin/bash 指定shell解释器
# 容器空间内,有自己的文件系统
docker run -it centos /bin/bash #运行centos镜像,且进入容器内
[root@s25linux ~]# docker run -it centos /bin/bash #进入容器后,容器空间内是以容器id命名的
[root@fc760671d074 /]#

4.运行出一个活着的容器,在后台不断执行程序的容器
# docker run 运行镜像文件
# -d 是让容器后台运行
# -c 指定一段shell代码
# 运行centos镜像,生成容器实例,且有一段shell代码,在后台不断运行,死循环打印一句话,每秒钟打印一次
docker run -d centos /bin/sh -c "while true;do echo s25的靓仔们辛苦了学习linux; sleep 1;done"

5.运行 docker 容器,且指定名字,便于管理
docker run --name "指定容器的运行名字“ -d centos /bin/sh -c "while true;do echo s25的靓仔们辛苦了学习linux; sleep 1;done"

6.进入一个正在运行的容器空间,进入一个线上正在运行的容器程序,修改其内部的资料
docker exec -it 容器id /bin/bash

7.如何进入容器空间内,修改容器内的环境,以及代码等内容,修改软件等操作,且提交镜像,发送给其他人
7.1 进入容器空间内,安装一个vim或是python3等步骤
docker run -it centos /bin/bash
yum install vim -y

7.2 安装好vim后,退出容器空间
exit

7.3 提交该容器,生成新的镜像文件
docker commit 5b28d8c88794 s25-centos-vim

8.导出你的 docker 镜像,可以发送给同事,或是其他人使用
docker save 镜像id > 镜像的压缩文件
#官方文档解释的是,docker save用的是tar命令压缩,应该是没有其他压缩格式的
[root@s25linux ~]# docker save 45d7f887125d > /opt/s25-centos-vim.tar.gz
#你可以删掉本地的镜像,然后重新导入该压缩文件,模拟发送给同事的操作
9.如何进行 docker 镜像导入
比如小李运维同志,他收到了该docker镜像压缩文件,在他的机器上导入该进项
docker load < /opt/s25-centos-vim.tar.gz
首次导入该进项的时候,发现丢失了镜像tag标签,重新赋予一个即可
docker tag 45d7f887125d s25-new-centos-vim
10.如何在 docker 内,运行一个 python web 的程序,需要用到端口映射知识~~~~
# -d 后台运行
# -P 大写的P参数,作用是随机的端口映射
# training/webapp 是镜像的名字,默认没有会去在线下载
# python app.py 代表启动容器后,让容器执行的命令是它
# 因此这个命令作用是,启动一个webapp镜像,且在容器中执行 python app.py
# -p 6000:5000 访问宿主机的6000,就是访问容器的5000了
docker run --name "webdocker" -d -p 6000:5000 training/webapp python app.py
11.进入该 webapp 的容器,查看里面的内容
docker exec -it 容器id /bin/bash #进入容器内,可以进行相应的修改操作
docker restart 容器id #重启该容器,重新读取代码,即可生效

docker 查

1.查看本地机器,所有的镜像文件内容
docker images

2.查看 docker 正在运行的进程
docker ps

3.查看所有运行,以及挂掉的容器进程
docker ps
#查看所有运行,以及挂掉的容器进程
docker ps -a

4.查看容器内的运行日志
docker logs 容器id
docker logs -f 容器id #实时刷新容器内的日志,例如检测nginx等日志信息

5.查看容器内的端口转发情况
docker port 容器id #查看容器的端口转发
[root@s25linux ~]# docker port 615
5000/tcp -> 0.0.0.0:6000

dockerfile

dockerfile常用指令学习
# FROM 指令表示,告诉该dockerfile以哪个镜像为基础
# 比如你的技术老大,要求你们程序运行在ubuntu中
# FROM ubuntu
# FROM centos
FROM scratch #制作base image 基础镜像,尽量使用官方的image作为base image
FROM centos #使用base image
FROM ubuntu:14.04 #带有tag的base image
#LABEL标签,定义变量,定义坐着信息等
LABEL version=“1.0” #容器元信息,帮助信息,Metadata,类似于代码注释
LABEL maintainer=“pythl@fomail.com"
#RUN是一个完成指令,你可以用它在docker中执行任意的命令
# RUN就是告诉容器要做哪些配置
# 用RUN指令告诉dockerfile他该去做什么事
RUN mkdir /pythl
RUN cd /pythl
RUN cd
RUN pwd #会输出什么? 因此在容器中会输出,用户家目录

#对于复杂的RUN命令,避免无用的分层,多条命令用反斜线换行,合成一条命令!
# 要修改centos基础镜像的环境问题
RUN yum update && yum install -y vim
Python-dev #反斜线换行
RUN /bin/bash -c "source $HOME/.bashrc;echo $HOME
WORKDIR /root #相当于linux的cd命令,改变目录,尽量使用绝对路径!!!不要用RUN cd
WORKDIR /test #如果没有就自动创建
WORKDIR demo #再进入demo文件夹
RUN pwd #打印结果应该是/test/demo
#案例
WORKDIR /pythl
WORKDIR 我们要说goodbay了
RUN pwd #会输出什么? /s25很棒/我们要说goodbay了 此时进入了2层目录
# ADD指令用于添加宿主机的文件,放入到容器空间内
# 宿主机有自己的文件系统,文件夹,文件,目录等
# 容器内也有一套自己的文件系统,独立的文件信息
# 把宿主机的代码,拷贝到容器内
# ADD还有解压缩的功能,这是一个坑,需要注意
ADD and COPY
ADD hello.txt /opt #吧宿主机的hello.txt 拷贝到容器内的/opt目录下
ADD test.tar.gz /opt /opt/test
RUN tar -zxvf test.tar.gz #直接报错,文件不存在 ,因为上一步,ADD指令已经对tar.gz压缩包解压缩了
WORKDIR /root
ADD hello test/ #进入/root/ 添加hello可执行命令到test目录下,也就是/root/test/hello 一个绝对路径
COPY hello test/ #等同于上述ADD效果
# dockerfile,用于从宿主机拷贝文件,到容器内有2个指令一个ADD,一个COPY,COPY仅仅就是拷贝,尽量用它
ADD与COPY
- 优先使用COPY命令
-ADD除了COPY功能还有解压功能
#添加远程文件/目录使用curl或wget
ENV #环境变量,尽可能使用ENV增加可维护性
ENV MYSQL_VERSION 8.0
RUN yum install -y mysql-server=“${MYSQL_VERSION}
RUN yum install -y mysql-server=“${MYSQL_VERSION}
RUN yum install -y mysql-server=“${MYSQL_VERSION}
RUN yum install -y mysql-server=“${MYSQL_VERSION}
RUN yum install -y mysql-server=“${MYSQL_VERSION}
RUN yum install -y mysql-server=“${MYSQL_VERSION}
RUN yum install -y mysql-server=“${MYSQL_VERSION}

dockerhub

1.docker提供了一个类似于 github 的仓库dockerhub,需要注册使用 2.注册docker id后,在 linux 中登录dockerhub docker login
注意要保证 image 的 tag 是账户名,如果镜像名字不对,需要改一下 tag
docker tag 镜像 dockerhub帐号名/centos-vim
➜ ~ 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: xxx
Password:
Login Succeeded

3.推送 docker image 到 dockerhub
docker push yuchao163/centos-vim

4.在dockerhub中检查镜像https://hub.docker.com/ 5.删除本地镜像,测试下载pull镜像文件
docker pull pythl/centos-vim

如果您的问题仍未解决,还可以加入服务器在线技术交流QQ群:8017413寻求帮助。


相关内容
最新热点内容
推荐内容