【Docker进阶-02】Docker命令

【Docker进阶-02】Docker命令

命令列表

所有Docker命令手册:https://docs.docker.com/reference/cli/docker/




常用命令

bash 复制代码
docker pull redis == docker pull redis:latest(最新版)
bash 复制代码
docker tag 原镜像:标签 新镜像名:标签 #重命名
bash 复制代码
docker create redis: 按照redis:latest镜像启动一个容器
docker create --name myredis -p 6379(主机的端口):6379(容器的端口) redis

-p port1:port2
port1是必须唯一的

-P 大写P是随机端口
bash 复制代码
docker run --name myredis2 -p 6379:6379 -p 8888:6379 redis 
默认是前台启动的,一般加上-d 让他后台悄悄启动, 虚拟机的很多端口绑定容器的一个端口是允许的
docker run -d == docker create + docker start 
bash 复制代码
容器的状态
Created(新建)、Up(运行中)、Pause(暂停)、Exited(退出)
docker run的立即启动,docker create得稍后自己启动
bash 复制代码
docker kill是强制kill -9(直接拔电源);
docker stop可以允许优雅停机(当前正在运行中的程序处理完所有事情后再停止)
bash 复制代码
#启动了nginx;一个容器。docker 容器里面安装了nginx,要对nginx的所有修改都要进容器
#进容器:
docker attach 绑定的是控制台. 可能导致容器停止。不要用这个

docker exec -it -u 0:0 --privileged mynginx4 /bin/bash: 0用户,以特权方式进入容器
bash 复制代码
docker container inspect 容器名 = docker inspect 容器名
docker inspect image/network/volume ....
bash 复制代码
# 一般运行中的容器会常年修改,我们要使用最终的新镜像
docker commit -a leifengyang -m "first commit" mynginx4 mynginx:v4 
#把新的镜像放到远程docker hub,方便后来在其他机器下载
bash 复制代码
#---------export操作容器/import-------------------
docker export导出的文件被import导入以后变成镜像,并不能直接启动容器,需要知道之前的启动命令
(docker ps --no-trunc),然后再用下面启动。
docker run -d -P mynginx:v6 /docker-entrypoint.sh nginx -g 'daemon off;' 
或者docker image inspect 看之前的镜像,把 之前镜像的 Entrypoint的所有和 Cmd的连接起来就
能得到启动命令
bash 复制代码
#----save/load--操作镜像--
docker save -o busybox.tar busybox:latest 把busybox镜像保存成tar文件
docker load -i busybox.tar	把压缩包里面的内容直接导成镜像
bash 复制代码
# 	镜像为什么能长久运行
镜像启动一定得有一个阻塞的进程,一直干活,在这里代理。
docker run [OPTIONS] IMAGE [COMMAND] [ARG]
docker run --name myredis2 -p 6379:6379 -p 8888:6379 redis
镜像启动以后做镜像里面默认规定的活。
docker run -it busybox; 交互模式进入当前镜像启动的容器
bash 复制代码
#----产生镜像-----
1、基于已经存在的容器,提取成镜像
2、人家给了我tar包,导入成镜像
3、做出镜像
	-1)、准备一个文件Dockerfile
	FROM busybox
	CMD ping baidu.com
	-2)、编写Dockerfile
	-3)、构建镜像
	docker build -t mybusy66:v6 -f Dockerfile .

#---做redis的镜像---
FROM alpine(基础镜像)
//下载安装包
//解压
//准备配置文件
CMD redis-server redis.conf
bash 复制代码
build 是根据一个Dockerfile构建出镜像
commit 是正在运行中的容器提交成一个镜像

其他知识点

  • 自己构建镜像 RUN的时候就把时区设置好;如果是别人的镜像,docker hub,别人用的可能是UTC; 所以docker run 运行容器时 : -v /etc/localtime:/etc/localtime:ro

  • docker rmi -f $(docker images -aq) #删除全部镜像

  • docker system prune清理一下docker【谨慎使用】

    docker image prune #移除游离镜像 dangling:游离镜像(没有镜像名字的)

  • 镜像是怎么做成的。基础环境+软件

    redis的完整镜像应该是: linux系统+redis软件

    alpine:超级经典版的linux 5mb;+ redis = 29.0mb

    没有alpine3的:就是centos基本版

    以后自己选择下载镜像的时候尽量使用

    alpine: slim:

  • 重启策略

    no,默认策略,在容器退出时不重启容器

    on-failure,在容器非正常退出时(退出状态非0),才会重启容器

    on-failure:3,在容器非正常退出时重启容器,最多重启3次

    always,在容器退出时总是重启容器

    unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

常见Docker部署组件案例

部署Nginx

部署MySQL

部署Redis

部署ElasticSearch

部署Tomcat

典型命令

docker run

常用关键参数 OPTIONS 说明:

docker exec

bash 复制代码
docker exec -it alpine sh

docker build

bash 复制代码
docker build -t imageName -f DockerfileName .

docker push

推送镜像:

注册docker hub并登录

可以创建一个仓库,选为public

docker push leifengyang/mynginx:tagname

docker hub一个完整镜像的全路径是

docker.io/library/redis:alpine3.13 我们的 docker.io/leifengyang/mynginx:tagname

docker images的时候镜像缩略了全名 默认官方镜像没有docker.io/library/

docker.io/ rediscommander / redis-commander:latest

docker.io/leifengyang/mynginx:v4 我的镜像的全称

登录远程docker仓库

当前会话登录以后 docker login 。所有的东西都会push到这个人的仓库

docker push leifengyang/mynginx:tagname

上面命令的完整版 docker push docker.io/leifengyang/mynginx:v4

怎么知道是否登录了 cat ~/.docker/config.json 有没有 auth的值,没有就是没有登录

docker hub太慢了,用阿里云的镜像仓库,或者以后的habor仓库

相关推荐
FLGB3 小时前
Docker网段和服务器内部网段172.17 网段冲突导致网络不通
服务器·网络·docker
hwj运维之路4 小时前
超详细ubuntu22.04部署k8s1.28高可用(二)【结合ingress实现业务高可用】
运维·云原生·容器·kubernetes
骂我的人都死了5 小时前
DevOps架构部署
运维·ubuntu·docker·k8s·github·devops·python3.11
AL3175 小时前
模拟实现NetDevOps全生命周期自动化网络运维
运维·docker·centos·ensp·netmiko
Alaaaaaaan5 小时前
[DevOps]使用github-action工具部署docker容器(实现提交代码一键推送部署到服务器)
服务器·前端·docker·容器·github
70asunflower5 小时前
Docker exec 命令完全解析
linux·ubuntu·docker
玉梅小洋8 小时前
Docker 镜像在节点间的高效拷贝的方案
运维·docker·容器
firstacui8 小时前
搭建harbor仓库
linux·docker
Cyber4K8 小时前
【Kubernetes专项】K8s 控制器 DaemonSet 从入门到企业实战应用
云原生·容器·kubernetes