docker 常用操作

启动容器
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 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,也可以是容器名称