1.拉取镜像
docker pull ubuntu
2.创建容器
[root@localhost ~]# docker run --privileged=true -it -v /dbdata:/dbdata -p 8022:22 -p 9001:9001 -p 9002:9002 -p 9003:9003 -p 9004:9004 -p 9005:9005 -p 9006:9006 -p 9007:9007 --name ubuntu docker.io/ubuntu:latest /sbin/init
/usr/bin/docker-current: Error response from daemon: oci runtime error: container_linux.go:235: starting container process caused "exec: \"/sbin/init\": stat /sbin/init: no such file or directory".
但是该命令会报错,因为容器中缺少ssh服务,所以先运行容器,再在容器里面安装服务,再将容器打包成镜像,然后再创建容器。
创建容器
docker run --privileged=true -it -v /dbdata:/dbdata -p 8022:22 -p 9001:9001 -p 9002:9002 -p 9003:9003 -p 9004:9004 -p 9005:9005 -p 9006:9006 -p 9007:9007 --name ubuntu docker.io/ubuntu:latest
进入容器安装ssh服务
apt-get update
apt-get install yum
apt-get install openssh-server
systemctl restart sshd
打包成镜像
docker export c0e4bc038317 > mybuntu.jar
根据镜像创建容器,要删除原来的镜像
docker rm -f c0e4bc038317
docker run --privileged=true -it -v /dbdata:/dbdata -p 8022:22 -p 9001:9001 -p 9002:9002 -p 9003:9003 -p 9004:9004 -p 9005:9005 -p 9006:9006 -p 9007:9007 --name ubuntu mydocker/ubuntu:latest /sbin/init
查看配接口开放信息
[root@localhost ~]# netstat -aptn
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1099/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1529/master
tcp 0 52 192.168.50.73:22 192.168.50.130:62866 ESTABLISHED 73510/sshd: root@pt
tcp6 0 0 :::5000 :::* LISTEN 47483/docker-proxy-
tcp6 0 0 :::9001 :::* LISTEN 73880/docker-proxy-
tcp6 0 0 :::9002 :::* LISTEN 73866/docker-proxy-
tcp6 0 0 :::9003 :::* LISTEN 73854/docker-proxy-
tcp6 0 0 :::9004 :::* LISTEN 73840/docker-proxy-
tcp6 0 0 :::9005 :::* LISTEN 73825/docker-proxy-
tcp6 0 0 :::9006 :::* LISTEN 73810/docker-proxy-
tcp6 0 0 :::9007 :::* LISTEN 73797/docker-proxy-
tcp6 0 0 :::8022 :::* LISTEN 73894/docker-proxy-
tcp6 0 0 :::22 :::* LISTEN 1099/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1529/master
有8022开放端口
3.进入容器配置
docker exec -it 8c8fd1091b01 /bin/bash
修改容器密码
passwd
修改完之后,进行连接测试,发现报错,信息如下:
Key exchange failure
配置文件
vi /etc/ssh/sshd_config
#如果没有vi命令则要先配置apt-get install vim
编辑文件信息,添加如下信息:
#防止出Key exchange failure的错误
RSAAuthentication yes
#防止出Key exchange failure的错误
PasswordAuthentication yes
#防止出Key exchange failure的错误
KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group1-sha1
#确保ssh远程可以访问
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PermitRootLogin yes
重启ssh墙服务。
service sshd restart
连接测试成功。
打包成镜像之后,再创建容器启动,发现无法远程登录,重新输入如下命令实现远程登录,用之前的密码可以登录。
service sshd restart
4.将镜像上传到私有镜像库
[root@localhost ~]# docker tag mydocker/ubuntu:latest 1111111/mylocal:ubuntu20.04
[root@localhost ~]# docker push 1111111/mylocal:ubuntu20.04
5.安装PM2
apt-get install npm
npm --version
npm install -g pm2
pm2 --help
6.redis容器
docker run --privileged=true -v /dbdata/redis:/dbdata -itd --name redis -p 6379:6379 redis redis-server --requirepass “mima”
docker run -dit --privileged -p 9022:22 -p 9001:9001 -p 9002:9002 -p 9003:9003 -p 9004:9004 -p 9005:9005 -p 9006:9006 -p 9007:9007 -p 9008:9008 -p 9009:9009 -v /dbdata/ubuntu:/data -v /media/disk/docker/ubuntu:/media/disk/docker/ubuntu --name ubuntu2 ubuntu:16 /bin/bash