Docker操作常用命令
1、Docker操作常用命令
1.1、镜像操作命令(下载、查看、删除)
去docker hub,找到nginx镜像。在Tags页面找不同版本的镜像
#1、下载最新版本镜像
docker pull nginx
docker pull redis
# 2、下载指定版本的镜像
docker pull nginx:1.20.1 #镜像名:版本名(标签)
docker pull redis:6.2.4
#3、查看本地所有镜像(下载来的镜像都在本地)
docker images
redis = redis:latest
# 4、删除镜像
docker rmi 镜像名:版本号
docker rmi 镜像id
- 拉取镜像
- 拉取指定版本镜像
- 查看本地的镜像
- 删除镜像
1.2、容器操作命令
特别命令(linux命令)
# 重启操作系统
reboot
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
【docker run 设置项 镜像名 】 镜像启动运行的命令(镜像里面默认有的,一般不会写)
# -d:后台运行
# --restart=always: 开机自启
# --name=mynginx :设置启动后容器的名
# 88是宿主机端口,80是容器端口
docker run --name=mynginx -d --restart=always -p 88:80 nginx
# 2、查看正在运行的容器
docker ps
# 3、查看所有
docker ps -a
# 4、删除停止的容器
docker rm 容器id/名字
docker rm -f mynginx #强制删除正在运行中的
# 5、停止容器
docker stop 容器id/名字
# 6、启动容器
docker start 容器id/名字
#7、如果启动容器时,未设置开机自启,则可用以下命令设置应用开机自启
docker update 容器id/名字 --restart=always
启动容器:
1.3、修改容器内部内容
例如:修改容器中nginx的index.html页面
1.3.1、进容器内部修改
# 进入启动的容器内部,修改容器内容
# -it 以交互模式进入容器
# /bin/bash 进入容器控制台
# 容器id 这里的容器id是已经启动的容器的id
docker exec -it 容器id /bin/bash
# 进入容器中nginx的首页
cd /usr/share/nginx/html
修改nginx首页的内容
echo "<h1>Welcome To China</h1>" > index.html
访问容器中linux的首页
1.3.2、挂载数据到外部修改
意思是建容器内的文件与宿主机建立一种联系,在宿主机修改文件,可以影响到容器内部文件的数据
# -v /data/html:/usr/share/nginx/html:ro
# 挂载 宿主机文件存放路径:容器内要挂载的文件存放路径:容器内只能可读(rw:容器内可读写)
docker run --name=mynginx -d --restart=always -p 88:80 -v /data/html:/usr/share/nginx/html:ro nginx
# 修改页面只需要去宿主机的 /data/html文件夹下,使用以下命令给index.html写入内容“111”
echo 111 >index.html
#我们再去访问容器内的nginx的首页,浏览器就会输出111
1.4、发布镜像
将自己修改好的镜像提交(先存到本地仓库)
# 首先查看刚刚修改过的镜像的id(1.3中修改的镜像)
docker ps
# 提交修改过的镜像 -a:指明作者 -m:修改的内容
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
# 容器id 刚刚修改的id,例如下图的nginx
# mynginx:2.0 指定推送后的镜像的 镜像名:版本号为
docker commit -a "zhangsan" -m "改变首页输出内容" 容器id mynginx:2.0
- 查看本地的镜像,刚刚提交的镜像已存储到本地仓库
docker images
- 启动新提交的镜像,并以交互命令进入启动后的容器
docker run --name=mynginx3 -d --restart=always -p 90:80 mynginx:2.0
docker exec -it 29be6ff9a4f947a9cda043795daafbf8733357bd8f83ea03eefe6e384b4bc4c6 /bin/bash
在物理机访问刚刚启动的容器
1.5、镜像打包,服务器之间传输
将镜像打包,传输到别的服务器,在别的服务器docker中使用该镜像
# 1、将镜像保存成压缩包
docker save -o abc.tar nginx:v2.0
# 2、离线安装,通过u盘拷贝
# 别的机器加载这个镜像
docker load -i abc.tar
- 将镜像打包
docker ps
docker save -o abc.tar nginx:v2.0
- 查看打包后的镜像
ls
- 将在服务器1(192.168.126.129)上打包的容器传输到服务器2(192.168.126.130):
# 第一个root指192.168.126.130的root账号,第二个root是值将abc.tar放到主机192.168.126.130的root目录下
scp abc.tar root@192.168.126.130:/root/
- 在别的服务器上使用该镜像
docker load -i abc.tar
1.6、将镜像推送到docker hub仓库
推送镜像到docker hub;应用市场
# docker 官方命令
docker tag local-image:tagname new-repo:tagname
docker push new-repo:tagname
实际命令
#首先查看本地有的镜像
docker images
# 把旧镜像的名字(nginx2:v2.0),zhansan为你的docker hub登录名,改成要推到docker仓库的新版名字(nginx:v1.0)
docker tag mynginx:2.0 zhansan/nginx:v1.0
# 登录到docker hub,依次你的docker hub账号密码
docker login
# 推送 docker hub登录名/仓库:镜像版本
docker push zhangsan/nginx:v1.0
# 推送完成镜像后退出
docker logout
# 别的机器下载
docker pull zhangsan/nginx:v1.0
1.7、查看容器的日志
docker logs 容器id/容器名
1.8、将容器内的nginx的首页、配置文件挂载到宿主机上
命令中的nginx.conf提前在宿主机指定位置创建
# 下边命令是docker启动命令
# docker 经常修改nginx配置文件
docker run -d -p 80:80 \
-v /data/html:/usr/share/nginx/html:ro \
-v /data/conf/nginx.conf:/etc/nginx/nginx.conf \
--name mynginx-02 \
nginx
1.9、容器和宿主机之间完成文件复制
#把容器指定位置的东西复制出来
docker cp 5eff66eec7e1:/etc/nginx/nginx.conf /data/conf/nginx.conf
#把外面的内容复制到容器里面
docker cp /data/conf/nginx.conf 5eff66eec7e1:/etc/nginx/nginx.conf