Docker 入门
Docker Usage
postgresql
postgresql:
docker run -d -p 5432:5432 --name postgresql -v pgdata:/var/lib/postgresql/data -e POSTGRES_PASSWORD=pg123456 postgres
dpage/pgadmin4:
docker run -d -p 5433:80 --name pgadmin4 -e PGADMIN_DEFAULT_EMAIL=mail@weigao.cc -e PGADMIN_DEFAULT_PASSWORD=123456 dpage/pgadmin4
登录 pgadamin 的时候,账号为邮箱,密码 123456 如上所设置。
在创建 pg server 的时候,密码为 pg123456 如上配置,服务器的地址用如下方式获取:
docker exec -it postgresql bash
root@b4afa86fb3b3:/# cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.3 b4afa86fb3b3 # 容器的 IP
此时我们使用 172.17.0.3:5432 连接数据库即可。
MySql
参考文献: docker 绿皮书
使用 Docker 一步搞定 MySql 的安装:
docker run -p 3306:3306 --name mysql-dokcer -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
上述命令的字段含义是:
-p 3306:3306:将运行容器内部的 3306 端口桥接到宿主机的 3306 端口。左边的属于宿主机,右边的属于容器。-e MYSQL_ROOT_PASSWORD=123456:设置容器使用的环境变量。MYSQL_ROOT_PASSWORD=123456指定了mysql server的密码是123456. (默认用户名是root)。-d:后台运行容器。
MongoDB
docker run --name mongo-docker -d -p 27077:27017 mongo:latest
此时可以用连接工具 https://studio3t.com/ 测试并连接到 27077 端口。
Jenkins
docker run -d -p 18088:8080 --name jenkins-docker -p 50000:50000 jenkins/jenkins:lts
需要注意的是,Jenkins 会使用两个端口映射到宿主机上面,向外暴露的是 8080 服务,我们在本地只需要连接 18088 端口即可。
连接到 localhost
后,会提示配置密码,需要进入容器查看密码。容器启动以后,需要进入容器对 Jenkins 进行简单的配置:
-
进入容器
docker exec -it jenkins-docker bash -
查看密码文件内容
tail -f /var/jenkins_home/secrets/initialAdminPassword此时会得到类似于
13e19c5410b145e59dbf70916ed4a3fb这样的输出,输入到浏览器端,即可进入。此时会自动安装一些插件,等待插件安装完成,然后设置账号密码,配置完成。
Tomcat
指定 Tomcat 版本进行安装:
docker run --name tomcat-docker-8.0 -d -p 9999:8080 tomcat:8.0
安装完成之后,想要把本地的文件拷贝到容器中:
docker cp ./. tomcat-docker-8.0:/home
# 或者拷贝 war
docker cp foo.war tomcat-docker-8.0:/foo.war
Spring-boot with Docker
使用 Dokcer + Spring-boot 构建项目。
:::warning Docker in wsl
这次尝试在 WSL 上面安装了 Docker,要注意到 WSL 是用了 SysV init 的命令而不是 systemd, 所以在启动 Docker 的时候使用
service docker start,不必使用 systemctl.
:::
Tools
portainer
portainer 是一个 web 的 docker 管理工具。

docker volume create portainer_data
docker run -d -p 9000:9000 -p 8000:8000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
然后访问 http://localhost:9000, 就可以进入 portainer 的设置界面。
Config
WSL
在 WSL 上开启 docker 守护进程:
将 WSL 转化为 WSL2:
wsl.exe -l -v
wsl.exe --set-version (distro name) 2
wsl.exe --set-default-version 2
wsl --set-default <distro name> .
下面这一步可以省略,如果不是 WSL 需要手动开启:
export DOCKER_HOST=tcp://127.0.0.1:2375
切换镜像仓到国内
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
]
Installation
-
Follow the tutorial
-
Test whether the Docker is installed correctly (Ubuntu 16.04)
sudo docker container run hello-world docker --version sudo docker info sudo docker image ls (-all) -
List the versions available in your repo:
apt-cache madison docker-ce
Containers
Make sure all is set up:
docker run hello-world
Run the app, before this, a Dockerfile should be created:
sudo docker run -p 4000:80 friendlyhello
sudo docker run -d -p 4000:80 friendlyhello
# run on background
将 Docker 的 80 端口映射出去至 4000 端口,如果是在后台运行的话,可查看:
sudo docker container ls
#stop
sudo docker container stop 1fa4a...
Share images
-
Login
-
Tag the image
-
Push the image
-
Pull
sudo docker login
sudo docker tag friendlyhello weigaochen/get-started:part2
# docker tag image username/respository:tag
sudo docker image ls
sudo docker push weigaochen/get-started:part2
sudo docker run -p 4000:801 weigaochen/get-started:part2
Services
-
通过
docker-compose.yml来配置,在其中引用已经 Published 的 imageA
docker-compose.ymlfile is a YAML file that defines how Docker containers should behave in production. -
Run the new load-balanced app
sudo docker swarm init sudo docker stack deploy -c docker-compose.yml getstartedlab注意到其中的
getstartedlab是我们给 app 起的一个名字 -
查看:
sudo docker service ls注意到
NAME属性的值为getstartedlab_web.
Task
A single container running in a service is called a task.
Let us list the task:
sudo service ps getstartedlab_web
如果顺利的话,这时候可以看到 5 个 task: getstartedlab_web.1 至 getstartedlab_web.5, 原因是我们在 docker-compose.yml 文件中配置了 5 个 replices.
Swarms
KEYWORDS: swarm manager, workers, swarm clusters
修改历史11 次提交
- chore: reorganize image assets and add sharp dependencyxiaocheng··
7661b66 - refactor: reorganize documentation structure and update Navbar componentxiaocheng··
2fb8f42 - chore(project): clean up obsolete configuration and build artifactsxiaocheng··
3574bd3 - new struct for lblogsxiaocheng··
8c9b28e - move blogs to docsxiaocheng··
c8535a0 - update codechenweigao··
e4c6887 - update fix: timeline errorchenweigao··
fb4b591 - update some imageschenweigao··
e014780 - update Datechenweigao··
3c14689 - init v3chenweigao··
b770fc2 - init v2chenweigao··
505f81b