启动容器
docker run -itd -p 19922:22 -v ~/:/lzw --name ubuntu1804 ubuntu-ssh /usr/sbin/sshd -D
-i
以交互模式运行容器,通常与 -t 同时使用
-t
为容器重新分配一个伪输入终端,通常与 -i 同时使用
-d
后台运行
-p
端口映射,格式化:宿主机端口:容器端口
,如 -p 19922:22
表示将宿主机的19922
端口与容器的22
映射,以达到到外部访问容器的sshd
服务
-P
大写字母P,是指将宿主机的随机端口映射到容器的端口
-v
或者--volume
挂载本地目录,格式如这样-v /Users/lzw/:/lzw
,将本地home
目录挂载到容器的/lzw
里
-h
指定容器的hostname
--name ubuntu1804
指定容器名称 ubuntu1804
--dns 8.8.8.8
指定容器的dns
服务器,如果不指定,默认和宿主机使用同样的dns
ubuntu-ssh
是镜像名称
/usr/sbin/sshd -D
跟在镜像后面的是指令,/usr/sbin/sshd
是指初始化启动 sshd 服务,加了-D
参数是指后面运行sshd
容器访问宿主机
ping docker.for.mac.host.internal
导出导入
-
导出
用法:docker export 容器id或容器名称 > 输出的文件.tar
docker export a5851fba0eac > /Users/lzw/docker/ubuntu1804.tar
-
导入
用stdin
的方式导入
用法:cat 导出的文件.tar | docker - 镜像名称:镜像标签(版本)
cat /Users/lzw/docker/ubuntu1804.tar | docker - myubuntu:18.04
删除镜像
删除所有不使用的镜像(惧用)
docker image prune -f -a
//或
docker image prune --force --all
删除容器
删除容器
docker rm 容器id 或 容器名称
删除所有已停止的容器
docker container prune -f
启动容器
centos7 运行 sshd 时错误
[root@centos7 /]# /usr/sbin/sshd -D
Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Could not load host key: /etc/ssh/ssh_host_ed25519_key
sshd: no hostkeys available -- exiting.
解决:
生成所需的key
[root@centos7 /]# ssh-keygen -A
ssh-keygen: generating new host keys: RSA1 RSA DSA ECDSA ED25519
这时/etc/ssh
会生成若干key和key.pub
-rw------- 1 root root 672 Nov 6 01:10 ssh_host_dsa_key
-rw-r--r-- 1 root root 602 Nov 6 01:10 ssh_host_dsa_key.pub
-rw------- 1 root root 227 Nov 6 01:10 ssh_host_ecdsa_key
-rw-r--r-- 1 root root 174 Nov 6 01:10 ssh_host_ecdsa_key.pub
-rw------- 1 root root 399 Nov 6 01:10 ssh_host_ed25519_key
-rw-r--r-- 1 root root 94 Nov 6 01:10 ssh_host_ed25519_key.pub
-rw------- 1 root root 977 Nov 6 01:10 ssh_host_key
-rw-r--r-- 1 root root 642 Nov 6 01:10 ssh_host_key.pub
-rw------- 1 root root 1675 Nov 6 01:10 ssh_host_rsa_key
-rw-r--r-- 1 root root 394 Nov 6 01:10 ssh_host_rsa_key.pub
不用密码登录linux的root用户
docker exec -u 0 -it containerName-or-containerId bash
前提是容器要正在运行中
查看容器ip等信息
查看ip地址
sudo docker inspect 4625dabc7812 | grep IPAddress
4625dabc7812 是容器id,也可以是容器名称