docker基本命令

docker基本操作命令 

docker pull <镜像名:tag>
# 例如以下代码
docker pull sameersbn/redmine:latest

docker rm <container_name or container_id>

docker logs -f <container_name or container_id>

# 查看所有的运行中的容器进程
docker ps
docker ps -a # 包括已经停止的

# 删除所有容器
docker rm $(docker ps -a -q)

# 停止、启动、杀死指定容器
docker start <容器名 or ID> # 启动容器
docker stop <容器名 or ID> # 启动容器
docker kill <容器名 or ID> # 杀死容器

# 后台运行
docker run -d <Other Parameters>
# 例如
docker run -d -p 127.0.0.1:33301:22 centos6-ssh

#端口映射
# 3种方式
docker -p ip:hostPort:containerPort # 映射指定地址的主机端口到容器端口
# 例如:docker -p 127.0.0.1:3306:3306 映射本机3306端口到容器的3306端口
docker -p ip::containerPort # 映射指定地址的任意可用端口到容器端口
# 例如:docker -p 127.0.0.1::3306 映射本机的随机可用端口到容器3306端口
docer -p hostPort:containerPort # 映射本机的指定端口到容器的指定端口
# 例如:docker -p 3306:3306 # 映射本机的3306端口到容器的3306端口


# 这里/home/data 指的是宿主机的目录地址,后者则是容器的目录地址
docker -v /home/data:/opt/data 


# 停止所有容器
docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker stop

# 删除所有容器
docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker rm

# 删除所有none镜像
docker images|grep none|awk '{print $3 }'|xargs docker rmi


# 列举镜像
docker image ls --format "{{.ID}}: {{.Repository}}"

docker image rm centos

docker image inspect --format='{{.RepoTags}} {{.Id}} {{.Parent}}' $(docker image ls -q --filter since=xxxxxx)


docker运行镜像

# 运行mysql并初始化参数
$ docker run -d -i -p 3306:3306 --name=mysql --restart=always -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7


# 默认nginx:last 
$ docker run --name webserver -p 80:80 -d nginx

# docker 进程
docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
215a92d4780a        nginx               "nginx -g 'daemon of…"   3 hours ago         Up 3 hours          0.0.0.0:80->80/tcp   webserverDemo

 

http://localhost:80/ 

进入容器修改容器内容 

docker exec -it webserver bash

root@3729b97e8226:/# echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html

root@3729b97e8226:/# exit

 

 提交新的分层镜像

除当前层外,之前的每一层都是不会发生改变的,换句话说,任何修改的结果仅仅是在当前层进行标记、添加、修改,而不会改动上一层。 

docker commit \
    --author "wachoo <wachoo@gmail.com>" \
    --message "update default index.html" \
    webserver \
    nginx:v2
# 查看新的镜像资源
docker images -a


# 查看镜像 关联的父镜像
docker image inspect --format='{{.RepoTags}} {{.Id}} {{.Parent}}' $(docker image ls -q --filter since=xxxxxx)

 

image备份

# 备份container_id
docker commit  -m "commit content" -a "author_name" 136e6e580929 xxx-backup:v1

# 把image打成tar包
docker save -o ./xxx-backup.tar xxx-backup

# 加载恢复
docker load -i ~/xxx-backup.tar

 

运行新的nginx:v2镜像 

docker run --name web2 -d -p 81:80 nginx:v2

 http://localhost:81/

查看镜像内的历史记录

docker history nginx:v2

 

aliyun镜像加速

进入阿里云控制台查找 “容器镜像服务”,进入后找到“镜像加速器”,复制地址即可

 

在安装后的docker设置中填写以上地址,如下:

 

容器互联

使用--link参数可以让容器之间安全地进行交互。

--link参数格式是--link name:alias,其中name是要链接容器的名称,alias是这个连接的别名。

比如我们先创建一个新的数据库容器:

docker run -d --name db training/postgres
复制代码

然后再创建一个web容器,并将它连接到db容器:

docker run -d -p --name web --link db:db training/webapp python app.py
复制代码

这个时候db容器就与web容器可以互相通信了。可以使用docker ps来查看容器的连接。

使用--link参数可以让Docker在两个容器之间通过一个安全的隧道互相通信,而不用通过开放端口的方式来实现,避免了把端口暴露到外部网络上。

查看公开容器的接连信息

  • 环境变量:使用env命令来查看容器的环境变量
docker run --name web --link db:db training/webapp env
复制代码
  • /etc/hosts文件:使用link参数时,Docker会添加host信息到父容器的/etc/hosts的文件。下面是父容器web的hosts文件
docker run -t -i --link db:db training/webapp /bin/bash
root@aed84ee21bd3:/opt/webapp# cat /etc/hosts
127.17.0.7 aed84ee21bde
...
172.17.0.5 db
复制代码

第一个是web容器的host信息,默认用自己的id为主机名。第二个是db容器的ip和主机名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值