docker常用命令
通过Dockerfile构建一个镜像
docker build -t registry.nervhub.nervstack.io/base_image/dingcloud_jdk8:0.0.5 .
启动一个自定义镜像
docker run -itd --name duanjiale registry.nervhub.nervstack.io/base_image/dingcloud_jdk8:0.03 /bin/bash
将正在运行的容器打包成镜像
docker commit 《容器名称》 《镜像名称》
docker commit duanjiale registry.nervhub.nervstack.io/base_image/dingcloud_jdk8:0.04
查看Exited容器日志
docker inspect --format '{{.LogPath}}' 容器名称/容器id
将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下。
docker cp /www/runoob 96f7f14e99ab:/www/
将主机/www/runoob目录拷贝到容器96f7f14e99ab中,目录重命名为www。
docker cp /www/runoob 96f7f14e99ab:/www
将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中。
docker cp 96f7f14e99ab:/www /tmp/
docker push duanjiale/duan:tagname
查看容器的详细信息
docker inspect edd8c720b5ec
docker inspect --format '{{.LogPath}}' 97069f94437b
启动容器(-p 端口映射)
docker run -d -p 80:80 nginx
dockerr run -d -p 8888:80 --name nginx01 nginx
docker run -it -d -p 8888:80 --name web1 centos7-sshd-httpd /init.sh
docker run -it -d -p 映射端口:端口 容器名称 镜像名称 /bin/bash
在容器外执行容器内命令
docker exec <docker id> /bin/bash -c '命令'
或者
docker exec -it <docker id> /bin/bash -c '命令'
-it一般不加
删除容器
docker rm -f `docker ps -a -q`
查看容器
docker ps
docker ps -a
停止容器
docker stop nginx01
启动容器
docker start nginx01
进入容器方法
启动时进去方法
docker run -it nginx01:latest /bin/bash
docker run -it -d -p 8888:80 --name web4 nginx /bin/bash
使用root用户登陆容器内部
docker exec -it --user root 7d9d3c9acaf2 /bin/bash
启动后进入容器的方法
docker run -it centos:latest
推荐使用:
docker exec -it clsn1 /bin/bash
查看当前主机镜像列表
docker image list
docker images
导出镜像
docker image save centos > docker-centos.tar.gz
删除镜像
docker image rmi centos:latest
添加 -f 强制删除
导入镜像
docker image load -i docker-centos.tar.gz
查看镜像的详细信息
docker image inspect centos
查看镜像版本
docker search myapp:v1
查看容器端口号
docker container inspect nginx01
Docker 挂载卷
docker run -d -p 8080:80 --name nginx01 -v /data/:/usr/share/nginx/html nginx:latest
容器内站点目录:/usr/share/nginx/html
设置共享卷
docker run -d -p 8888:80 -v /data:/usr/share/nginx/html nginx:latest
测试:curl 192.168.102.128:8888
查看卷列表
docker volume ls
创建一个简单卷
docker volume create
创建指定卷名的卷
docker volume create --name nginx
查看卷路径
docker volume inspect nginx
创建Docker时挂载卷
docker run -d -p 9000:80 -v nginx:/usr/share/nginx/html nginx:latest
echo 'www.djl.com' > /var/lib/docker/volumes/nginx/_data/index.html
curl 192.168.102.128:9000
实现Docker共享卷挂载
docker run -d -P --volumes-from bf26d05d4c57 nginx:latest
--volumes-from # 指定共享卷所在的容器
创建仓库
docker run -d -p 5000:5000 --restart=always --name registry -v /opt/myregistry:/var/lib/registry registry
将本地镜像上传到harbor仓库
1、修改镜像标签
docker tag busybox:latest 192.168.102.128:5000/eden/busybox:1.0
docker tag 【本地镜像名称】 【harbor仓库地址/项目名称/镜像名称】
2、将新打标签的镜像上传镜像到仓库
docker push 192.168.102.128:5000/eden/busybox
将新的镜像拉取下来
docker pull 192.168.102.128:5000/eden/busybox:1.0
docker pull <image>
登录用户
docker login 192.168.102.128:5000
网页推送镜像
docker tag centos:7 192.168.102.128/web/centos7:v1.0
查看nginx01:v1的配置内容
docker inspect nginx01:v1
创建自签名证书
# openssl genrsa -out /data/ca/harbor-ca.key
# openssl req -x509 -new -nodes -key /data/ca/harbor-ca.key -subj "/CN=harbor.linux.com" -days 7120 -out /data/ca/harbor-ca.crt
不为容器配置网络功能
none: 不为容器配置任何网络功能,没有网络
docker run -it --network none busybox:latest /bin/sh
或
docper run -it --net=none busybox:latest /bin/sh
与其他容器共享网络配置
container: 与另一个运行中的容器共享network
docker run -it --network container:test1 busybox:latest /bin/sh
(test1是一台有ip的容器机)
使用宿主机网络
host: 与主机共享network
docker run -it --network host busybox:latest /bin/sh
或
docker run -it --net=host busybox:latest /bin/sh
查看网络列表
docker network list
删除网络列表
docker network rm host
创建容器,并启动网卡配置
docker run -itd --name nginx1 -p 8080:80 --net=none nginx
pipework br0 nginx1 192.168.102.111/24@192.168.102.1
#随便的 ip/24 @网关
ip命令设置混杂
ip link set ens33 promisc on 设置混杂
ip link set ens33 promisc off 取消混杂
在主机上创建macvlan网络
dokcer network create -d macvlan --subnet=172.16.10.0/24 --gateway=172.16.10.1 -o parent=ens37 mac1
① -d 指定docker 网络 macvlan
② --subnet 指定 macvlan 网络所在的网段(可随便起)
③ --gateway 指定网关
④ -o parent 指定用来分配 macvlan 网络的物理网卡, ifconfig里的真实机器的网卡名(如ens33)
运行容器c1指定使用macvlan 网络
docker run -itd --name c1 --ip=172.16.10.111 --network mac1 busybox
① --ip 指定容器c1使用的ip
② --network 指定 macvlan 网络
统计docker信息,查看各种情况的命令
docker stats
停用所有容器
docker-compose stop
停用移除所有容器以及网络相关
docker-compose down
启用容器
docker-compose start
创建启用容器
docker-compose up
放后台
docker-compose up -d
删除所有容器
docker-compose rm
列出所有容器
docker-compose ps
查看服务器输出
docker-compose logs
docker搜索镜像
docker search mysql
# 停止所有 Exited 的容器
docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker stop
# 删除所有 Exited 的容器
docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker rm
# 删除所有 none 镜像
docker images|grep none|awk '{print $3 }'|xargs docker rmi
批量导出镜像,保存到本地
# 将机器上的所有镜像打包到images.tar文件里面
docker save $(docker images | grep -v REPOSITORY | awk 'BEGIN{OFS=":";ORS=" "}{print $1,$2}') -o images.tar
docker save $(docker images) > /home/image.tar
加载镜像到docker中
docker load < /home/image.tar