docker常用命令

1、docker启动、停止
systemctl start|stop docker


2、改变容器存放位置
systemctl stop docker
vim /etc/docker/daemon.json 
加入如下内容: 
{
    "graph":"/data/docker-data"
}
systemctl daemon-reload  #从原来的转移数据到新的

3、搜索镜像

docker search image-name

4、下载镜像
docker pull centos:centos6.9


5、镜像管理

docker images --查看镜像
docker rmi centos --删除镜像

6、运行容器实例(注意镜像名不能同已存在相同,用docker ps -a 查看)
docker run -itd --name centos centos:centos6.9

7、容器管理

docker ps -a  --查看容器实例

docker rm --删除容器实例

docker stop centos  --暂停容器实例

docker stop centos  --启动容器实例

8、进入centos容器实例
docker exec -it centos /bin/bash

9、本地文件拷贝到docker容器(反之一样)
docker cp /tmp/jdk-8u121-linux-x64.tar.gz centos:/usr/app

10、本地文件同docker共享文件夹、开启自动重启动
docker run -it -v /home/share:/share --restart=always --name centos  --network host centos:centos6.9 /bin/bash
共享文件夹会涉及读写权限,处理方式:
(1)宿主机文件夹所属的用户和组 同 容器中的用户和组相同,且用该用户启动容器
(2)宿主机和容器里用户名和用户组相同,而且其对应的uid和gid值也必须一致。否则,需要修改uid和gid到一致

11、导出镜像文件 (-o:指定保存的镜像的名字;centos.tar:保存到本地的镜像名称(必须是tar.gz);centos:镜像名字)
docker save -o centos.tar.gz centos
12、载入镜像(来自导出的文件)
docker load < centos.tar.gz

13、export/import镜像从(执行容器-安装-导出-导入为新版本镜像)
docker export centos > /tmp/centos.tar  #容器内容导出为文件
docker import - centos:java < /tmp/centos.tar #导入为镜像
如果启动报:docker Error response from daemon: No command specified  ,运行时后面加" /bin/bash"启动命令
docker run -itd --name centos centos:java /bin/bash

14、DOCKER设置固定IP地址
方式一:启动 Docker的时候,网络类型bridge和ip
docker run -itd --name centos --network bridge --ip 172.17.0.10 centos:centos6.9 /bin/bash
方式二:启动 Docker的时候,网络类型host,Docker容器的网络会附属在主机上,两者是互通的。
例如,在容器中运行一个Web服务,监听8080端口,则主机的8080端口就会自动映射到容器中
docker run -itd --name centos --network host centos:centos6.9 /bin/bash
方式三:创建自定义网络:(设置固定IP)
(1)创建自定义网络
docker network create --subnet=172.18.0.0/16 mynetwork
   如果出错,需要装iptables,并在安装iptables.service之后,docker引擎需要重启
(2)创建Docker容器制定网络和ip
docker run -itd --name centos --net mynetwork --ip 172.18.0.2 centos:centos6.9 /bin/bash

15、端口映射
----查看端口绑定
docker port centos
方式一:启动容器时,选择一个主机端口映射到容器内部开放端口上
docker run -tid --name centos -p 8088:80 centos:centos6.9
方式二:容器启动绑定多IP和端口(跟多个-p)
docker run -itd --name centos -p 192.168.10.214:7777:80 -p 127.0.0.1:7788:80 centos:centos6.9
方式三:需映射端口较多或容器启动时未添加端口映射关系,通过宿主机的iptables进行nat转发,将宿主机的端口映射到容器的内部端口上
(1)获得容器ip
docker inspect centos|grep IPAddress
(2)NAT转发
centos7下部署iptables环境纪录(关闭默认的firewalle)
CentOS7默认的防火墙不是iptables,而是firewall
将容器的80端口映射到dockers宿主机的9998端口
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 9998 -j DNAT --to-destination 172.17.0.9:80
iptables -t nat -A POSTROUTING -d 172.17.0.9/32 -p tcp -m tcp --sport 80 -j SNAT --to-source 192.16.10.214
iptables -t filter -A INPUT -p tcp -m state --state NEW -m tcp --dport 9998 -j ACCEPT
iptables-save > /etc/sysconfig/iptables
查看/etc/sysconfig/iptables文件,注意下面两行有关icmp-host-prohibited的设置一定要注释掉!否则nat转发会失败!
#-A INPUT -j REJECT --reject-with icmp-host-prohibited
#-A FORWARD -j REJECT --reject-with icmp-host-prohibited
重启iptbales服务
重启docker引擎

16、容器启动时自动执行脚本(start.sh:开始是需执行的脚本文件,最后一个命令必须是/bin/bash,防止脚本执行完容器直接退出)
docker run -itd --name app-name --network host image-name /bin/bash -c 'sh /root/start.sh'

17、实战docker版 percona(mysql)安装
到docker官网(https://hub.docker.com/)获取镜像    

(1)官网注册
(2)登陆官网:

 docker login 注册名
(3)拉取镜像
docker pull percona:5.7.11 
(4)创建容器
docker create --name percona -v /data/mysql:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=rootpwd percona:5.7.11

/data/mysql: 是主机用来保存数据库的数据的目录;对应的是docker中/var/lib/mysql

MYSQL_ROOT_PASSWORD:创建时设置mysql跟用户密码
(5)运行命令:
docker run --name percona -p 3306:3306 -e MYSQL_ROOT_PASSWORD=rootpwd  -d percona:5.7.11

运行命令(指定配置文件、日志等)

docker run -p 3306:3306 --name percona -v $PWD/myconf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/mysql_db:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=rootpwd  -d percona:5.7.11
命令说明:
-p 30306:30306--将容器的 3307 端口映射到主机的 3306 端口。
--name percona --容器名称
-v $PWD/myconf:/etc/mysql/conf.d --将主机当前目录下的 myconf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。
-v $PWD/logs:/logs --将主机当前目录下的 logs 目录挂载到容器的 /logs。
-v $PWD/mysql_db:/var/lib/mysql --将主机当前目录下的mysql_db目录挂载到容器的 /var/lib/mysql 。
-e MYSQL_ROOT_PASSWORD=rootpwd  --初始化 root 用户的密码。
-d percona:5.7.11--后台运行
my.cnf文件可以先从运行的容器中拷贝出来,放到主机目录下,修改后重新建立容器并挂载
拷贝命令:docker cp fd9db9ecbd80:/etc/mysql/my.cnf /data/myconf

(6)登陆percona

docker -exec -it percona mysql -P30306 -u root -p

 docker安装参见:https://www.runoob.com/docker/docker-tutorial.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐享技术

每一个打赏,都是对我最大的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值