Docker

Docker入门教程

Docker组成

1.docker服务端,docker服务端是一个服务进程,管理着所有的容器

2.docker客户端,docker客户端则扮演着docker服务端的远程控制器,可以用来控制docker的服务端进程。

大部分情况下,docker服务端和客户端运行在一台机器上。

Boot2Docker的缺省用户名为docker,密码为tcuser。mac上

Docker命令

docker容器

进入容器并运行/bin/zsh

docker exec -t -i cbe2e83dc98a /bin/zsh

docker全局命令

$ docker version

// 查看正在运行的容器
$ docker ps

$ docker ps -a 查看所有的容器,包括已经停止的

$ docker ps -a -q 查看已经停止的容器

$ docker inspect 容器前缀或者镜像前缀

//搜索镜像
$ docker search 镜像名称

$ docker stop 容器id

// 查看docker日志
$ sudo cat /var/log/messages | grep docker

docker run

  • -p

    -p 2222:22 端口映射,访问运行docker的主机的2222端口,等同于访问容器的22端口、也就是ssh端口

    docker run -p 2222:22 zyh/login /usr/sbin/sshd -D

    注意:docker直接使用iptables来实现端口映射,因此,需要主机使用iptables,iptables -t nat -L

  • -v

    -v /usr/owl:/usr/owl

    主机目录:docker容器挂载目录, 访问容器挂载目录,即为访问主机目录

  • -i

    打开容器的标准的输入STDIN

Docker镜像

  • 删除名称为的镜像,这是一个危险操作,因为images创建是分层的,其中一些就是没有名字的

      $ docker rmi $(docker images | awk '/^/ { print $3 }')
    
  • 通过容器cc820b60f2aa生成镜像。镜像名称为123

      $ docker commit cc820b60f2aa 123
    

docker save & load

$ docker save kiwenlau/hadoop:1.0 > /home/kiwenlauBackUp.tar
$ scp /home/kiwenlauBackUp.tar [email protected]:/home/

$  docker load < /home/kiwenlauBackUp.tar

常见问题

Cannot connect to the Docker daemon. Is 'docker -d' running on this host?

  • 使用 ps命令查看进程 ps -ef | grep docker

  • sudo service docker start 重启docker服务试试

  • 如果进程的确在运行,那可能是当前用户 is not allowd to access docker

To do this add your self to the docker group.

$ sudo usermod -aG docker 
  • 也可能是docker守护进程属于root用户,当前非root用户可以加上sudo来运行docker 命令

docker attach没有反应

$ docker run -p 22 /usr/sbin/sshd -D

这样的一个容器的驻守程序就是sshd。所以docker attact截取的输入输出也就是该进程(/user/sbin/sshd -D)的。而这样一个进程,跟交互型的bash程序是不一样的。这个进程是不接受输入的。所以你的输入不会有什么效果。如果想交互,可以尝试 docker run -d -p 22 /bin/bash。

docker save & load

$ scp /home/kiwenlauBackUp.tar [email protected]:/home/

WARNING: IPv4 forwarding is disabled. Networking will not work.

解决办法:

$ vi /etc/sysctl.conf

或者

$ vi /usr/lib/sysctl.d/00-system.conf

添加如下代码:

$ net.ipv4.ip_forward=1

重启network服务

$ systemctl restart network

查看是否修改成功

$ sysctl net.ipv4.ip_forward

如果返回为“net.ipv4.ip_forward = 1”则表示成功了

你可能感兴趣的:(Docker)