docker常用命令

常用命令总结

#启动docker
systemctl start docker

#启动镜像
docker run -it --add-host node01:192.168.0.1 --add-host node02:192.168.0.2 --add-host node03:192.168.0.3 -p 8888:8888 zyy/hue:arm64 /bin/bash

#新开linux窗口进入正在运行的容器(a52352ffds 为容器id)
docker exec -it a52352ffds /bin/bash

#下载镜像
docker pull xxx/yyy:qqq

#查看、删除镜像
docker images
docker rmi -f 镜像id

#查看、删除容器
docker ps (查看正在运行的容器)
docker ps -a (查看所有容器)
docker rm 容器id

#本地文件上传到容器(/home/test.txt为本地文件,53432sgdf5为容器id,/home/moudle 为容器内文件夹路径)
docker cp /home/test.txt 53432sgdf5:/home/moudle 
#下载容器内文件到本地(53432sgdf5为容器id,/home/moudle/test.txt 为容器内文件,/home为本地路径)
docker cp  53432sgdf5:/home/moudle/test.txt  /home

#保存容器为镜像(a5141fasfw23d为容器id,zyy/hue:arm0916为镜像名称 )
docker commit a5141fasfw23d zyy/hue:arm0916
#将镜像下载保存到本地
docker save -o hue_arm0916.tar zyy/hue:arm0916
#加载本地镜像到docker
docker load < hue_arm0916.tar 

教程https://www.runoob.com/docker/docker-hello-world.html

docker中怎样设置开机启动–随容器的启动而启动服务?
https://www.cnblogs.com/yougewe/p/10425387.html

★★★★★★如何备份当前容器的修改?备份是可靠性的一个保证! start★★★★★★

1.如何备份当前容器的修改?备份是可靠性的一个保证!
  1. 使用commit 命令保存到本地
docker commit -m “msg” abcommitid myimage:1.0
  其好处是操作方便,本机永久保存,方便下次快速操作。坏处,也不算,就是你如果想放到远程,你必须注册一个docker hub 账号,然后保存过去。而且这样的镜像,一般只适合自己使用,不适合团队传播!(不过也不是绝对的)
  2. 使用docker save 保存压缩包到本地
docker save -o myimage_save.tar abcontainerid
  这样备份好之后,就可以将改该容器到处分发到其他机器或者做备份了。这样做都好处是,传播方便,不会导致隐私泄露。坏处是都是本地包,没有存储在云端,必须到处携带该包。
  导入时使用 docker load 即可!
docker load -i myimage_save.tar
  然后就可以看到镜像了,使用docker run 运行。操作步骤稍微繁琐了点。注意: 只有 docker run 才能自定义各种参数哦。(docker run 聚合了 create 和 start 的功能)
  在部署应用时可能存在需要将新应用部署好后,再删除原容器的操作,所以容器重命名就很有必要的, 使用 docker rename
docker rename 原容器名 新容器名
  3. 使用 docker export 保存到本地, 操作如同 docker save, 但是功能受限,个人不是很喜欢使用
docker export -o mycontainer_save.tar tmp_container

  1. 如何设置应用开机启动?只要启动容器就够了!
      应用场景可以说是刚需: 我把第一个镜像安装好后,希望下次创建容器之后就能自动运行,而不是还要操作N多繁杂步骤,从而降低移植性带来的方便性!
      1. 能想得最简单的是,使用系统的开机启动功能
        比如在 /etc/rc.d/rc.local 中添加相应的启动,但是这里有个前提,那就是你必须先把容器启起来; (启不启得来另说)
      2. 使用docker的开机自动运行功能,使用简单;
        这里说的简单是指使用,而在操作的时候则看个人了。在docker创建时,使用启动脚本,自动运行。主要的命令有: CMD, RUN, ADD . 创建一个start.sh,可以定复杂的启动逻辑;但是这在后期中,就很难更改其逻辑了哦!
    CMD [“sh”, “-c”, “service httpd start;bash”] # 开机启动 apache 服务

  2. 如何自定义端口映射?容器需要与外部通信!
      Docker 自带了端口映射功能,使用docker run -p 进行操作!
    docker run -d -p 81:80 --name container_name myimage:1.0
      多个端口映射使用多个-p即可;

★★★★★★如何备份当前容器的修改?备份是可靠性的一个保证! end★★★★★★

systemctl start docker // 启动docker服务
systemctl stop docker // 停止docker服务
systemctl restart docker // 重启docker服务
systemctl status docker // 查看docker服务状态
systemctl enable docker // 开机启动docker服务
systemctl disable docker // 取消开机启动docker服务

1.docker 运行的容器实现"对话"的能力
docker run -i -t ubuntu:15.10 /bin/bash
-t: 在新容器内指定一个伪终端或终端。
-i: 允许你对容器内的标准输入 (STDIN) 进行交互

2.退出容器
exit 或者使用 CTRL+D

3.启动容器(后台模式):-d 指定容器的运行模式
docker run -d ubuntu:15.10 /bin/sh -c “while true; do echo hello world; sleep 1; done”

docker run -ti -v /share:/share centos:v0.1 --name centos7 /bin/bash 
此时在centos:v0.1镜像的基础上以交互的方式运行了一个name叫centos7的容器,并且挂载了一个主机目录/share作为数据卷,容器中对应的目录也是/share.

4.查看容器属性
docker ps

CONTAINER ID: 容器 ID。
IMAGE: 使用的镜像。
COMMAND: 启动容器时运行的命令。
CREATED: 容器的创建时间。
STATUS: 容器状态。
	状态有7种:
	created(已创建)
	restarting(重启中)
	running(运行中)
	removing(迁移中)
	paused(暂停)
	exited(停止)
	dead(死亡)
	PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。
NAMES: 自动分配的容器名称。

5.查看容器内容输出
docker logs 容器ID(或者容器名称)
eg : docker logs 123qwa

6.停止容器
docker stop 容器ID(或者容器名称)

7.启动已存在的容器
docker start 容器ID(或者容器名称)

8.进入容器
docker attach 容器ID(或者容器名称)
docker exec -it 容器ID(或者容器名称) /bin/bash
推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止

9.导出容器
docker export 容器ID(或者容器名称) > ubuntu.tar

10.导入容器
cat ubuntu.tar | docker import - test/ubuntu:v1

也可以通过指定 URL 或者某个目录来导入
docker import http://example.com/exampleimage.tgz example/imagerepo

11.删除容器
docker rm -f 容器ID(或者容器名称)

下面的命令可以清理掉所有处于终止状态的容器。
docker container prune

12.容器内运行应用
docker pull training/webapp # 载入镜像
docker run -d -P training/webapp python app.py
-d:让容器在后台运行。
-P:将容器内部使用的网络端口映射到我们使用的主机上。

docker ps
CONTAINER ID        IMAGE               COMMAND             ...        PORTS                 
d3d5e39ed9d3        training/webapp     "python app.py"     ...        0.0.0.0:32769->5000/tcp
Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32769 上

docker run -d -p 5000:5000 training/webapp python app.py
容器内部的 5000 端口映射到我们本地主机的 5000 端口上

-P(大写) : 是容器内部端口随机映射到主机的高端口。
-p(小写) : 是容器内部端口绑定到指定的主机端口。

13.容器的端口映射
docker port 容器ID(或者容器名称)
5000/tcp -> 0.0.0.0:5000
容器的某个确定端口映射到宿主机的端口号

14.查看容器内部的标准输出
docker logs -f bf08b7f2cd89
-f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出。

15.启动一个centos容器,宿主机的/test目录挂载到容器的/soft目录,可通过以下方式指定:
docker run -it -v /test:/soft centos /bin/bash
冒号":"前面的目录是宿主机目录,后面的目录是容器内目录。

16.基于本地模板载入docker镜像
docker load --input centos-7-86_64.tar.gz

17.查看容器内部运行的进程
docker top 容器ID(或者容器名称)

18.查看 Docker 的底层信息,记录着 Docker 容器的配置和状态信息。
docker inspect 容器ID(或者容器名称)

19.列出本地主机上的镜像
docker images
各个选项说明:
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如 ubuntu 仓库源里,有 15.10、14.04 等多个不同的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
所以,我们如果要使用版本为15.10的ubuntu系统镜像来运行容器时,命令如下:
docker run -t -i ubuntu:15.10 /bin/bash

20.新建网络
docker network create -d bridge test-net
-d:参数指定 Docker 网络类型,有 bridge、overlay

连接容器
运行一个容器并连接到新建的 test-net 网络:
docker run -itd --name test1 --network test-net ubuntu /bin/bash
打开新的终端,再运行一个容器并加入到 my-net 网络:
docker run -itd --name test2 --network test-net ubuntu /bin/bash
在容器内执行以下命令安装 ping
apt-get update
apt install iputils-ping
在容器内互ping
docker exec -it test1 /bin/bash
ping test2

docker exec -it test2 /bin/bash
ping test1

21.配置 DNS
/etc/docker/daemon.json 文件中增加以下内容来设置全部容器的 DNS
{
“dns” : [
“114.114.114.114”,
“8.8.8.8”
]
}

22.设置镜像标签
docker tag 860c279d2fec runoob/centos:dev

23.docker 给运行中的容器设置端口映射
方法1
1、获得容器IP
将container_name 换成实际环境中的容器名
docker inspect container_name | grep IPAddress
2、 iptable转发端口
将容器的8000端口映射到docker主机的8001端口
iptables -t nat -A DOCKER -p tcp –dport 8001 -j DNAT –to-destination 172.17.0.19:8000

方法2
1.提交一个运行中的容器为镜像
docker commit containerid foo/live
2.运行镜像并添加端口
docker run -d -p 8000:80 foo/live /bin/bash

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值