Docker常用命令

1、docker安装
wget -P /etc/yum.repos.d/ https://download.docker.com/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r #查看可以安装的版本
yum install -y docker-ce-18.03.1.ce-1.el7.centos #或使用yum install -y docker-ce命令安装,不推荐
启动docker服务
systemctl start docker.service

2、docker镜像操作常用命令
登陆到本地docker仓库
docker login -u[user] -p[password] localhost:8080
登出
docker logout localhost:8080
打包系统(--exclude:排除指定目录,两条命令二选一,注意第二条命令后面有个点)
tar -cvpf /tmp/centos6-base.tar --exclude=proc --exclude=sys --exclude=dev --exclude=run --exclude=boot /
tar -cvpf /tmp/system.tar --directory=/ --exclude=proc --exclude=sys --exclude=dev --exclude=run --exclude=boot .
导入打包好的系统到docker镜像(注意docker镜像名不能有大写字母)
cat centos6-base.tar | docker import - centos6-base
docker import centos6-base.tar centos6-base
启动导入的docker镜像,-d表示放到后台运行,--net指定网络类型(bridge|host|none|container:NAME/ID|user_defined_network)
docker run -p 80:80 -p 443:443 -p 2022:22 --hostname CentOS6 --net=bridge -it -d centos6-base /bin/bash
提交一个运行中的容器为镜像(-p :在commit时,将容器暂停)
docker commit -p [CONTAINER ID] [REPOSITORY[:TAG]]
导出镜像到本地
docker save -o /root/centos610_ssh.tar centos:6.10_ssh
导入本地镜像
docker load </root/centos610_ssh.tar
运行镜像添加端口映射和修改网络模式(--name:指定容器名称)
docker run -p 8080:80 --hostname=test --net=bridge --name=[NAMES] -it -d [REPOSITORY[:TAG]] /bin/bash
查看docker镜像
docker images
删除docker镜像
docker image rm -f centos6-base
docker rmi centos:6.10_ssh
搜索docker镜像
docker search centos7
下载docker镜像
docker pull ansible/centos7-ansible
检查网络配置
docker network inspect bridge

3、docker容器操作常用命令
运行一个容器(-d:后台运行容器;--privileges:使container内的root拥有真正的root权限)
docker container run -d --privileged -it [镜像名称] /sbin/init
启动一个退出状态中的docker容器
docker container start [CONTAINER ID]
停止一个运行中的docker容器
docker container stop [CONTAINER ID]
进入启动好的docker容器
docker exec -it [CONTAINER ID] bash
强制删除运行中的docker容器
docker container rm -f [CONTAINER ID]
查看运行中的docker容器
docker ps
查看所有docker容器
docker ps -a
修改容器名称
docker container rename [NAMES] [NEW_NAMES]
容器默认配置文件目录(489a4ec81e86前十二位为容器container id)
cd /var/lib/docker/containers/489a4ec81e869cade7fb1bd887f51f72727606ea2602292f98e10fd2fb80985b/

4、运行中的docker容器增加端口映射
iptables -A DOCKER ! -i docker0 -o docker0 -p tcp -s 0.0.0.0/0 -d 172.17.0.2 --dport 65510 -j ACCEPT
iptables -t nat -A DOCKER ! -i docker0 -p tcp --dport 65510-j DNAT --to-destination 172.17.0.2:65510
iptables -t nat -A POSTROUTING -p tcp --dport 65510 -j MASQUERADE
iptables -nvL
iptables -t nat -nvL
查看container端口映射(使用iptables开启的端口映射无法查看)
docker container port [CONTAINER] 80/tcp
docker port [CONTAINER] 80/tcp

5、docker的五种网络模式
--net=bridge|host|none|container:container_id/container_name|user_defined_network   #指定容器网络模式;
--net=bridge   #默认模式。为容器创建独立的网络命名空间,分配网卡、IP地址等网络配置,并通过veth接口对,将容器挂载到一个虚拟网桥(默认为docker0)上,类似于VMware的NAT模式;
--net=host    #不为容器创建独立的网络命名空间,容器内看到的网络配置(网卡信息、路由表、Iptables规则等)均与主机上保持一致。注意其他资源还是与主机隔离的,类似于VMware的桥接模式;
--net=none    #为容器创建独立的网络命名空间,但不进行网络配置,即容器内没有创建网卡、IP地址等;
--net=container:container_id/container_name    #新创建的容器共享指定的已存在容器的网络命名空间,两个容器内的网络配置共享,但其他资源(进程空间、文件系统等)还是相互隔离的;
--net=user_defined_network    #用户自行用network相关命令创建一个网络,同一个网络内的容器彼此可见,可以采用更多类型的网络插件。

6、修改容器配置文件
docker container stop fb7c338a6c93
systemctl stop docker.service
cd /var/lib/docker/containers/fb7c338a6c934359aff9936e32ebb69bf46dd7f64e1e7892a7340367850e7e0b
vim hostconfig.json
vim config.v2.json
systemctl start docker.service
docker ps -a
docker container start fb7c338a6c93
注意:
       修改容器配置文件前必需先停容器再停docker服务再修改容器配置文件,更改端口映射和网络模式,hostconfig.json文件和config.v2.json文件都需要修改。启动docker服务后使用docker ps -a命令查看不到修改完配置文件的容器时,请检查配置文件是否修改正确

7、创建容器启动脚本
[root@test /]# vim /bin/start.sh   #进入容器里创建start.sh脚本

#!/bin/bash

/etc/init.d/sshd start
/bin/bash    #保留一个终端,防止容器自动退出

[root@test /]# chmod +x /bin/start.sh

参考链接:
      https://docs.docker.com/reference/
      https://www.cnblogs.com/fps2tao/p/10557257.html   #修改运行中的docker容器的端口映射
      https://www.cnblogs.com/kingsonfu/p/11578073.html   #docker容器添加对外映射端口
      https://blog.csdn.net/weixin_42498981/article/details/112110445   #docker常用命令
      https://www.cnblogs.com/maohai-kdg/p/13474024.html    #docker安装
      https://hub.docker.com/_/centos?tab=tags&page=2&ordering=last_updated  #CentOS docker镜像

原文地址:https://www.cnblogs.com/xwupiaomiao/p/14813865.html