Docker 常用操作笔记

2018-09-28 303次浏览 发表评论

安装docker要求Linux系统的内核版本高于 3.10:

[root@sk-server ~]# uname -r
3.10.0-693.21.1.el7.x86_64

安装启动

# 安装前更新以下系统
# CentOS: 
yum update -y

# Ubuntu:
apt-get update && apt-get upgrade

# Ubuntu 和 CentOS 都可以使用的安装方法:
wget -qO- https://get.docker.com/ | sh

# 配置一些系统参数:
vim /etc/sysctl.conf

添加:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 1
net.ipv4.ip_forward=1

sysctl -p

启动和关闭服务:

systemctl start docker     # 启动
systemctl enable docker    # 开机启动

非root用户需要加入docker用户组,以后操作不需要加sudo

sudo groupadd docker
sudo gpasswd -aG ${USER} docker
systemctl docker restart
# 退出系统重新登录生效

常用操作命令

查看docker信息:

docker info

可以通过命令docker command --help更深入的了解指定的 Docker 命令使用方法,例如:

docker ps --help

搜素镜像:

docker search centos
docker search ubuntu
... 

拉取镜像:

docker pull ubuntu

导入本地镜像:

docker load -i /root/centos-laster-docker-image.tar

查看镜像:

docker images

删除镜像:

docker rmi ubuntu:latest

运行docker容器:

  • -i   交互式
  • -t   为容器分配一个伪终端
docker run -it ubuntu:latest /bin/bash

# 退出 docker 容器
exit

后台运行容器:

  • -d后台运行容器,返回容器ID
  • -c后面跟待完成的命令
docker run -d ubuntu:latest bash -c "ls"

读取后台运行容器的日志:

docker logs 容器name/id

查看运行的容器:

docker ps
docker ps -l
docker ps -a    # 查看所有 

进入后台已经运行的容器:

docker attach <容器实例name/id>
docker exec -it <容器实例name/id> env LANG=en_US.utf8 /bin/bash  # 推荐

# 退出容器并保持运行状态,按:Ctrl + P + Q

结束容器:

docker kill 容器ID/名

启动,停止:

docker stop 容器ID/名
docker start 容器ID

批量停止所有容器实例:

docker stop $(docker ps -a -q)

删除容器:

docker rm 容器ID/名

重命名容器:

docker rename mystifying_chandrasekhar sk-test

Docker挂载本地目录及实现文件共享:

启动一个centos容器,宿主机的/test目录挂载到容器的/soft目录

docker run -it -v /test:/soft centos:latest env LANG=en_US.utf8 bash

docker端口映射:

docker run -d -p 80:80 centos:nginx /bin/bash -c "/etc/init.d/nginx start"

-p物理机80端口 : 容器的80端口,把容器的80端口映射到物理机的80端口上。

Docker占用的磁盘空间清理:

docker system df        # 查看Docker的磁盘使用情况
docker system prune # 清理磁盘,删除关闭的容器、无用的数据卷和网络
docker system prune -a # 清理得更加彻底,可以将没有容器使用Docker镜像都删掉。注意,这两个命令会把你暂时关闭的容器,以及暂时没有用到的Docker镜像都删掉。

制作镜像

commit方式:

docker commit -m="has update" -a="sk" e218edb10161 data/ubuntu:v2

各个参数说明:

  • -m提交的描述信息
  • -a指定镜像作者
  • e218edb10161容器ID
  • data/ubuntu:v2指定要创建的目标镜像名

docker build 构建镜像:

cat dockerfile
FROM    docker.io/ubuntu:latest                 # 基于哪个镜像
MAINTAINER      sk "sk@1987.name"               # 镜像作者

RUN     yum install nginx                       # 执行命令
RUN     ...
ADD     start.sh /usr/local/bin/start.sh        # 宿主机文件添加到容器
EXPOSE  80                                      # 输出端口
EXPOSE  443
CMD     nginx                                   # 容器启动之后运行的程序
docker build -t 1987.name/ubuntu:nginx .

参数说明:

  1. -t指定要创建的目标镜像名。
  2. .dockerfile文件所在目录,可以指定dockerfile的绝对路径。

给镜像添加一个新的标签:

docker tag cd6d8154f1e1 ubuntu:app

导出镜像到本地:

docker save -o ubuntu-app-server.tar ubuntu:app

# 导出镜像名:ubuntu-app-server.tar
# 本地镜像名:ubuntu
# 镜像标签:app

评论

随便说点,聊聊天~