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镜像
-
删除名称为<none>的镜像,这是一个危险操作,因为images创建是分层的,其中一些就是没有名字的
$ docker rmi $(docker images | awk '/^<none>/ { print $3 }')
-
通过容器cc820b60f2aa生成镜像。镜像名称为123
$ docker commit cc820b60f2aa 123
docker save & load
$ docker save kiwenlau/hadoop:1.0 > /home/kiwenlauBackUp.tar
$ scp /home/kiwenlauBackUp.tar root@10.0.0.171:/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 <userid>
- 也可能是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 root@10.0.0.171:/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”则表示成功了